@jubbio/core 1.1.10 → 1.1.11

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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Jubbio Team
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Jubbio Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/Client.d.ts CHANGED
@@ -54,11 +54,21 @@ export declare class Client extends EventEmitter {
54
54
  /** Voice state update handlers (for voice adapters) */
55
55
  private voiceStateHandlers;
56
56
  private voiceServerHandlers;
57
+ /** Whether the client is currently in the login flow */
58
+ private _loginState;
59
+ /** Reconnect attempt counter */
60
+ private _reconnectAttempts;
61
+ /** Maximum reconnect attempts before giving up */
62
+ private readonly _maxReconnectAttempts;
57
63
  constructor(options: ClientOptions);
58
64
  /**
59
65
  * Calculate intents value
60
66
  */
61
67
  private getIntentsValue;
68
+ /**
69
+ * Gateway close code descriptions
70
+ */
71
+ private static readonly CLOSE_CODES;
62
72
  /**
63
73
  * Login to the gateway
64
74
  */
package/dist/Client.js CHANGED
@@ -49,6 +49,12 @@ class Client extends events_1.EventEmitter {
49
49
  /** Voice state update handlers (for voice adapters) */
50
50
  voiceStateHandlers = new Map();
51
51
  voiceServerHandlers = new Map();
52
+ /** Whether the client is currently in the login flow */
53
+ _loginState = 'idle';
54
+ /** Reconnect attempt counter */
55
+ _reconnectAttempts = 0;
56
+ /** Maximum reconnect attempts before giving up */
57
+ _maxReconnectAttempts = 5;
52
58
  constructor(options) {
53
59
  super();
54
60
  this.options = options;
@@ -68,26 +74,71 @@ class Client extends events_1.EventEmitter {
68
74
  }
69
75
  return this.options.intents.reduce((acc, intent) => acc | intent, 0);
70
76
  }
77
+ /**
78
+ * Gateway close code descriptions
79
+ */
80
+ static CLOSE_CODES = {
81
+ 4000: { message: 'Bilinmeyen hata (Unknown error)', reconnectable: true },
82
+ 4001: { message: 'Bilinmeyen opcode gönderildi (Unknown opcode)', reconnectable: true },
83
+ 4002: { message: 'Geçersiz payload gönderildi (Decode error)', reconnectable: true },
84
+ 4003: { message: 'Henüz kimlik doğrulaması yapılmadı (Not authenticated)', reconnectable: true },
85
+ 4004: { message: 'Geçersiz bot token\'ı (Authentication failed)', reconnectable: false },
86
+ 4005: { message: 'Zaten kimlik doğrulaması yapılmış (Already authenticated)', reconnectable: true },
87
+ 4007: { message: 'Geçersiz sequence numarası (Invalid seq)', reconnectable: true },
88
+ 4008: { message: 'Rate limit aşıldı (Rate limited)', reconnectable: true },
89
+ 4009: { message: 'Oturum zaman aşımına uğradı (Session timed out)', reconnectable: true },
90
+ 4010: { message: 'Geçersiz shard yapılandırması (Invalid shard)', reconnectable: false },
91
+ 4011: { message: 'Sharding gerekli (Sharding required)', reconnectable: false },
92
+ 4014: { message: 'İzin verilmeyen intent\'ler istendi (Disallowed intents)', reconnectable: false },
93
+ };
71
94
  /**
72
95
  * Login to the gateway
73
96
  */
74
97
  async login(token) {
98
+ if (!token || typeof token !== 'string') {
99
+ throw new Error('Geçerli bir bot token\'ı sağlanmalıdır. Örnek: client.login(process.env.BOT_TOKEN)');
100
+ }
75
101
  this.token = token.replace(/^Bot\s+/i, '');
76
102
  this.rest.setToken(this.token);
103
+ this._loginState = 'connecting';
104
+ this._reconnectAttempts = 0;
77
105
  return new Promise((resolve, reject) => {
78
- this.connect();
79
- // Wait for ready event
106
+ const cleanup = () => {
107
+ clearTimeout(timeout);
108
+ this.removeListener('ready', onReady);
109
+ this.removeListener('error', onError);
110
+ this.removeListener('gatewayClose', onGatewayClose);
111
+ };
80
112
  const timeout = setTimeout(() => {
81
- reject(new Error('Login timeout'));
113
+ cleanup();
114
+ this._loginState = 'idle';
115
+ reject(new Error('Gateway\'e bağlanılamadı: 30 saniye içinde READY event\'i alınamadı. ' +
116
+ 'Olası sebepler: gateway sunucusu erişilemez, token geçersiz veya ağ sorunu.'));
82
117
  }, 30000);
83
- this.once('ready', () => {
84
- clearTimeout(timeout);
118
+ const onReady = () => {
119
+ cleanup();
120
+ this._loginState = 'ready';
121
+ this._reconnectAttempts = 0;
85
122
  resolve(this.token);
86
- });
87
- this.once('error', (error) => {
88
- clearTimeout(timeout);
123
+ };
124
+ const onError = (error) => {
125
+ cleanup();
126
+ this._loginState = 'idle';
89
127
  reject(error);
90
- });
128
+ };
129
+ const onGatewayClose = (code, reason) => {
130
+ const info = Client.CLOSE_CODES[code];
131
+ if (info && !info.reconnectable) {
132
+ cleanup();
133
+ this._loginState = 'idle';
134
+ reject(new Error(`Gateway bağlantısı reddedildi [${code}]: ${info.message}${reason ? ' - ' + reason : ''}`));
135
+ }
136
+ // Reconnectable codes: login promise stays alive, connect() will retry
137
+ };
138
+ this.once('ready', onReady);
139
+ this.once('error', onError);
140
+ this.on('gatewayClose', onGatewayClose);
141
+ this.connect();
91
142
  });
92
143
  }
93
144
  /**
@@ -96,20 +147,46 @@ class Client extends events_1.EventEmitter {
96
147
  connect() {
97
148
  this.ws = new ws_1.default(this.gatewayUrl);
98
149
  this.ws.on('open', () => {
99
- this.emit('debug', 'WebSocket connection opened');
150
+ this.emit('debug', 'WebSocket bağlantısı açıldı');
151
+ this._reconnectAttempts = 0;
100
152
  });
101
153
  this.ws.on('message', (data) => {
102
154
  this.handleMessage(data.toString());
103
155
  });
104
156
  this.ws.on('close', (code, reason) => {
105
- this.emit('debug', `WebSocket closed: ${code} - ${reason}`);
157
+ const reasonStr = reason?.toString() || '';
158
+ const info = Client.CLOSE_CODES[code];
159
+ if (info) {
160
+ this.emit('debug', `Gateway bağlantısı kapandı [${code}]: ${info.message}${reasonStr ? ' - ' + reasonStr : ''}`);
161
+ }
162
+ else {
163
+ this.emit('debug', `WebSocket kapandı: ${code} - ${reasonStr}`);
164
+ }
106
165
  this.cleanup();
107
- // Reconnect on certain close codes
108
- if (code !== 1000 && code !== 4004) {
109
- setTimeout(() => this.connect(), 5000);
166
+ // Emit gatewayClose so login() can handle non-reconnectable codes
167
+ this.emit('gatewayClose', code, reasonStr);
168
+ // Non-reconnectable codes: don't retry
169
+ if (info && !info.reconnectable) {
170
+ this.emit('debug', `Kod ${code} yeniden bağlanılamaz, bağlantı sonlandırılıyor.`);
171
+ return;
172
+ }
173
+ // Normal close: don't retry
174
+ if (code === 1000) {
175
+ return;
176
+ }
177
+ // Reconnectable: retry with backoff
178
+ this._reconnectAttempts++;
179
+ if (this._reconnectAttempts > this._maxReconnectAttempts) {
180
+ this.emit('debug', `Maksimum yeniden bağlanma denemesi aşıldı (${this._maxReconnectAttempts})`);
181
+ this.emit('error', new Error(`Gateway bağlantısı ${this._maxReconnectAttempts} denemeden sonra kurulamadı. Son kapanma kodu: ${code}`));
182
+ return;
110
183
  }
184
+ const delay = Math.min(1000 * Math.pow(2, this._reconnectAttempts - 1), 30000);
185
+ this.emit('debug', `Yeniden bağlanılıyor (deneme ${this._reconnectAttempts}/${this._maxReconnectAttempts}), ${delay}ms sonra...`);
186
+ setTimeout(() => this.connect(), delay);
111
187
  });
112
188
  this.ws.on('error', (error) => {
189
+ this.emit('debug', `WebSocket hatası: ${error.message}`);
113
190
  this.emit('error', error);
114
191
  });
115
192
  }
@@ -147,7 +224,16 @@ class Client extends events_1.EventEmitter {
147
224
  this.emit('debug', 'Heartbeat acknowledged');
148
225
  break;
149
226
  case enums_1.GatewayOpcodes.InvalidSession:
150
- this.emit('debug', 'Invalid session, re-identifying...');
227
+ this.emit('debug', 'Geçersiz oturum, yeniden kimlik doğrulanıyor...');
228
+ // InvalidSession may carry error data from sendError()
229
+ if (payload.d && typeof payload.d === 'object' && payload.d.code && payload.d.message) {
230
+ this.emit('debug', `Sunucu hatası [${payload.d.code}]: ${payload.d.message}`);
231
+ const info = Client.CLOSE_CODES[payload.d.code];
232
+ if (info && !info.reconnectable) {
233
+ this.emit('error', new Error(`Gateway hatası [${payload.d.code}]: ${info.message}`));
234
+ return;
235
+ }
236
+ }
151
237
  setTimeout(() => this.identify(), 5000);
152
238
  break;
153
239
  case enums_1.GatewayOpcodes.Reconnect:
@@ -484,6 +570,8 @@ class Client extends events_1.EventEmitter {
484
570
  * Destroy the client
485
571
  */
486
572
  destroy() {
573
+ this._loginState = 'idle';
574
+ this._reconnectAttempts = this._maxReconnectAttempts + 1; // Prevent reconnect
487
575
  this.cleanup();
488
576
  this.ws?.close(1000);
489
577
  this.ws = null;
@@ -491,4 +579,4 @@ class Client extends events_1.EventEmitter {
491
579
  }
492
580
  }
493
581
  exports.Client = Client;
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBc0M7QUFDdEMsNENBQTJCO0FBWTNCLG1DQUE0RDtBQXFsQm5ELGtHQXJsQmdCLHlCQUFpQixPQXFsQmhCO0FBcGxCMUIsd0RBQXFEO0FBQ3JELDRDQUF5QztBQUN6Qyw4Q0FBMkM7QUFDM0Msa0RBQStDO0FBQy9DLDBEQUEwRTtBQUUxRSxzQ0FBbUM7QUFjbkM7O0dBRUc7QUFDSCxNQUFhLE1BQU8sU0FBUSxxQkFBWTtJQUN0QyxxQkFBcUI7SUFDTCxPQUFPLENBQWdCO0lBRXZDLHNCQUFzQjtJQUNOLElBQUksQ0FBTztJQUUzQixtQkFBbUI7SUFDWixJQUFJLEdBQWdCLElBQUksQ0FBQztJQUVoQyxxQkFBcUI7SUFDZCxhQUFhLEdBQWtCLElBQUksQ0FBQztJQUUzQyxvQkFBb0I7SUFDYixNQUFNLEdBQThCLElBQUksdUJBQVUsRUFBRSxDQUFDO0lBRTVELHNCQUFzQjtJQUNmLFFBQVEsR0FBb0MsSUFBSSx1QkFBVSxFQUFFLENBQUM7SUFFcEUsbUJBQW1CO0lBQ1osS0FBSyxHQUE2QixJQUFJLHVCQUFVLEVBQUUsQ0FBQztJQUUxRCwrQkFBK0I7SUFDeEIsS0FBSyxDQUVWO0lBRUYsMkJBQTJCO0lBQ25CLEVBQUUsR0FBcUIsSUFBSSxDQUFDO0lBRXBDLGdCQUFnQjtJQUNSLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFM0IsaUJBQWlCO0lBQ1QsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFeEMsc0JBQXNCO0lBQ2QsUUFBUSxHQUFrQixJQUFJLENBQUM7SUFFdkMseUJBQXlCO0lBQ2pCLGlCQUFpQixHQUEwQixJQUFJLENBQUM7SUFFeEQsa0JBQWtCO0lBQ1YsVUFBVSxDQUFTO0lBRTNCLHVEQUF1RDtJQUMvQyxrQkFBa0IsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRSxtQkFBbUIs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SyxPQUFPO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBMWpCRCx3QkEwakJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcclxuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XHJcbmltcG9ydCB7IFxyXG4gIENsaWVudE9wdGlvbnMsIFxyXG4gIEdhdGV3YXlQYXlsb2FkLCBcclxuICBSZWFkeUV2ZW50RGF0YSxcclxuICBBUElHdWlsZCxcclxuICBBUElJbnRlcmFjdGlvbixcclxuICBBUElNZXNzYWdlLFxyXG4gIEFQSVZvaWNlU2VydmVyVXBkYXRlLFxyXG4gIEFQSUNoYW5uZWwsXHJcbiAgQVBJVXNlclxyXG59IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBHYXRld2F5T3Bjb2RlcywgR2F0ZXdheUludGVudEJpdHMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vc3RydWN0dXJlcy9Db2xsZWN0aW9uJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vc3RydWN0dXJlcy9Vc2VyJztcclxuaW1wb3J0IHsgR3VpbGQgfSBmcm9tICcuL3N0cnVjdHVyZXMvR3VpbGQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi9zdHJ1Y3R1cmVzL01lc3NhZ2UnO1xyXG5pbXBvcnQgeyBjcmVhdGVJbnRlcmFjdGlvbiwgSW50ZXJhY3Rpb24gfSBmcm9tICcuL3N0cnVjdHVyZXMvSW50ZXJhY3Rpb24nO1xyXG5pbXBvcnQgeyBCYXNlQ2hhbm5lbCwgY3JlYXRlQ2hhbm5lbCB9IGZyb20gJy4vc3RydWN0dXJlcy9DaGFubmVsJztcclxuaW1wb3J0IHsgUkVTVCB9IGZyb20gJy4vcmVzdC9SRVNUJztcclxuXHJcbi8qKlxyXG4gKiBWb2ljZSBhZGFwdGVyIGNyZWF0b3IgdHlwZSBmb3IgQGp1YmJpby92b2ljZSBjb21wYXRpYmlsaXR5XHJcbiAqL1xyXG50eXBlIFZvaWNlQWRhcHRlckNyZWF0b3IgPSAobWV0aG9kczoge1xyXG4gIG9uVm9pY2VTZXJ2ZXJVcGRhdGUoZGF0YTogYW55KTogdm9pZDtcclxuICBvblZvaWNlU3RhdGVVcGRhdGUoZGF0YTogYW55KTogdm9pZDtcclxuICBkZXN0cm95KCk6IHZvaWQ7XHJcbn0pID0+IHtcclxuICBzZW5kUGF5bG9hZChwYXlsb2FkOiBhbnkpOiBib29sZWFuO1xyXG4gIGRlc3Ryb3koKTogdm9pZDtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNYWluIGNsaWVudCBjbGFzc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENsaWVudCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgLyoqIENsaWVudCBvcHRpb25zICovXHJcbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IENsaWVudE9wdGlvbnM7XHJcbiAgXHJcbiAgLyoqIFJFU1QgQVBJIGNsaWVudCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSByZXN0OiBSRVNUO1xyXG4gIFxyXG4gIC8qKiBUaGUgYm90IHVzZXIgKi9cclxuICBwdWJsaWMgdXNlcjogVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIC8qKiBBcHBsaWNhdGlvbiBJRCAqL1xyXG4gIHB1YmxpYyBhcHBsaWNhdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKiogQ2FjaGVkIGd1aWxkcyAqL1xyXG4gIHB1YmxpYyBndWlsZHM6IENvbGxlY3Rpb248c3RyaW5nLCBHdWlsZD4gPSBuZXcgQ29sbGVjdGlvbigpO1xyXG4gIFxyXG4gIC8qKiBDYWNoZWQgY2hhbm5lbHMgKi9cclxuICBwdWJsaWMgY2hhbm5lbHM6IENvbGxlY3Rpb248c3RyaW5nLCBCYXNlQ2hhbm5lbD4gPSBuZXcgQ29sbGVjdGlvbigpO1xyXG4gIFxyXG4gIC8qKiBDYWNoZWQgdXNlcnMgKi9cclxuICBwdWJsaWMgdXNlcnM6IENvbGxlY3Rpb248c3RyaW5nLCBVc2VyPiA9IG5ldyBDb2xsZWN0aW9uKCk7XHJcbiAgXHJcbiAgLyoqIFZvaWNlIGFkYXB0ZXIgbWFuYWdlbWVudCAqL1xyXG4gIHB1YmxpYyB2b2ljZToge1xyXG4gICAgYWRhcHRlcnM6IE1hcDxzdHJpbmcsIFZvaWNlQWRhcHRlckNyZWF0b3I+O1xyXG4gIH07XHJcbiAgXHJcbiAgLyoqIFdlYlNvY2tldCBjb25uZWN0aW9uICovXHJcbiAgcHJpdmF0ZSB3czogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqIEJvdCB0b2tlbiAqL1xyXG4gIHByaXZhdGUgdG9rZW46IHN0cmluZyA9ICcnO1xyXG4gIFxyXG4gIC8qKiBTZXNzaW9uIElEICovXHJcbiAgcHJpdmF0ZSBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIC8qKiBTZXF1ZW5jZSBudW1iZXIgKi9cclxuICBwcml2YXRlIHNlcXVlbmNlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKiogSGVhcnRiZWF0IGludGVydmFsICovXHJcbiAgcHJpdmF0ZSBoZWFydGJlYXRJbnRlcnZhbDogTm9kZUpTLlRpbWVvdXQgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKiogR2F0ZXdheSBVUkwgKi9cclxuICBwcml2YXRlIGdhdGV3YXlVcmw6IHN0cmluZztcclxuICBcclxuICAvKiogVm9pY2Ugc3RhdGUgdXBkYXRlIGhhbmRsZXJzIChmb3Igdm9pY2UgYWRhcHRlcnMpICovXHJcbiAgcHJpdmF0ZSB2b2ljZVN0YXRlSGFuZGxlcnM6IE1hcDxzdHJpbmcsIChkYXRhOiBhbnkpID0+IHZvaWQ+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgdm9pY2VTZXJ2ZXJIYW5kbGVyczogTWFwPHN0cmluZywgKGRhdGE6IGFueSkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENsaWVudE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5nYXRld2F5VXJsID0gb3B0aW9ucy5nYXRld2F5VXJsIHx8ICd3c3M6Ly9yZWFsdGltZS5qdWJiaW8uY29tL3dzL2JvdCc7XHJcbiAgICB0aGlzLnJlc3QgPSBuZXcgUkVTVChvcHRpb25zLmFwaVVybCk7XHJcbiAgICBcclxuICAgIC8vIEluaXRpYWxpemUgdm9pY2UgYWRhcHRlciBzeXN0ZW1cclxuICAgIHRoaXMudm9pY2UgPSB7XHJcbiAgICAgIGFkYXB0ZXJzOiBuZXcgTWFwKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGUgaW50ZW50cyB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0SW50ZW50c1ZhbHVlKCk6IG51bWJlciB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5pbnRlbnRzID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmludGVudHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmludGVudHMucmVkdWNlKChhY2MsIGludGVudCkgPT4gYWNjIHwgaW50ZW50LCAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ2luIHRvIHRoZSBnYXRld2F5XHJcbiAgICovXHJcbiAgYXN5bmMgbG9naW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aGlzLnRva2VuID0gdG9rZW4ucmVwbGFjZSgvXkJvdFxccysvaSwgJycpO1xyXG4gICAgdGhpcy5yZXN0LnNldFRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbm5lY3QoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFdhaXQgZm9yIHJlYWR5IGV2ZW50XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICByZWplY3QobmV3IEVycm9yKCdMb2dpbiB0aW1lb3V0JykpO1xyXG4gICAgICB9LCAzMDAwMCk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLm9uY2UoJ3JlYWR5JywgKCkgPT4ge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgICByZXNvbHZlKHRoaXMudG9rZW4pO1xyXG4gICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMub25jZSgnZXJyb3InLCAoZXJyb3IpID0+IHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbm5lY3QgdG8gdGhlIGdhdGV3YXlcclxuICAgKi9cclxuICBwcml2YXRlIGNvbm5lY3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh0aGlzLmdhdGV3YXlVcmwpO1xyXG4gICAgXHJcbiAgICB0aGlzLndzLm9uKCdvcGVuJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgJ1dlYlNvY2tldCBjb25uZWN0aW9uIG9wZW5lZCcpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHRoaXMud3Mub24oJ21lc3NhZ2UnLCAoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZU1lc3NhZ2UoZGF0YS50b1N0cmluZygpKTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLndzLm9uKCdjbG9zZScsIChjb2RlLCByZWFzb24pID0+IHtcclxuICAgICAgdGhpcy5lbWl0KCdkZWJ1ZycsIGBXZWJTb2NrZXQgY2xvc2VkOiAke2NvZGV9IC0gJHtyZWFzb259YCk7XHJcbiAgICAgIHRoaXMuY2xlYW51cCgpO1xyXG4gICAgICBcclxuICAgICAgLy8gUmVjb25uZWN0IG9uIGNlcnRhaW4gY2xvc2UgY29kZXNcclxuICAgICAgaWYgKGNvZGUgIT09IDEwMDAgJiYgY29kZSAhPT0gNDAwNCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25uZWN0KCksIDUwMDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgdGhpcy53cy5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGluY29taW5nIGdhdGV3YXkgbWVzc2FnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBtZXNzYWdlcyBpbiBvbmUgZnJhbWVcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gZGF0YS5zcGxpdCgnXFxuJykuZmlsdGVyKG0gPT4gbS50cmltKCkpO1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IEdhdGV3YXlQYXlsb2FkID0gSlNPTi5wYXJzZShtc2cpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUGF5bG9hZChwYXlsb2FkKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCBgRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2U6ICR7bXNnfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZ2F0ZXdheSBwYXlsb2FkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXlsb2FkKHBheWxvYWQ6IEdhdGV3YXlQYXlsb2FkKTogdm9pZCB7XHJcbiAgICBpZiAocGF5bG9hZC5zKSB7XHJcbiAgICAgIHRoaXMuc2VxdWVuY2UgPSBwYXlsb2FkLnM7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChwYXlsb2FkLm9wKSB7XHJcbiAgICAgIGNhc2UgR2F0ZXdheU9wY29kZXMuSGVsbG86XHJcbiAgICAgICAgdGhpcy5oYW5kbGVIZWxsbyhwYXlsb2FkLmQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkRpc3BhdGNoOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlRGlzcGF0Y2gocGF5bG9hZC50ISwgcGF5bG9hZC5kKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXRBY2s6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdkZWJ1ZycsICdIZWFydGJlYXQgYWNrbm93bGVkZ2VkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgR2F0ZXdheU9wY29kZXMuSW52YWxpZFNlc3Npb246XHJcbiAgICAgICAgdGhpcy5lbWl0KCdkZWJ1ZycsICdJbnZhbGlkIHNlc3Npb24sIHJlLWlkZW50aWZ5aW5nLi4uJyk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlkZW50aWZ5KCksIDUwMDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLlJlY29ubmVjdDpcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgJ1JlY29ubmVjdCByZXF1ZXN0ZWQnKTtcclxuICAgICAgICB0aGlzLndzPy5jbG9zZSgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25uZWN0KCksIDEwMDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIEhlbGxvIHBheWxvYWRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUhlbGxvKGRhdGE6IHsgaGVhcnRiZWF0X2ludGVydmFsOiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0KCdkZWJ1ZycsIGBSZWNlaXZlZCBIZWxsbywgaGVhcnRiZWF0IGludGVydmFsOiAke2RhdGEuaGVhcnRiZWF0X2ludGVydmFsfW1zYCk7XHJcbiAgICB0aGlzLnN0YXJ0SGVhcnRiZWF0KGRhdGEuaGVhcnRiZWF0X2ludGVydmFsKTtcclxuICAgIHRoaXMuaWRlbnRpZnkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBEaXNwYXRjaCBldmVudHNcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZURpc3BhdGNoKGV2ZW50VHlwZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdCgnZGVidWcnLCBgRGlzcGF0Y2g6ICR7ZXZlbnRUeXBlfWApO1xyXG4gICAgXHJcbiAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xyXG4gICAgICBjYXNlICdSRUFEWSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVSZWFkeShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfQ1JFQVRFJzpcclxuICAgICAgICB0aGlzLmhhbmRsZUd1aWxkQ3JlYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlR3VpbGRVcGRhdGUoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVHdWlsZERlbGV0ZShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnTUVTU0FHRV9DUkVBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlTWVzc2FnZUNyZWF0ZShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnTUVTU0FHRV9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZVVwZGF0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdNRVNTQUdFX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlRGVsZXRlJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ01FU1NBR0VfREVMRVRFX0JVTEsnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZURlbGV0ZUJ1bGsnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnQ0hBTk5FTF9DUkVBVEUnOiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIGd1aWxkIGNoYW5uZWwgY2FjaGVcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLnNldChjaGFubmVsSWQsIGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxDcmVhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdDSEFOTkVMX1VQREFURSc6IHtcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLnNldChjaGFubmVsSWQsIGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdDSEFOTkVMX0RFTEVURSc6IHtcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLmRlbGV0ZShjaGFubmVsSWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxEZWxldGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9NRU1CRVJfQUREJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ2d1aWxkTWVtYmVyQWRkJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX01FTUJFUl9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZ3VpbGRNZW1iZXJVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfTUVNQkVSX1JFTU9WRSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdndWlsZE1lbWJlclJlbW92ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9ST0xFX0NSRUFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdyb2xlQ3JlYXRlJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX1JPTEVfVVBEQVRFJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ3JvbGVVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfUk9MRV9ERUxFVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgncm9sZURlbGV0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9CQU5fQUREJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ2d1aWxkQmFuQWRkJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX0JBTl9SRU1PVkUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZ3VpbGRCYW5SZW1vdmUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnSU5WSVRFX0NSRUFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdpbnZpdGVDcmVhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnSU5WSVRFX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdpbnZpdGVEZWxldGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnVFlQSU5HX1NUQVJUJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ3R5cGluZ1N0YXJ0JywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ1BSRVNFTkNFX1VQREFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdwcmVzZW5jZVVwZGF0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdJTlRFUkFDVElPTl9DUkVBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25DcmVhdGUoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ1ZPSUNFX1NUQVRFX1VQREFURSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVWb2ljZVN0YXRlVXBkYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdWT0lDRV9TRVJWRVJfVVBEQVRFJzpcclxuICAgICAgICB0aGlzLmhhbmRsZVZvaWNlU2VydmVyVXBkYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIC8vIEVtaXQgcmF3IGV2ZW50IGZvciB1bmhhbmRsZWQgdHlwZXNcclxuICAgICAgICB0aGlzLmVtaXQoJ3JhdycsIHsgdDogZXZlbnRUeXBlLCBkOiBkYXRhIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIFJlYWR5IGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVSZWFkeShkYXRhOiBSZWFkeUV2ZW50RGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25faWQ7XHJcbiAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcihkYXRhLnVzZXIpO1xyXG4gICAgLy8gSGFuZGxlIGJvdGggc3RyaW5nIGFuZCBudW1iZXIgYXBwbGljYXRpb24gSURzXHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBkYXRhLmFwcGxpY2F0aW9uPy5pZCA/IFN0cmluZyhkYXRhLmFwcGxpY2F0aW9uLmlkKSA6IG51bGw7XHJcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvbklkKSB7XHJcbiAgICAgIHRoaXMucmVzdC5zZXRBcHBsaWNhdGlvbklkKHRoaXMuYXBwbGljYXRpb25JZCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENhY2hlIGd1aWxkcyAoYXMgdW5hdmFpbGFibGUgaW5pdGlhbGx5KVxyXG4gICAgaWYgKGRhdGEuZ3VpbGRzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgZ3VpbGQgb2YgZGF0YS5ndWlsZHMpIHtcclxuICAgICAgICB0aGlzLmd1aWxkcy5zZXQoU3RyaW5nKGd1aWxkLmlkKSwgbmV3IEd1aWxkKHRoaXMsIGd1aWxkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gU2V0dXAgdm9pY2UgYWRhcHRlcnMgZm9yIGVhY2ggZ3VpbGRcclxuICAgIHRoaXMuc2V0dXBWb2ljZUFkYXB0ZXJzKCk7XHJcbiAgICBcclxuICAgIGNvbnNvbGUubG9nKGDinIUgQm90IGhhesSxciEgVXNlcjogJHt0aGlzLnVzZXIudXNlcm5hbWV9ICgke3RoaXMudXNlci5pZH0pLCBBcHA6ICR7dGhpcy5hcHBsaWNhdGlvbklkfWApO1xyXG4gICAgdGhpcy5lbWl0KCdyZWFkeScsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dXAgdm9pY2UgYWRhcHRlcnMgZm9yIGFsbCBndWlsZHNcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwVm9pY2VBZGFwdGVycygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgW2d1aWxkSWRdIG9mIHRoaXMuZ3VpbGRzKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVm9pY2VBZGFwdGVyKGd1aWxkSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgdm9pY2UgYWRhcHRlciBmb3IgYSBndWlsZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlVm9pY2VBZGFwdGVyKGd1aWxkSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYWRhcHRlcjogVm9pY2VBZGFwdGVyQ3JlYXRvciA9IChtZXRob2RzKSA9PiB7XHJcbiAgICAgIC8vIFN0b3JlIGhhbmRsZXJzIGZvciB0aGlzIGd1aWxkXHJcbiAgICAgIHRoaXMudm9pY2VTdGF0ZUhhbmRsZXJzLnNldChndWlsZElkLCBtZXRob2RzLm9uVm9pY2VTdGF0ZVVwZGF0ZSk7XHJcbiAgICAgIHRoaXMudm9pY2VTZXJ2ZXJIYW5kbGVycy5zZXQoZ3VpbGRJZCwgbWV0aG9kcy5vblZvaWNlU2VydmVyVXBkYXRlKTtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc2VuZFBheWxvYWQ6IChwYXlsb2FkKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy53cz8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcclxuICAgICAgICAgICAgdGhpcy53cy5zZW5kKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZXN0cm95OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZvaWNlU3RhdGVIYW5kbGVycy5kZWxldGUoZ3VpbGRJZCk7XHJcbiAgICAgICAgICB0aGlzLnZvaWNlU2VydmVySGFuZGxlcnMuZGVsZXRlKGd1aWxkSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgICBcclxuICAgIHRoaXMudm9pY2UuYWRhcHRlcnMuc2V0KGd1aWxkSWQsIGFkYXB0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIEd1aWxkIENyZWF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlR3VpbGRDcmVhdGUoZGF0YTogQVBJR3VpbGQpOiB2b2lkIHtcclxuICAgIGxldCBndWlsZCA9IHRoaXMuZ3VpbGRzLmdldChkYXRhLmlkKTtcclxuICAgIFxyXG4gICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgIGd1aWxkLl9wYXRjaChkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGd1aWxkID0gbmV3IEd1aWxkKHRoaXMsIGRhdGEpO1xyXG4gICAgICB0aGlzLmd1aWxkcy5zZXQoZGF0YS5pZCwgZ3VpbGQpO1xyXG4gICAgICB0aGlzLmNyZWF0ZVZvaWNlQWRhcHRlcihkYXRhLmlkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCdndWlsZENyZWF0ZScsIGd1aWxkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBHdWlsZCBVcGRhdGUgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUd1aWxkVXBkYXRlKGRhdGE6IEFQSUd1aWxkKTogdm9pZCB7XHJcbiAgICBjb25zdCBndWlsZCA9IHRoaXMuZ3VpbGRzLmdldChkYXRhLmlkKTtcclxuICAgIGlmIChndWlsZCkge1xyXG4gICAgICBndWlsZC5fcGF0Y2goZGF0YSk7XHJcbiAgICAgIHRoaXMuZW1pdCgnZ3VpbGRVcGRhdGUnLCBndWlsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgR3VpbGQgRGVsZXRlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVHdWlsZERlbGV0ZShkYXRhOiB7IGlkOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3VpbGQgPSB0aGlzLmd1aWxkcy5nZXQoZGF0YS5pZCk7XHJcbiAgICBpZiAoZ3VpbGQpIHtcclxuICAgICAgdGhpcy5ndWlsZHMuZGVsZXRlKGRhdGEuaWQpO1xyXG4gICAgICB0aGlzLnZvaWNlLmFkYXB0ZXJzLmRlbGV0ZShkYXRhLmlkKTtcclxuICAgICAgdGhpcy5lbWl0KCdndWlsZERlbGV0ZScsIGd1aWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBNZXNzYWdlIENyZWF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZUNyZWF0ZShkYXRhOiBBUElNZXNzYWdlKTogdm9pZCB7XHJcbiAgICAvLyBCYWNrZW5kIHNlbmRzIHVzZXJfaWQgc2VwYXJhdGVseSwgbWFwIGl0IHRvIGF1dGhvci5pZCBmb3IgY29tcGF0aWJpbGl0eVxyXG4gICAgaWYgKGRhdGEudXNlcl9pZCAmJiBkYXRhLmF1dGhvciAmJiAhZGF0YS5hdXRob3IuaWQpIHtcclxuICAgICAgKGRhdGEuYXV0aG9yIGFzIGFueSkuaWQgPSBkYXRhLnVzZXJfaWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENhY2hlIHRoZSBhdXRob3JcclxuICAgIGlmIChkYXRhLmF1dGhvcikge1xyXG4gICAgICBjb25zdCB1c2VyID0gbmV3IFVzZXIoZGF0YS5hdXRob3IpO1xyXG4gICAgICB0aGlzLnVzZXJzLnNldCh1c2VyLmlkLCB1c2VyKTtcclxuICAgICAgLy8gQWxzbyBjYWNoZSBpbiBSRVNUIGZvciBtZW50aW9uIHJlc29sdXRpb25cclxuICAgICAgdGhpcy5yZXN0LmNhY2hlVXNlcihkYXRhLmF1dGhvcik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZSh0aGlzLCBkYXRhKTtcclxuXHJcbiAgICAvLyBNYXJrIG1lc3NhZ2UgYXMgZnJvbSBib3QgaWYgYXV0aG9yIElEIG1hdGNoZXMgdGhlIGJvdCdzIG93biB1c2VyIElEXHJcbiAgICBpZiAodGhpcy51c2VyICYmIFN0cmluZyhtZXNzYWdlLmF1dGhvci5pZCkgPT09IFN0cmluZyh0aGlzLnVzZXIuaWQpKSB7XHJcbiAgICAgIChtZXNzYWdlLmF1dGhvciBhcyBhbnkpLmJvdCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0KCdtZXNzYWdlQ3JlYXRlJywgbWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgSW50ZXJhY3Rpb24gQ3JlYXRlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZShkYXRhOiBBUElJbnRlcmFjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1tERUJVR10gaGFuZGxlSW50ZXJhY3Rpb25DcmVhdGUgY2FsbGVkIHdpdGg6JywgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xyXG4gICAgXHJcbiAgICAvLyBDYWNoZSB0aGUgdXNlclxyXG4gICAgY29uc3QgdXNlckRhdGEgPSBkYXRhLm1lbWJlcj8udXNlciB8fCBkYXRhLnVzZXI7XHJcbiAgICBpZiAodXNlckRhdGEpIHtcclxuICAgICAgY29uc3QgdXNlciA9IG5ldyBVc2VyKHVzZXJEYXRhKTtcclxuICAgICAgdGhpcy51c2Vycy5zZXQodXNlci5pZCwgdXNlcik7XHJcbiAgICAgIHRoaXMucmVzdC5jYWNoZVVzZXIodXNlckRhdGEpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBpbnRlcmFjdGlvbiA9IGNyZWF0ZUludGVyYWN0aW9uKHRoaXMsIGRhdGEpO1xyXG4gICAgY29uc29sZS5sb2coJ1tERUJVR10gQ3JlYXRlZCBpbnRlcmFjdGlvbiB0eXBlOicsIGludGVyYWN0aW9uLmNvbnN0cnVjdG9yLm5hbWUsICdjdXN0b21JZDonLCAoaW50ZXJhY3Rpb24gYXMgYW55KS5jdXN0b21JZCk7XHJcbiAgICB0aGlzLmVtaXQoJ2ludGVyYWN0aW9uQ3JlYXRlJywgaW50ZXJhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIFZvaWNlIFN0YXRlIFVwZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlVm9pY2VTdGF0ZVVwZGF0ZShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGd1aWxkSWQgPSBkYXRhLmd1aWxkX2lkO1xyXG4gICAgXHJcbiAgICAvLyBGb3J3YXJkIHRvIHZvaWNlIGFkYXB0ZXIgaWYgZXhpc3RzXHJcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy52b2ljZVN0YXRlSGFuZGxlcnMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgaGFuZGxlcihkYXRhKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCd2b2ljZVN0YXRlVXBkYXRlJywgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgVm9pY2UgU2VydmVyIFVwZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlVm9pY2VTZXJ2ZXJVcGRhdGUoZGF0YTogQVBJVm9pY2VTZXJ2ZXJVcGRhdGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGd1aWxkSWQgPSBkYXRhLmd1aWxkX2lkO1xyXG4gICAgXHJcbiAgICAvLyBGb3J3YXJkIHRvIHZvaWNlIGFkYXB0ZXIgaWYgZXhpc3RzXHJcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy52b2ljZVNlcnZlckhhbmRsZXJzLmdldChndWlsZElkKTtcclxuICAgIGlmIChoYW5kbGVyKSB7XHJcbiAgICAgIGhhbmRsZXIoe1xyXG4gICAgICAgIHRva2VuOiBkYXRhLnRva2VuLFxyXG4gICAgICAgIGVuZHBvaW50OiBkYXRhLmVuZHBvaW50LFxyXG4gICAgICAgIHJvb206IGRhdGEucm9vbVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCd2b2ljZVNlcnZlclVwZGF0ZScsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBJZGVudGlmeSBwYXlsb2FkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpZGVudGlmeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IEdhdGV3YXlQYXlsb2FkID0ge1xyXG4gICAgICBvcDogR2F0ZXdheU9wY29kZXMuSWRlbnRpZnksXHJcbiAgICAgIGQ6IHtcclxuICAgICAgICB0b2tlbjogYEJvdCAke3RoaXMudG9rZW59YCxcclxuICAgICAgICBpbnRlbnRzOiB0aGlzLmdldEludGVudHNWYWx1ZSgpLFxyXG4gICAgICAgIHNoYXJkOiB0aGlzLm9wdGlvbnMuc2hhcmRzIHx8IFswLCAxXVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0aGlzLnNlbmQocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBoZWFydGJlYXRcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0SGVhcnRiZWF0KGludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VuZCh7XHJcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdCxcclxuICAgICAgICBkOiB0aGlzLnNlcXVlbmNlXHJcbiAgICAgIH0pO1xyXG4gICAgfSwgaW50ZXJ2YWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBwYXlsb2FkIHRvIGdhdGV3YXlcclxuICAgKi9cclxuICBwcml2YXRlIHNlbmQocGF5bG9hZDogR2F0ZXdheVBheWxvYWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICB0aGlzLndzLnNlbmQoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYW51cCBvbiBkaXNjb25uZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhlYXJ0YmVhdEludGVydmFsKTtcclxuICAgICAgdGhpcy5oZWFydGJlYXRJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXN0cm95IHRoZSBjbGllbnRcclxuICAgKi9cclxuICBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhbnVwKCk7XHJcbiAgICB0aGlzLndzPy5jbG9zZSgxMDAwKTtcclxuICAgIHRoaXMud3MgPSBudWxsO1xyXG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFJlLWV4cG9ydCBmb3IgY29udmVuaWVuY2VcclxuZXhwb3J0IHsgR2F0ZXdheUludGVudEJpdHMgfTtcclxuIl19
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBc0M7QUFDdEMsNENBQTJCO0FBWTNCLG1DQUE0RDtBQWdzQm5ELGtHQWhzQmdCLHlCQUFpQixPQWdzQmhCO0FBL3JCMUIsd0RBQXFEO0FBQ3JELDRDQUF5QztBQUN6Qyw4Q0FBMkM7QUFDM0Msa0RBQStDO0FBQy9DLDBEQUEwRTtBQUUxRSxzQ0FBbUM7QUFjbkM7O0dBRUc7QUFDSCxNQUFhLE1BQU8sU0FBUSxxQkFBWTtJQUN0QyxxQkFBcUI7SUFDTCxPQUFPLENBQWdCO0lBRXZDLHNCQUFzQjtJQUNOLElBQUksQ0FBTztJQUUzQixtQkFBbUI7SUFDWixJQUFJLEdBQWdCLElBQUksQ0FBQztJQUVoQyxxQkFBcUI7SUFDZCxhQUFhLEdBQWtCLElBQUksQ0FBQztJQUUzQyxvQkFBb0I7SUFDYixNQUFNLEdBQThCLElBQUksdUJBQVUsRUFBRSxDQUFDO0lBRTVELHNCQUFzQjtJQUNmLFFBQVEsR0FBb0MsSUFBSSx1QkFBVSxFQUFFLENBQUM7SUFFcEUsbUJBQW1CO0lBQ1osS0FBSyxHQUE2QixJQUFJLHVCQUFVLEVBQUUsQ0FBQztJQUUxRCwrQkFBK0I7SUFDeEIsS0FBSyxDQUVWO0lBRUYsMkJBQTJCO0lBQ25CLEVBQUUsR0FBcUIsSUFBSSxDQUFDO0lBRXBDLGdCQUFnQjtJQUNSLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFM0IsaUJBQWlCO0lBQ1QsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFeEMsc0JBQXNCO0lBQ2QsUUFBUSxHQUFrQixJQUFJLENBQUM7SUFFdkMseUJBQXlCO0lBQ2pCLGlCQUFpQixHQUEwQixJQUFJLENBQUM7SUFFeEQsa0JBQWtCO0lBQ1YsVUFBVSxDQUFTO0lBRTNCLHVEQUF1RDtJQUMvQyxrQkFBa0IsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRSxtQkFBbUIs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VUFBVSxLQUFLLFlBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU87UUFDYixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDOUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOztBQXBxQkgsd0JBcXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XHJcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xyXG5pbXBvcnQgeyBcclxuICBDbGllbnRPcHRpb25zLCBcclxuICBHYXRld2F5UGF5bG9hZCwgXHJcbiAgUmVhZHlFdmVudERhdGEsXHJcbiAgQVBJR3VpbGQsXHJcbiAgQVBJSW50ZXJhY3Rpb24sXHJcbiAgQVBJTWVzc2FnZSxcclxuICBBUElWb2ljZVNlcnZlclVwZGF0ZSxcclxuICBBUElDaGFubmVsLFxyXG4gIEFQSVVzZXJcclxufSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgR2F0ZXdheU9wY29kZXMsIEdhdGV3YXlJbnRlbnRCaXRzIH0gZnJvbSAnLi9lbnVtcyc7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL3N0cnVjdHVyZXMvQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL3N0cnVjdHVyZXMvVXNlcic7XHJcbmltcG9ydCB7IEd1aWxkIH0gZnJvbSAnLi9zdHJ1Y3R1cmVzL0d1aWxkJztcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4vc3RydWN0dXJlcy9NZXNzYWdlJztcclxuaW1wb3J0IHsgY3JlYXRlSW50ZXJhY3Rpb24sIEludGVyYWN0aW9uIH0gZnJvbSAnLi9zdHJ1Y3R1cmVzL0ludGVyYWN0aW9uJztcclxuaW1wb3J0IHsgQmFzZUNoYW5uZWwsIGNyZWF0ZUNoYW5uZWwgfSBmcm9tICcuL3N0cnVjdHVyZXMvQ2hhbm5lbCc7XHJcbmltcG9ydCB7IFJFU1QgfSBmcm9tICcuL3Jlc3QvUkVTVCc7XHJcblxyXG4vKipcclxuICogVm9pY2UgYWRhcHRlciBjcmVhdG9yIHR5cGUgZm9yIEBqdWJiaW8vdm9pY2UgY29tcGF0aWJpbGl0eVxyXG4gKi9cclxudHlwZSBWb2ljZUFkYXB0ZXJDcmVhdG9yID0gKG1ldGhvZHM6IHtcclxuICBvblZvaWNlU2VydmVyVXBkYXRlKGRhdGE6IGFueSk6IHZvaWQ7XHJcbiAgb25Wb2ljZVN0YXRlVXBkYXRlKGRhdGE6IGFueSk6IHZvaWQ7XHJcbiAgZGVzdHJveSgpOiB2b2lkO1xyXG59KSA9PiB7XHJcbiAgc2VuZFBheWxvYWQocGF5bG9hZDogYW55KTogYm9vbGVhbjtcclxuICBkZXN0cm95KCk6IHZvaWQ7XHJcbn07XHJcblxyXG4vKipcclxuICogTWFpbiBjbGllbnQgY2xhc3NcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDbGllbnQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xyXG4gIC8qKiBDbGllbnQgb3B0aW9ucyAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBDbGllbnRPcHRpb25zO1xyXG4gIFxyXG4gIC8qKiBSRVNUIEFQSSBjbGllbnQgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVzdDogUkVTVDtcclxuICBcclxuICAvKiogVGhlIGJvdCB1c2VyICovXHJcbiAgcHVibGljIHVzZXI6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKiogQXBwbGljYXRpb24gSUQgKi9cclxuICBwdWJsaWMgYXBwbGljYXRpb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqIENhY2hlZCBndWlsZHMgKi9cclxuICBwdWJsaWMgZ3VpbGRzOiBDb2xsZWN0aW9uPHN0cmluZywgR3VpbGQ+ID0gbmV3IENvbGxlY3Rpb24oKTtcclxuICBcclxuICAvKiogQ2FjaGVkIGNoYW5uZWxzICovXHJcbiAgcHVibGljIGNoYW5uZWxzOiBDb2xsZWN0aW9uPHN0cmluZywgQmFzZUNoYW5uZWw+ID0gbmV3IENvbGxlY3Rpb24oKTtcclxuICBcclxuICAvKiogQ2FjaGVkIHVzZXJzICovXHJcbiAgcHVibGljIHVzZXJzOiBDb2xsZWN0aW9uPHN0cmluZywgVXNlcj4gPSBuZXcgQ29sbGVjdGlvbigpO1xyXG4gIFxyXG4gIC8qKiBWb2ljZSBhZGFwdGVyIG1hbmFnZW1lbnQgKi9cclxuICBwdWJsaWMgdm9pY2U6IHtcclxuICAgIGFkYXB0ZXJzOiBNYXA8c3RyaW5nLCBWb2ljZUFkYXB0ZXJDcmVhdG9yPjtcclxuICB9O1xyXG4gIFxyXG4gIC8qKiBXZWJTb2NrZXQgY29ubmVjdGlvbiAqL1xyXG4gIHByaXZhdGUgd3M6IFdlYlNvY2tldCB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIC8qKiBCb3QgdG9rZW4gKi9cclxuICBwcml2YXRlIHRva2VuOiBzdHJpbmcgPSAnJztcclxuICBcclxuICAvKiogU2Vzc2lvbiBJRCAqL1xyXG4gIHByaXZhdGUgc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKiogU2VxdWVuY2UgbnVtYmVyICovXHJcbiAgcHJpdmF0ZSBzZXF1ZW5jZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqIEhlYXJ0YmVhdCBpbnRlcnZhbCAqL1xyXG4gIHByaXZhdGUgaGVhcnRiZWF0SW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqIEdhdGV3YXkgVVJMICovXHJcbiAgcHJpdmF0ZSBnYXRld2F5VXJsOiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIFZvaWNlIHN0YXRlIHVwZGF0ZSBoYW5kbGVycyAoZm9yIHZvaWNlIGFkYXB0ZXJzKSAqL1xyXG4gIHByaXZhdGUgdm9pY2VTdGF0ZUhhbmRsZXJzOiBNYXA8c3RyaW5nLCAoZGF0YTogYW55KSA9PiB2b2lkPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIHZvaWNlU2VydmVySGFuZGxlcnM6IE1hcDxzdHJpbmcsIChkYXRhOiBhbnkpID0+IHZvaWQ+ID0gbmV3IE1hcCgpO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgY2xpZW50IGlzIGN1cnJlbnRseSBpbiB0aGUgbG9naW4gZmxvdyAqL1xyXG4gIHByaXZhdGUgX2xvZ2luU3RhdGU6ICdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdyZWFkeScgPSAnaWRsZSc7XHJcblxyXG4gIC8qKiBSZWNvbm5lY3QgYXR0ZW1wdCBjb3VudGVyICovXHJcbiAgcHJpdmF0ZSBfcmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKiBNYXhpbXVtIHJlY29ubmVjdCBhdHRlbXB0cyBiZWZvcmUgZ2l2aW5nIHVwICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4UmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlciA9IDU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENsaWVudE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5nYXRld2F5VXJsID0gb3B0aW9ucy5nYXRld2F5VXJsIHx8ICd3c3M6Ly9yZWFsdGltZS5qdWJiaW8uY29tL3dzL2JvdCc7XHJcbiAgICB0aGlzLnJlc3QgPSBuZXcgUkVTVChvcHRpb25zLmFwaVVybCk7XHJcbiAgICBcclxuICAgIC8vIEluaXRpYWxpemUgdm9pY2UgYWRhcHRlciBzeXN0ZW1cclxuICAgIHRoaXMudm9pY2UgPSB7XHJcbiAgICAgIGFkYXB0ZXJzOiBuZXcgTWFwKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGUgaW50ZW50cyB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0SW50ZW50c1ZhbHVlKCk6IG51bWJlciB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5pbnRlbnRzID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmludGVudHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmludGVudHMucmVkdWNlKChhY2MsIGludGVudCkgPT4gYWNjIHwgaW50ZW50LCAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdhdGV3YXkgY2xvc2UgY29kZSBkZXNjcmlwdGlvbnNcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTE9TRV9DT0RFUzogUmVjb3JkPG51bWJlciwgeyBtZXNzYWdlOiBzdHJpbmc7IHJlY29ubmVjdGFibGU6IGJvb2xlYW4gfT4gPSB7XHJcbiAgICA0MDAwOiB7IG1lc3NhZ2U6ICdCaWxpbm1leWVuIGhhdGEgKFVua25vd24gZXJyb3IpJywgcmVjb25uZWN0YWJsZTogdHJ1ZSB9LFxyXG4gICAgNDAwMTogeyBtZXNzYWdlOiAnQmlsaW5tZXllbiBvcGNvZGUgZ8O2bmRlcmlsZGkgKFVua25vd24gb3Bjb2RlKScsIHJlY29ubmVjdGFibGU6IHRydWUgfSxcclxuICAgIDQwMDI6IHsgbWVzc2FnZTogJ0dlw6dlcnNpeiBwYXlsb2FkIGfDtm5kZXJpbGRpIChEZWNvZGUgZXJyb3IpJywgcmVjb25uZWN0YWJsZTogdHJ1ZSB9LFxyXG4gICAgNDAwMzogeyBtZXNzYWdlOiAnSGVuw7x6IGtpbWxpayBkb8SfcnVsYW1hc8SxIHlhcMSxbG1hZMSxIChOb3QgYXV0aGVudGljYXRlZCknLCByZWNvbm5lY3RhYmxlOiB0cnVlIH0sXHJcbiAgICA0MDA0OiB7IG1lc3NhZ2U6ICdHZcOnZXJzaXogYm90IHRva2VuXFwnxLEgKEF1dGhlbnRpY2F0aW9uIGZhaWxlZCknLCByZWNvbm5lY3RhYmxlOiBmYWxzZSB9LFxyXG4gICAgNDAwNTogeyBtZXNzYWdlOiAnWmF0ZW4ga2ltbGlrIGRvxJ9ydWxhbWFzxLEgeWFwxLFsbcSxxZ8gKEFscmVhZHkgYXV0aGVudGljYXRlZCknLCByZWNvbm5lY3RhYmxlOiB0cnVlIH0sXHJcbiAgICA0MDA3OiB7IG1lc3NhZ2U6ICdHZcOnZXJzaXogc2VxdWVuY2UgbnVtYXJhc8SxIChJbnZhbGlkIHNlcSknLCByZWNvbm5lY3RhYmxlOiB0cnVlIH0sXHJcbiAgICA0MDA4OiB7IG1lc3NhZ2U6ICdSYXRlIGxpbWl0IGHFn8SxbGTEsSAoUmF0ZSBsaW1pdGVkKScsIHJlY29ubmVjdGFibGU6IHRydWUgfSxcclxuICAgIDQwMDk6IHsgbWVzc2FnZTogJ090dXJ1bSB6YW1hbiBhxZ/EsW3EsW5hIHXEn3JhZMSxIChTZXNzaW9uIHRpbWVkIG91dCknLCByZWNvbm5lY3RhYmxlOiB0cnVlIH0sXHJcbiAgICA0MDEwOiB7IG1lc3NhZ2U6ICdHZcOnZXJzaXogc2hhcmQgeWFwxLFsYW5kxLFybWFzxLEgKEludmFsaWQgc2hhcmQpJywgcmVjb25uZWN0YWJsZTogZmFsc2UgfSxcclxuICAgIDQwMTE6IHsgbWVzc2FnZTogJ1NoYXJkaW5nIGdlcmVrbGkgKFNoYXJkaW5nIHJlcXVpcmVkKScsIHJlY29ubmVjdGFibGU6IGZhbHNlIH0sXHJcbiAgICA0MDE0OiB7IG1lc3NhZ2U6ICfEsHppbiB2ZXJpbG1leWVuIGludGVudFxcJ2xlciBpc3RlbmRpIChEaXNhbGxvd2VkIGludGVudHMpJywgcmVjb25uZWN0YWJsZTogZmFsc2UgfSxcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBMb2dpbiB0byB0aGUgZ2F0ZXdheVxyXG4gICAqL1xyXG4gIGFzeW5jIGxvZ2luKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKCF0b2tlbiB8fCB0eXBlb2YgdG9rZW4gIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnR2XDp2VybGkgYmlyIGJvdCB0b2tlblxcJ8SxIHNhxJ9sYW5tYWzEsWTEsXIuIMOWcm5lazogY2xpZW50LmxvZ2luKHByb2Nlc3MuZW52LkJPVF9UT0tFTiknXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b2tlbiA9IHRva2VuLnJlcGxhY2UoL15Cb3RcXHMrL2ksICcnKTtcclxuICAgIHRoaXMucmVzdC5zZXRUb2tlbih0aGlzLnRva2VuKTtcclxuICAgIHRoaXMuX2xvZ2luU3RhdGUgPSAnY29ubmVjdGluZyc7XHJcbiAgICB0aGlzLl9yZWNvbm5lY3RBdHRlbXB0cyA9IDA7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcigncmVhZHknLCBvblJlYWR5KTtcclxuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoJ2dhdGV3YXlDbG9zZScsIG9uR2F0ZXdheUNsb3NlKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgdGhpcy5fbG9naW5TdGF0ZSA9ICdpZGxlJztcclxuICAgICAgICByZWplY3QobmV3IEVycm9yKFxyXG4gICAgICAgICAgJ0dhdGV3YXlcXCdlIGJhxJ9sYW7EsWxhbWFkxLE6IDMwIHNhbml5ZSBpw6dpbmRlIFJFQURZIGV2ZW50XFwnaSBhbMSxbmFtYWTEsS4gJyArXHJcbiAgICAgICAgICAnT2xhc8SxIHNlYmVwbGVyOiBnYXRld2F5IHN1bnVjdXN1IGVyacWfaWxlbWV6LCB0b2tlbiBnZcOnZXJzaXogdmV5YSBhxJ8gc29ydW51LidcclxuICAgICAgICApKTtcclxuICAgICAgfSwgMzAwMDApO1xyXG5cclxuICAgICAgY29uc3Qgb25SZWFkeSA9ICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgdGhpcy5fbG9naW5TdGF0ZSA9ICdyZWFkeSc7XHJcbiAgICAgICAgdGhpcy5fcmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xyXG4gICAgICAgIHJlc29sdmUodGhpcy50b2tlbik7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBvbkVycm9yID0gKGVycm9yOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICB0aGlzLl9sb2dpblN0YXRlID0gJ2lkbGUnO1xyXG4gICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBvbkdhdGV3YXlDbG9zZSA9IChjb2RlOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IENsaWVudC5DTE9TRV9DT0RFU1tjb2RlXTtcclxuICAgICAgICBpZiAoaW5mbyAmJiAhaW5mby5yZWNvbm5lY3RhYmxlKSB7XHJcbiAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICB0aGlzLl9sb2dpblN0YXRlID0gJ2lkbGUnO1xyXG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgR2F0ZXdheSBiYcSfbGFudMSxc8SxIHJlZGRlZGlsZGkgWyR7Y29kZX1dOiAke2luZm8ubWVzc2FnZX0ke3JlYXNvbiA/ICcgLSAnICsgcmVhc29uIDogJyd9YCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBSZWNvbm5lY3RhYmxlIGNvZGVzOiBsb2dpbiBwcm9taXNlIHN0YXlzIGFsaXZlLCBjb25uZWN0KCkgd2lsbCByZXRyeVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vbmNlKCdyZWFkeScsIG9uUmVhZHkpO1xyXG4gICAgICB0aGlzLm9uY2UoJ2Vycm9yJywgb25FcnJvcik7XHJcbiAgICAgIHRoaXMub24oJ2dhdGV3YXlDbG9zZScsIG9uR2F0ZXdheUNsb3NlKTtcclxuXHJcbiAgICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25uZWN0IHRvIHRoZSBnYXRld2F5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb25uZWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy53cyA9IG5ldyBXZWJTb2NrZXQodGhpcy5nYXRld2F5VXJsKTtcclxuICAgIFxyXG4gICAgdGhpcy53cy5vbignb3BlbicsICgpID0+IHtcclxuICAgICAgdGhpcy5lbWl0KCdkZWJ1ZycsICdXZWJTb2NrZXQgYmHEn2xhbnTEsXPEsSBhw6fEsWxkxLEnKTtcclxuICAgICAgdGhpcy5fcmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHRoaXMud3Mub24oJ21lc3NhZ2UnLCAoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZU1lc3NhZ2UoZGF0YS50b1N0cmluZygpKTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLndzLm9uKCdjbG9zZScsIChjb2RlLCByZWFzb24pID0+IHtcclxuICAgICAgY29uc3QgcmVhc29uU3RyID0gcmVhc29uPy50b1N0cmluZygpIHx8ICcnO1xyXG4gICAgICBjb25zdCBpbmZvID0gQ2xpZW50LkNMT1NFX0NPREVTW2NvZGVdO1xyXG4gICAgICBcclxuICAgICAgaWYgKGluZm8pIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYEdhdGV3YXkgYmHEn2xhbnTEsXPEsSBrYXBhbmTEsSBbJHtjb2RlfV06ICR7aW5mby5tZXNzYWdlfSR7cmVhc29uU3RyID8gJyAtICcgKyByZWFzb25TdHIgOiAnJ31gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYFdlYlNvY2tldCBrYXBhbmTEsTogJHtjb2RlfSAtICR7cmVhc29uU3RyfWApO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmNsZWFudXAoKTtcclxuXHJcbiAgICAgIC8vIEVtaXQgZ2F0ZXdheUNsb3NlIHNvIGxvZ2luKCkgY2FuIGhhbmRsZSBub24tcmVjb25uZWN0YWJsZSBjb2Rlc1xyXG4gICAgICB0aGlzLmVtaXQoJ2dhdGV3YXlDbG9zZScsIGNvZGUsIHJlYXNvblN0cik7XHJcblxyXG4gICAgICAvLyBOb24tcmVjb25uZWN0YWJsZSBjb2RlczogZG9uJ3QgcmV0cnlcclxuICAgICAgaWYgKGluZm8gJiYgIWluZm8ucmVjb25uZWN0YWJsZSkge1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCBgS29kICR7Y29kZX0geWVuaWRlbiBiYcSfbGFuxLFsYW1heiwgYmHEn2xhbnTEsSBzb25sYW5kxLFyxLFsxLF5b3IuYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOb3JtYWwgY2xvc2U6IGRvbid0IHJldHJ5XHJcbiAgICAgIGlmIChjb2RlID09PSAxMDAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZWNvbm5lY3RhYmxlOiByZXRyeSB3aXRoIGJhY2tvZmZcclxuICAgICAgdGhpcy5fcmVjb25uZWN0QXR0ZW1wdHMrKztcclxuICAgICAgaWYgKHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzID4gdGhpcy5fbWF4UmVjb25uZWN0QXR0ZW1wdHMpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYE1ha3NpbXVtIHllbmlkZW4gYmHEn2xhbm1hIGRlbmVtZXNpIGHFn8SxbGTEsSAoJHt0aGlzLl9tYXhSZWNvbm5lY3RBdHRlbXB0c30pYCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcihcclxuICAgICAgICAgIGBHYXRld2F5IGJhxJ9sYW50xLFzxLEgJHt0aGlzLl9tYXhSZWNvbm5lY3RBdHRlbXB0c30gZGVuZW1lZGVuIHNvbnJhIGt1cnVsYW1hZMSxLiBTb24ga2FwYW5tYSBrb2R1OiAke2NvZGV9YFxyXG4gICAgICAgICkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZGVsYXkgPSBNYXRoLm1pbigxMDAwICogTWF0aC5wb3coMiwgdGhpcy5fcmVjb25uZWN0QXR0ZW1wdHMgLSAxKSwgMzAwMDApO1xyXG4gICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYFllbmlkZW4gYmHEn2xhbsSxbMSxeW9yIChkZW5lbWUgJHt0aGlzLl9yZWNvbm5lY3RBdHRlbXB0c30vJHt0aGlzLl9tYXhSZWNvbm5lY3RBdHRlbXB0c30pLCAke2RlbGF5fW1zIHNvbnJhLi4uYCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25uZWN0KCksIGRlbGF5KTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLndzLm9uKCdlcnJvcicsIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYFdlYlNvY2tldCBoYXRhc8SxOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBpbmNvbWluZyBnYXRld2F5IG1lc3NhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZU1lc3NhZ2UoZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBIYW5kbGUgbXVsdGlwbGUgbWVzc2FnZXMgaW4gb25lIGZyYW1lXHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IGRhdGEuc3BsaXQoJ1xcbicpLmZpbHRlcihtID0+IG0udHJpbSgpKTtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBtc2cgb2YgbWVzc2FnZXMpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwYXlsb2FkOiBHYXRld2F5UGF5bG9hZCA9IEpTT04ucGFyc2UobXNnKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVBheWxvYWQocGF5bG9hZCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgYEZhaWxlZCB0byBwYXJzZSBtZXNzYWdlOiAke21zZ31gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGdhdGV3YXkgcGF5bG9hZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUGF5bG9hZChwYXlsb2FkOiBHYXRld2F5UGF5bG9hZCk6IHZvaWQge1xyXG4gICAgaWYgKHBheWxvYWQucykge1xyXG4gICAgICB0aGlzLnNlcXVlbmNlID0gcGF5bG9hZC5zO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAocGF5bG9hZC5vcCkge1xyXG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkhlbGxvOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlSGVsbG8ocGF5bG9hZC5kKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5EaXNwYXRjaDpcclxuICAgICAgICB0aGlzLmhhbmRsZURpc3BhdGNoKHBheWxvYWQudCEsIHBheWxvYWQuZCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgR2F0ZXdheU9wY29kZXMuSGVhcnRiZWF0QWNrOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCAnSGVhcnRiZWF0IGFja25vd2xlZGdlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkludmFsaWRTZXNzaW9uOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCAnR2XDp2Vyc2l6IG90dXJ1bSwgeWVuaWRlbiBraW1saWsgZG/En3J1bGFuxLF5b3IuLi4nKTtcclxuICAgICAgICAvLyBJbnZhbGlkU2Vzc2lvbiBtYXkgY2FycnkgZXJyb3IgZGF0YSBmcm9tIHNlbmRFcnJvcigpXHJcbiAgICAgICAgaWYgKHBheWxvYWQuZCAmJiB0eXBlb2YgcGF5bG9hZC5kID09PSAnb2JqZWN0JyAmJiBwYXlsb2FkLmQuY29kZSAmJiBwYXlsb2FkLmQubWVzc2FnZSkge1xyXG4gICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1ZycsIGBTdW51Y3UgaGF0YXPEsSBbJHtwYXlsb2FkLmQuY29kZX1dOiAke3BheWxvYWQuZC5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgY29uc3QgaW5mbyA9IENsaWVudC5DTE9TRV9DT0RFU1twYXlsb2FkLmQuY29kZV07XHJcbiAgICAgICAgICBpZiAoaW5mbyAmJiAhaW5mby5yZWNvbm5lY3RhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoYEdhdGV3YXkgaGF0YXPEsSBbJHtwYXlsb2FkLmQuY29kZX1dOiAke2luZm8ubWVzc2FnZX1gKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlkZW50aWZ5KCksIDUwMDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLlJlY29ubmVjdDpcclxuICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnJywgJ1JlY29ubmVjdCByZXF1ZXN0ZWQnKTtcclxuICAgICAgICB0aGlzLndzPy5jbG9zZSgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25uZWN0KCksIDEwMDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIEhlbGxvIHBheWxvYWRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUhlbGxvKGRhdGE6IHsgaGVhcnRiZWF0X2ludGVydmFsOiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0KCdkZWJ1ZycsIGBSZWNlaXZlZCBIZWxsbywgaGVhcnRiZWF0IGludGVydmFsOiAke2RhdGEuaGVhcnRiZWF0X2ludGVydmFsfW1zYCk7XHJcbiAgICB0aGlzLnN0YXJ0SGVhcnRiZWF0KGRhdGEuaGVhcnRiZWF0X2ludGVydmFsKTtcclxuICAgIHRoaXMuaWRlbnRpZnkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBEaXNwYXRjaCBldmVudHNcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZURpc3BhdGNoKGV2ZW50VHlwZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdCgnZGVidWcnLCBgRGlzcGF0Y2g6ICR7ZXZlbnRUeXBlfWApO1xyXG4gICAgXHJcbiAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xyXG4gICAgICBjYXNlICdSRUFEWSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVSZWFkeShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfQ1JFQVRFJzpcclxuICAgICAgICB0aGlzLmhhbmRsZUd1aWxkQ3JlYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlR3VpbGRVcGRhdGUoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVHdWlsZERlbGV0ZShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnTUVTU0FHRV9DUkVBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlTWVzc2FnZUNyZWF0ZShkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnTUVTU0FHRV9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZVVwZGF0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdNRVNTQUdFX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlRGVsZXRlJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ01FU1NBR0VfREVMRVRFX0JVTEsnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZURlbGV0ZUJ1bGsnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnQ0hBTk5FTF9DUkVBVEUnOiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIGd1aWxkIGNoYW5uZWwgY2FjaGVcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLnNldChjaGFubmVsSWQsIGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxDcmVhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdDSEFOTkVMX1VQREFURSc6IHtcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLnNldChjaGFubmVsSWQsIGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdDSEFOTkVMX0RFTEVURSc6IHtcclxuICAgICAgICBjb25zdCBndWlsZElkID0gZGF0YS5ndWlsZF9pZDtcclxuICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBkYXRhLmlkIHx8IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgICAgICBpZiAoZ3VpbGRJZCAmJiBjaGFubmVsSWQpIHtcclxuICAgICAgICAgIGNvbnN0IGd1aWxkID0gdGhpcy5ndWlsZHMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgICAgICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgICAgICAgIGd1aWxkLmNoYW5uZWxzLmRlbGV0ZShjaGFubmVsSWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5uZWxEZWxldGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9NRU1CRVJfQUREJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ2d1aWxkTWVtYmVyQWRkJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX01FTUJFUl9VUERBVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZ3VpbGRNZW1iZXJVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfTUVNQkVSX1JFTU9WRSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdndWlsZE1lbWJlclJlbW92ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9ST0xFX0NSRUFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdyb2xlQ3JlYXRlJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX1JPTEVfVVBEQVRFJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ3JvbGVVcGRhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnR1VJTERfUk9MRV9ERUxFVEUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgncm9sZURlbGV0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdHVUlMRF9CQU5fQUREJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ2d1aWxkQmFuQWRkJywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ0dVSUxEX0JBTl9SRU1PVkUnOlxyXG4gICAgICAgIHRoaXMuZW1pdCgnZ3VpbGRCYW5SZW1vdmUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnSU5WSVRFX0NSRUFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdpbnZpdGVDcmVhdGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnSU5WSVRFX0RFTEVURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdpbnZpdGVEZWxldGUnLCBkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBcclxuICAgICAgY2FzZSAnVFlQSU5HX1NUQVJUJzpcclxuICAgICAgICB0aGlzLmVtaXQoJ3R5cGluZ1N0YXJ0JywgZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ1BSRVNFTkNFX1VQREFURSc6XHJcbiAgICAgICAgdGhpcy5lbWl0KCdwcmVzZW5jZVVwZGF0ZScsIGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdJTlRFUkFDVElPTl9DUkVBVEUnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25DcmVhdGUoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgXHJcbiAgICAgIGNhc2UgJ1ZPSUNFX1NUQVRFX1VQREFURSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVWb2ljZVN0YXRlVXBkYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlICdWT0lDRV9TRVJWRVJfVVBEQVRFJzpcclxuICAgICAgICB0aGlzLmhhbmRsZVZvaWNlU2VydmVyVXBkYXRlKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIFxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIC8vIEVtaXQgcmF3IGV2ZW50IGZvciB1bmhhbmRsZWQgdHlwZXNcclxuICAgICAgICB0aGlzLmVtaXQoJ3JhdycsIHsgdDogZXZlbnRUeXBlLCBkOiBkYXRhIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIFJlYWR5IGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVSZWFkeShkYXRhOiBSZWFkeUV2ZW50RGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25faWQ7XHJcbiAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcihkYXRhLnVzZXIpO1xyXG4gICAgLy8gSGFuZGxlIGJvdGggc3RyaW5nIGFuZCBudW1iZXIgYXBwbGljYXRpb24gSURzXHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBkYXRhLmFwcGxpY2F0aW9uPy5pZCA/IFN0cmluZyhkYXRhLmFwcGxpY2F0aW9uLmlkKSA6IG51bGw7XHJcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvbklkKSB7XHJcbiAgICAgIHRoaXMucmVzdC5zZXRBcHBsaWNhdGlvbklkKHRoaXMuYXBwbGljYXRpb25JZCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENhY2hlIGd1aWxkcyAoYXMgdW5hdmFpbGFibGUgaW5pdGlhbGx5KVxyXG4gICAgaWYgKGRhdGEuZ3VpbGRzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgZ3VpbGQgb2YgZGF0YS5ndWlsZHMpIHtcclxuICAgICAgICB0aGlzLmd1aWxkcy5zZXQoU3RyaW5nKGd1aWxkLmlkKSwgbmV3IEd1aWxkKHRoaXMsIGd1aWxkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gU2V0dXAgdm9pY2UgYWRhcHRlcnMgZm9yIGVhY2ggZ3VpbGRcclxuICAgIHRoaXMuc2V0dXBWb2ljZUFkYXB0ZXJzKCk7XHJcbiAgICBcclxuICAgIGNvbnNvbGUubG9nKGDinIUgQm90IGhhesSxciEgVXNlcjogJHt0aGlzLnVzZXIudXNlcm5hbWV9ICgke3RoaXMudXNlci5pZH0pLCBBcHA6ICR7dGhpcy5hcHBsaWNhdGlvbklkfWApO1xyXG4gICAgdGhpcy5lbWl0KCdyZWFkeScsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dXAgdm9pY2UgYWRhcHRlcnMgZm9yIGFsbCBndWlsZHNcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwVm9pY2VBZGFwdGVycygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgW2d1aWxkSWRdIG9mIHRoaXMuZ3VpbGRzKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVm9pY2VBZGFwdGVyKGd1aWxkSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgdm9pY2UgYWRhcHRlciBmb3IgYSBndWlsZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlVm9pY2VBZGFwdGVyKGd1aWxkSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYWRhcHRlcjogVm9pY2VBZGFwdGVyQ3JlYXRvciA9IChtZXRob2RzKSA9PiB7XHJcbiAgICAgIC8vIFN0b3JlIGhhbmRsZXJzIGZvciB0aGlzIGd1aWxkXHJcbiAgICAgIHRoaXMudm9pY2VTdGF0ZUhhbmRsZXJzLnNldChndWlsZElkLCBtZXRob2RzLm9uVm9pY2VTdGF0ZVVwZGF0ZSk7XHJcbiAgICAgIHRoaXMudm9pY2VTZXJ2ZXJIYW5kbGVycy5zZXQoZ3VpbGRJZCwgbWV0aG9kcy5vblZvaWNlU2VydmVyVXBkYXRlKTtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc2VuZFBheWxvYWQ6IChwYXlsb2FkKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy53cz8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcclxuICAgICAgICAgICAgdGhpcy53cy5zZW5kKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZXN0cm95OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZvaWNlU3RhdGVIYW5kbGVycy5kZWxldGUoZ3VpbGRJZCk7XHJcbiAgICAgICAgICB0aGlzLnZvaWNlU2VydmVySGFuZGxlcnMuZGVsZXRlKGd1aWxkSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgICBcclxuICAgIHRoaXMudm9pY2UuYWRhcHRlcnMuc2V0KGd1aWxkSWQsIGFkYXB0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIEd1aWxkIENyZWF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlR3VpbGRDcmVhdGUoZGF0YTogQVBJR3VpbGQpOiB2b2lkIHtcclxuICAgIGxldCBndWlsZCA9IHRoaXMuZ3VpbGRzLmdldChkYXRhLmlkKTtcclxuICAgIFxyXG4gICAgaWYgKGd1aWxkKSB7XHJcbiAgICAgIGd1aWxkLl9wYXRjaChkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGd1aWxkID0gbmV3IEd1aWxkKHRoaXMsIGRhdGEpO1xyXG4gICAgICB0aGlzLmd1aWxkcy5zZXQoZGF0YS5pZCwgZ3VpbGQpO1xyXG4gICAgICB0aGlzLmNyZWF0ZVZvaWNlQWRhcHRlcihkYXRhLmlkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCdndWlsZENyZWF0ZScsIGd1aWxkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBHdWlsZCBVcGRhdGUgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUd1aWxkVXBkYXRlKGRhdGE6IEFQSUd1aWxkKTogdm9pZCB7XHJcbiAgICBjb25zdCBndWlsZCA9IHRoaXMuZ3VpbGRzLmdldChkYXRhLmlkKTtcclxuICAgIGlmIChndWlsZCkge1xyXG4gICAgICBndWlsZC5fcGF0Y2goZGF0YSk7XHJcbiAgICAgIHRoaXMuZW1pdCgnZ3VpbGRVcGRhdGUnLCBndWlsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgR3VpbGQgRGVsZXRlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVHdWlsZERlbGV0ZShkYXRhOiB7IGlkOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3VpbGQgPSB0aGlzLmd1aWxkcy5nZXQoZGF0YS5pZCk7XHJcbiAgICBpZiAoZ3VpbGQpIHtcclxuICAgICAgdGhpcy5ndWlsZHMuZGVsZXRlKGRhdGEuaWQpO1xyXG4gICAgICB0aGlzLnZvaWNlLmFkYXB0ZXJzLmRlbGV0ZShkYXRhLmlkKTtcclxuICAgICAgdGhpcy5lbWl0KCdndWlsZERlbGV0ZScsIGd1aWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBNZXNzYWdlIENyZWF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZUNyZWF0ZShkYXRhOiBBUElNZXNzYWdlKTogdm9pZCB7XHJcbiAgICAvLyBCYWNrZW5kIHNlbmRzIHVzZXJfaWQgc2VwYXJhdGVseSwgbWFwIGl0IHRvIGF1dGhvci5pZCBmb3IgY29tcGF0aWJpbGl0eVxyXG4gICAgaWYgKGRhdGEudXNlcl9pZCAmJiBkYXRhLmF1dGhvciAmJiAhZGF0YS5hdXRob3IuaWQpIHtcclxuICAgICAgKGRhdGEuYXV0aG9yIGFzIGFueSkuaWQgPSBkYXRhLnVzZXJfaWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENhY2hlIHRoZSBhdXRob3JcclxuICAgIGlmIChkYXRhLmF1dGhvcikge1xyXG4gICAgICBjb25zdCB1c2VyID0gbmV3IFVzZXIoZGF0YS5hdXRob3IpO1xyXG4gICAgICB0aGlzLnVzZXJzLnNldCh1c2VyLmlkLCB1c2VyKTtcclxuICAgICAgLy8gQWxzbyBjYWNoZSBpbiBSRVNUIGZvciBtZW50aW9uIHJlc29sdXRpb25cclxuICAgICAgdGhpcy5yZXN0LmNhY2hlVXNlcihkYXRhLmF1dGhvcik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZSh0aGlzLCBkYXRhKTtcclxuXHJcbiAgICAvLyBNYXJrIG1lc3NhZ2UgYXMgZnJvbSBib3QgaWYgYXV0aG9yIElEIG1hdGNoZXMgdGhlIGJvdCdzIG93biB1c2VyIElEXHJcbiAgICBpZiAodGhpcy51c2VyICYmIFN0cmluZyhtZXNzYWdlLmF1dGhvci5pZCkgPT09IFN0cmluZyh0aGlzLnVzZXIuaWQpKSB7XHJcbiAgICAgIChtZXNzYWdlLmF1dGhvciBhcyBhbnkpLmJvdCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0KCdtZXNzYWdlQ3JlYXRlJywgbWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgSW50ZXJhY3Rpb24gQ3JlYXRlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZShkYXRhOiBBUElJbnRlcmFjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1tERUJVR10gaGFuZGxlSW50ZXJhY3Rpb25DcmVhdGUgY2FsbGVkIHdpdGg6JywgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xyXG4gICAgXHJcbiAgICAvLyBDYWNoZSB0aGUgdXNlclxyXG4gICAgY29uc3QgdXNlckRhdGEgPSBkYXRhLm1lbWJlcj8udXNlciB8fCBkYXRhLnVzZXI7XHJcbiAgICBpZiAodXNlckRhdGEpIHtcclxuICAgICAgY29uc3QgdXNlciA9IG5ldyBVc2VyKHVzZXJEYXRhKTtcclxuICAgICAgdGhpcy51c2Vycy5zZXQodXNlci5pZCwgdXNlcik7XHJcbiAgICAgIHRoaXMucmVzdC5jYWNoZVVzZXIodXNlckRhdGEpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBpbnRlcmFjdGlvbiA9IGNyZWF0ZUludGVyYWN0aW9uKHRoaXMsIGRhdGEpO1xyXG4gICAgY29uc29sZS5sb2coJ1tERUJVR10gQ3JlYXRlZCBpbnRlcmFjdGlvbiB0eXBlOicsIGludGVyYWN0aW9uLmNvbnN0cnVjdG9yLm5hbWUsICdjdXN0b21JZDonLCAoaW50ZXJhY3Rpb24gYXMgYW55KS5jdXN0b21JZCk7XHJcbiAgICB0aGlzLmVtaXQoJ2ludGVyYWN0aW9uQ3JlYXRlJywgaW50ZXJhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIFZvaWNlIFN0YXRlIFVwZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlVm9pY2VTdGF0ZVVwZGF0ZShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGd1aWxkSWQgPSBkYXRhLmd1aWxkX2lkO1xyXG4gICAgXHJcbiAgICAvLyBGb3J3YXJkIHRvIHZvaWNlIGFkYXB0ZXIgaWYgZXhpc3RzXHJcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy52b2ljZVN0YXRlSGFuZGxlcnMuZ2V0KGd1aWxkSWQpO1xyXG4gICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgaGFuZGxlcihkYXRhKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCd2b2ljZVN0YXRlVXBkYXRlJywgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgVm9pY2UgU2VydmVyIFVwZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlVm9pY2VTZXJ2ZXJVcGRhdGUoZGF0YTogQVBJVm9pY2VTZXJ2ZXJVcGRhdGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGd1aWxkSWQgPSBkYXRhLmd1aWxkX2lkO1xyXG4gICAgXHJcbiAgICAvLyBGb3J3YXJkIHRvIHZvaWNlIGFkYXB0ZXIgaWYgZXhpc3RzXHJcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy52b2ljZVNlcnZlckhhbmRsZXJzLmdldChndWlsZElkKTtcclxuICAgIGlmIChoYW5kbGVyKSB7XHJcbiAgICAgIGhhbmRsZXIoe1xyXG4gICAgICAgIHRva2VuOiBkYXRhLnRva2VuLFxyXG4gICAgICAgIGVuZHBvaW50OiBkYXRhLmVuZHBvaW50LFxyXG4gICAgICAgIHJvb206IGRhdGEucm9vbVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5lbWl0KCd2b2ljZVNlcnZlclVwZGF0ZScsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBJZGVudGlmeSBwYXlsb2FkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpZGVudGlmeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IEdhdGV3YXlQYXlsb2FkID0ge1xyXG4gICAgICBvcDogR2F0ZXdheU9wY29kZXMuSWRlbnRpZnksXHJcbiAgICAgIGQ6IHtcclxuICAgICAgICB0b2tlbjogYEJvdCAke3RoaXMudG9rZW59YCxcclxuICAgICAgICBpbnRlbnRzOiB0aGlzLmdldEludGVudHNWYWx1ZSgpLFxyXG4gICAgICAgIHNoYXJkOiB0aGlzLm9wdGlvbnMuc2hhcmRzIHx8IFswLCAxXVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0aGlzLnNlbmQocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBoZWFydGJlYXRcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0SGVhcnRiZWF0KGludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VuZCh7XHJcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdCxcclxuICAgICAgICBkOiB0aGlzLnNlcXVlbmNlXHJcbiAgICAgIH0pO1xyXG4gICAgfSwgaW50ZXJ2YWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBwYXlsb2FkIHRvIGdhdGV3YXlcclxuICAgKi9cclxuICBwcml2YXRlIHNlbmQocGF5bG9hZDogR2F0ZXdheVBheWxvYWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICB0aGlzLndzLnNlbmQoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYW51cCBvbiBkaXNjb25uZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhlYXJ0YmVhdEludGVydmFsKTtcclxuICAgICAgdGhpcy5oZWFydGJlYXRJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXN0cm95IHRoZSBjbGllbnRcclxuICAgKi9cclxuICBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbG9naW5TdGF0ZSA9ICdpZGxlJztcclxuICAgIHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzID0gdGhpcy5fbWF4UmVjb25uZWN0QXR0ZW1wdHMgKyAxOyAvLyBQcmV2ZW50IHJlY29ubmVjdFxyXG4gICAgdGhpcy5jbGVhbnVwKCk7XHJcbiAgICB0aGlzLndzPy5jbG9zZSgxMDAwKTtcclxuICAgIHRoaXMud3MgPSBudWxsO1xyXG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFJlLWV4cG9ydCBmb3IgY29udmVuaWVuY2VcclxuZXhwb3J0IHsgR2F0ZXdheUludGVudEJpdHMgfTtcclxuIl19
@@ -65,4 +65,4 @@ class ActionRowBuilder {
65
65
  }
66
66
  exports.ActionRowBuilder = ActionRowBuilder;
67
67
  exports.default = ActionRowBuilder;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWN0aW9uUm93QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9BY3Rpb25Sb3dCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBWUg7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjtJQUNYLElBQUksQ0FBK0I7SUFFbkQsWUFBWSxPQUE4QixFQUFFO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDVixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRyxJQUFJLENBQUMsVUFBa0IsSUFBSSxFQUFFO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEdBQUcsVUFBbUM7UUFDbEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFjLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxHQUFHLFVBQW1DO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxHQUFHLFVBQW1DO1FBQ3pGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQU0sQ0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBa0IsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBa0MsS0FBa0Q7UUFDN0YsT0FBTyxJQUFJLGdCQUFnQixDQUFJLEtBQUssWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsQ0FBQztDQUNGO0FBOURELDRDQThEQztBQUVELGtCQUFlLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEFjdGlvblJvd0J1aWxkZXIgZm9yIGNyZWF0aW5nIGNvbXBvbmVudCByb3dzXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQVBJQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9CdXR0b25CdWlsZGVyJztcclxuaW1wb3J0IHsgQVBJU2VsZWN0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vU2VsZWN0TWVudUJ1aWxkZXInO1xyXG5cclxuZXhwb3J0IHR5cGUgQVBJQWN0aW9uUm93Q29tcG9uZW50ID0gQVBJQnV0dG9uQ29tcG9uZW50IHwgQVBJU2VsZWN0TWVudUNvbXBvbmVudDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVBJQWN0aW9uUm93IHtcclxuICB0eXBlOiAxO1xyXG4gIGNvbXBvbmVudHM6IEFQSUFjdGlvblJvd0NvbXBvbmVudFtdO1xyXG59XHJcblxyXG4vKipcclxuICogQSBidWlsZGVyIGZvciBjcmVhdGluZyBhY3Rpb24gcm93c1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFjdGlvblJvd0J1aWxkZXI8VCBleHRlbmRzIEFQSUFjdGlvblJvd0NvbXBvbmVudCA9IEFQSUFjdGlvblJvd0NvbXBvbmVudD4ge1xyXG4gIHB1YmxpYyByZWFkb25seSBkYXRhOiB7IHR5cGU6IDE7IGNvbXBvbmVudHM6IFRbXSB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRhOiBQYXJ0aWFsPEFQSUFjdGlvblJvdz4gPSB7fSkge1xyXG4gICAgdGhpcy5kYXRhID0geyBcclxuICAgICAgdHlwZTogMSwgXHJcbiAgICAgIGNvbXBvbmVudHM6IChkYXRhLmNvbXBvbmVudHMgYXMgVFtdKSB8fCBbXSBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGNvbXBvbmVudHMgdG8gdGhpcyBhY3Rpb24gcm93XHJcbiAgICogQHBhcmFtIGNvbXBvbmVudHMgVGhlIGNvbXBvbmVudHMgdG8gYWRkXHJcbiAgICovXHJcbiAgYWRkQ29tcG9uZW50cyguLi5jb21wb25lbnRzOiAoVCB8IHsgdG9KU09OKCk6IFQgfSlbXSk6IHRoaXMge1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG4gICAgICBpZiAoJ3RvSlNPTicgaW4gY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmNvbXBvbmVudHMucHVzaChjb21wb25lbnQudG9KU09OKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YS5jb21wb25lbnRzLnB1c2goY29tcG9uZW50IGFzIFQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudHMgb2YgdGhpcyBhY3Rpb24gcm93XHJcbiAgICogQHBhcmFtIGNvbXBvbmVudHMgVGhlIGNvbXBvbmVudHMgdG8gc2V0XHJcbiAgICovXHJcbiAgc2V0Q29tcG9uZW50cyguLi5jb21wb25lbnRzOiAoVCB8IHsgdG9KU09OKCk6IFQgfSlbXSk6IHRoaXMge1xyXG4gICAgdGhpcy5kYXRhLmNvbXBvbmVudHMgPSBbXTtcclxuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudHMoLi4uY29tcG9uZW50cyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzLCByZXBsYWNlcywgb3IgaW5zZXJ0cyBjb21wb25lbnRzXHJcbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBzdGFydCBhdFxyXG4gICAqIEBwYXJhbSBkZWxldGVDb3VudCBUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgdG8gcmVtb3ZlXHJcbiAgICogQHBhcmFtIGNvbXBvbmVudHMgVGhlIGNvbXBvbmVudHMgdG8gaW5zZXJ0XHJcbiAgICovXHJcbiAgc3BsaWNlQ29tcG9uZW50cyhpbmRleDogbnVtYmVyLCBkZWxldGVDb3VudDogbnVtYmVyLCAuLi5jb21wb25lbnRzOiAoVCB8IHsgdG9KU09OKCk6IFQgfSlbXSk6IHRoaXMge1xyXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBjb21wb25lbnRzLm1hcChjID0+IFxyXG4gICAgICAndG9KU09OJyBpbiBjICYmIHR5cGVvZiBjLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJyA/IGMudG9KU09OKCkgOiBjIGFzIFRcclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGEuY29tcG9uZW50cy5zcGxpY2UoaW5kZXgsIGRlbGV0ZUNvdW50LCAuLi5yZXNvbHZlZCk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhY3Rpb24gcm93XHJcbiAgICovXHJcbiAgdG9KU09OKCk6IEFQSUFjdGlvblJvdyB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLmRhdGEgfSBhcyBBUElBY3Rpb25Sb3c7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IGFjdGlvbiByb3cgYnVpbGRlciBmcm9tIGV4aXN0aW5nIGRhdGFcclxuICAgKiBAcGFyYW0gb3RoZXIgVGhlIGFjdGlvbiByb3cgZGF0YSB0byBjb3B5XHJcbiAgICovXHJcbiAgc3RhdGljIGZyb208VCBleHRlbmRzIEFQSUFjdGlvblJvd0NvbXBvbmVudD4ob3RoZXI6IFBhcnRpYWw8QVBJQWN0aW9uUm93PiB8IEFjdGlvblJvd0J1aWxkZXI8VD4pOiBBY3Rpb25Sb3dCdWlsZGVyPFQ+IHtcclxuICAgIHJldHVybiBuZXcgQWN0aW9uUm93QnVpbGRlcjxUPihvdGhlciBpbnN0YW5jZW9mIEFjdGlvblJvd0J1aWxkZXIgPyBvdGhlci5kYXRhIDogb3RoZXIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQWN0aW9uUm93QnVpbGRlcjtcclxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWN0aW9uUm93QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9BY3Rpb25Sb3dCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBWUg7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjtJQUNYLElBQUksQ0FBK0I7SUFFbkQsWUFBWSxPQUE4QixFQUFFO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDVixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRyxJQUFJLENBQUMsVUFBa0IsSUFBSSxFQUFFO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEdBQUcsVUFBbUM7UUFDbEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFjLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxHQUFHLFVBQW1DO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxHQUFHLFVBQW1DO1FBQ3pGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQU0sQ0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBa0IsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBa0MsS0FBa0Q7UUFDN0YsT0FBTyxJQUFJLGdCQUFnQixDQUFJLEtBQUssWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsQ0FBQztDQUNGO0FBOURELDRDQThEQztBQUVELGtCQUFlLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBY3Rpb25Sb3dCdWlsZGVyIGZvciBjcmVhdGluZyBjb21wb25lbnQgcm93c1xuICovXG5cbmltcG9ydCB7IEFQSUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vQnV0dG9uQnVpbGRlcic7XG5pbXBvcnQgeyBBUElTZWxlY3RNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9TZWxlY3RNZW51QnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIEFQSUFjdGlvblJvd0NvbXBvbmVudCA9IEFQSUJ1dHRvbkNvbXBvbmVudCB8IEFQSVNlbGVjdE1lbnVDb21wb25lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVBJQWN0aW9uUm93IHtcbiAgdHlwZTogMTtcbiAgY29tcG9uZW50czogQVBJQWN0aW9uUm93Q29tcG9uZW50W107XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGZvciBjcmVhdGluZyBhY3Rpb24gcm93c1xuICovXG5leHBvcnQgY2xhc3MgQWN0aW9uUm93QnVpbGRlcjxUIGV4dGVuZHMgQVBJQWN0aW9uUm93Q29tcG9uZW50ID0gQVBJQWN0aW9uUm93Q29tcG9uZW50PiB7XG4gIHB1YmxpYyByZWFkb25seSBkYXRhOiB7IHR5cGU6IDE7IGNvbXBvbmVudHM6IFRbXSB9O1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IFBhcnRpYWw8QVBJQWN0aW9uUm93PiA9IHt9KSB7XG4gICAgdGhpcy5kYXRhID0geyBcbiAgICAgIHR5cGU6IDEsIFxuICAgICAgY29tcG9uZW50czogKGRhdGEuY29tcG9uZW50cyBhcyBUW10pIHx8IFtdIFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBjb21wb25lbnRzIHRvIHRoaXMgYWN0aW9uIHJvd1xuICAgKiBAcGFyYW0gY29tcG9uZW50cyBUaGUgY29tcG9uZW50cyB0byBhZGRcbiAgICovXG4gIGFkZENvbXBvbmVudHMoLi4uY29tcG9uZW50czogKFQgfCB7IHRvSlNPTigpOiBUIH0pW10pOiB0aGlzIHtcbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XG4gICAgICBpZiAoJ3RvSlNPTicgaW4gY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuZGF0YS5jb21wb25lbnRzLnB1c2goY29tcG9uZW50LnRvSlNPTigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YS5jb21wb25lbnRzLnB1c2goY29tcG9uZW50IGFzIFQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnRzIG9mIHRoaXMgYWN0aW9uIHJvd1xuICAgKiBAcGFyYW0gY29tcG9uZW50cyBUaGUgY29tcG9uZW50cyB0byBzZXRcbiAgICovXG4gIHNldENvbXBvbmVudHMoLi4uY29tcG9uZW50czogKFQgfCB7IHRvSlNPTigpOiBUIH0pW10pOiB0aGlzIHtcbiAgICB0aGlzLmRhdGEuY29tcG9uZW50cyA9IFtdO1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudHMoLi4uY29tcG9uZW50cyk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcywgcmVwbGFjZXMsIG9yIGluc2VydHMgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIHN0YXJ0IGF0XG4gICAqIEBwYXJhbSBkZWxldGVDb3VudCBUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgdG8gcmVtb3ZlXG4gICAqIEBwYXJhbSBjb21wb25lbnRzIFRoZSBjb21wb25lbnRzIHRvIGluc2VydFxuICAgKi9cbiAgc3BsaWNlQ29tcG9uZW50cyhpbmRleDogbnVtYmVyLCBkZWxldGVDb3VudDogbnVtYmVyLCAuLi5jb21wb25lbnRzOiAoVCB8IHsgdG9KU09OKCk6IFQgfSlbXSk6IHRoaXMge1xuICAgIGNvbnN0IHJlc29sdmVkID0gY29tcG9uZW50cy5tYXAoYyA9PiBcbiAgICAgICd0b0pTT04nIGluIGMgJiYgdHlwZW9mIGMudG9KU09OID09PSAnZnVuY3Rpb24nID8gYy50b0pTT04oKSA6IGMgYXMgVFxuICAgICk7XG4gICAgdGhpcy5kYXRhLmNvbXBvbmVudHMuc3BsaWNlKGluZGV4LCBkZWxldGVDb3VudCwgLi4ucmVzb2x2ZWQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhY3Rpb24gcm93XG4gICAqL1xuICB0b0pTT04oKTogQVBJQWN0aW9uUm93IHtcbiAgICByZXR1cm4geyAuLi50aGlzLmRhdGEgfSBhcyBBUElBY3Rpb25Sb3c7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhY3Rpb24gcm93IGJ1aWxkZXIgZnJvbSBleGlzdGluZyBkYXRhXG4gICAqIEBwYXJhbSBvdGhlciBUaGUgYWN0aW9uIHJvdyBkYXRhIHRvIGNvcHlcbiAgICovXG4gIHN0YXRpYyBmcm9tPFQgZXh0ZW5kcyBBUElBY3Rpb25Sb3dDb21wb25lbnQ+KG90aGVyOiBQYXJ0aWFsPEFQSUFjdGlvblJvdz4gfCBBY3Rpb25Sb3dCdWlsZGVyPFQ+KTogQWN0aW9uUm93QnVpbGRlcjxUPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25Sb3dCdWlsZGVyPFQ+KG90aGVyIGluc3RhbmNlb2YgQWN0aW9uUm93QnVpbGRlciA/IG90aGVyLmRhdGEgOiBvdGhlcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQWN0aW9uUm93QnVpbGRlcjtcbiJdfQ==
@@ -93,4 +93,4 @@ class ButtonBuilder {
93
93
  }
94
94
  exports.ButtonBuilder = ButtonBuilder;
95
95
  exports.default = ButtonBuilder;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9CdXR0b25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7O0dBRUc7QUFDSCxJQUFZLFdBTVg7QUFORCxXQUFZLFdBQVc7SUFDckIsbURBQVcsQ0FBQTtJQUNYLHVEQUFhLENBQUE7SUFDYixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7QUFDVixDQUFDLEVBTlcsV0FBVywyQkFBWCxXQUFXLFFBTXRCO0FBWUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDUixJQUFJLENBQThCO0lBRWxELFlBQVksT0FBb0MsRUFBRTtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBa0I7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFrRTtRQUN6RSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBd0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFrRDtRQUM1RCxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Q0FDRjtBQWhGRCxzQ0FnRkM7QUFFRCxrQkFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQnV0dG9uQnVpbGRlciBmb3IgY3JlYXRpbmcgaW50ZXJhY3RpdmUgYnV0dG9uc1xyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gc3R5bGVzXHJcbiAqL1xyXG5leHBvcnQgZW51bSBCdXR0b25TdHlsZSB7XHJcbiAgUHJpbWFyeSA9IDEsXHJcbiAgU2Vjb25kYXJ5ID0gMixcclxuICBTdWNjZXNzID0gMyxcclxuICBEYW5nZXIgPSA0LFxyXG4gIExpbmsgPSA1LFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFQSUJ1dHRvbkNvbXBvbmVudCB7XHJcbiAgdHlwZTogMjtcclxuICBzdHlsZTogQnV0dG9uU3R5bGU7XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgZW1vamk/OiB7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBhbmltYXRlZD86IGJvb2xlYW4gfTtcclxuICBjdXN0b21faWQ/OiBzdHJpbmc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgYnVpbGRlciBmb3IgY3JlYXRpbmcgYnV0dG9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkJ1aWxkZXIge1xyXG4gIHB1YmxpYyByZWFkb25seSBkYXRhOiBQYXJ0aWFsPEFQSUJ1dHRvbkNvbXBvbmVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGE6IFBhcnRpYWw8QVBJQnV0dG9uQ29tcG9uZW50PiA9IHt9KSB7XHJcbiAgICB0aGlzLmRhdGEgPSB7IHR5cGU6IDIsIC4uLmRhdGEgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGN1c3RvbSBJRCBvZiB0aGlzIGJ1dHRvblxyXG4gICAqIEBwYXJhbSBjdXN0b21JZCBUaGUgY3VzdG9tIElEXHJcbiAgICovXHJcbiAgc2V0Q3VzdG9tSWQoY3VzdG9tSWQ6IHN0cmluZyk6IHRoaXMge1xyXG4gICAgdGhpcy5kYXRhLmN1c3RvbV9pZCA9IGN1c3RvbUlkO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBsYWJlbCBvZiB0aGlzIGJ1dHRvblxyXG4gICAqIEBwYXJhbSBsYWJlbCBUaGUgbGFiZWxcclxuICAgKi9cclxuICBzZXRMYWJlbChsYWJlbDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEubGFiZWwgPSBsYWJlbDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc3R5bGUgb2YgdGhpcyBidXR0b25cclxuICAgKiBAcGFyYW0gc3R5bGUgVGhlIHN0eWxlXHJcbiAgICovXHJcbiAgc2V0U3R5bGUoc3R5bGU6IEJ1dHRvblN0eWxlKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEuc3R5bGUgPSBzdHlsZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZW1vamkgb2YgdGhpcyBidXR0b25cclxuICAgKiBAcGFyYW0gZW1vamkgVGhlIGVtb2ppXHJcbiAgICovXHJcbiAgc2V0RW1vamkoZW1vamk6IHsgaWQ/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGFuaW1hdGVkPzogYm9vbGVhbiB9IHwgc3RyaW5nKTogdGhpcyB7XHJcbiAgICBpZiAodHlwZW9mIGVtb2ppID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBVbmljb2RlIGVtb2ppXHJcbiAgICAgIHRoaXMuZGF0YS5lbW9qaSA9IHsgbmFtZTogZW1vamkgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YS5lbW9qaSA9IGVtb2ppO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBVUkwgb2YgdGhpcyBidXR0b24gKG9ubHkgZm9yIExpbmsgc3R5bGUpXHJcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMXHJcbiAgICovXHJcbiAgc2V0VVJMKHVybDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEudXJsID0gdXJsO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHdoZXRoZXIgdGhpcyBidXR0b24gaXMgZGlzYWJsZWRcclxuICAgKiBAcGFyYW0gZGlzYWJsZWQgV2hldGhlciB0aGUgYnV0dG9uIGlzIGRpc2FibGVkXHJcbiAgICovXHJcbiAgc2V0RGlzYWJsZWQoZGlzYWJsZWQgPSB0cnVlKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGJ1dHRvblxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBBUElCdXR0b25Db21wb25lbnQge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5kYXRhIH0gYXMgQVBJQnV0dG9uQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBidXR0b24gYnVpbGRlciBmcm9tIGV4aXN0aW5nIGRhdGFcclxuICAgKiBAcGFyYW0gb3RoZXIgVGhlIGJ1dHRvbiBkYXRhIHRvIGNvcHlcclxuICAgKi9cclxuICBzdGF0aWMgZnJvbShvdGhlcjogUGFydGlhbDxBUElCdXR0b25Db21wb25lbnQ+IHwgQnV0dG9uQnVpbGRlcik6IEJ1dHRvbkJ1aWxkZXIge1xyXG4gICAgcmV0dXJuIG5ldyBCdXR0b25CdWlsZGVyKG90aGVyIGluc3RhbmNlb2YgQnV0dG9uQnVpbGRlciA/IG90aGVyLmRhdGEgOiBvdGhlcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCdXR0b25CdWlsZGVyO1xyXG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9CdXR0b25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7O0dBRUc7QUFDSCxJQUFZLFdBTVg7QUFORCxXQUFZLFdBQVc7SUFDckIsbURBQVcsQ0FBQTtJQUNYLHVEQUFhLENBQUE7SUFDYixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7QUFDVixDQUFDLEVBTlcsV0FBVywyQkFBWCxXQUFXLFFBTXRCO0FBWUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDUixJQUFJLENBQThCO0lBRWxELFlBQVksT0FBb0MsRUFBRTtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBa0I7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFrRTtRQUN6RSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBd0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFrRDtRQUM1RCxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Q0FDRjtBQWhGRCxzQ0FnRkM7QUFFRCxrQkFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ1dHRvbkJ1aWxkZXIgZm9yIGNyZWF0aW5nIGludGVyYWN0aXZlIGJ1dHRvbnNcbiAqL1xuXG4vKipcbiAqIEJ1dHRvbiBzdHlsZXNcbiAqL1xuZXhwb3J0IGVudW0gQnV0dG9uU3R5bGUge1xuICBQcmltYXJ5ID0gMSxcbiAgU2Vjb25kYXJ5ID0gMixcbiAgU3VjY2VzcyA9IDMsXG4gIERhbmdlciA9IDQsXG4gIExpbmsgPSA1LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFQSUJ1dHRvbkNvbXBvbmVudCB7XG4gIHR5cGU6IDI7XG4gIHN0eWxlOiBCdXR0b25TdHlsZTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGVtb2ppPzogeyBpZD86IHN0cmluZzsgbmFtZT86IHN0cmluZzsgYW5pbWF0ZWQ/OiBib29sZWFuIH07XG4gIGN1c3RvbV9pZD86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGZvciBjcmVhdGluZyBidXR0b25zXG4gKi9cbmV4cG9ydCBjbGFzcyBCdXR0b25CdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGE6IFBhcnRpYWw8QVBJQnV0dG9uQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3RvcihkYXRhOiBQYXJ0aWFsPEFQSUJ1dHRvbkNvbXBvbmVudD4gPSB7fSkge1xuICAgIHRoaXMuZGF0YSA9IHsgdHlwZTogMiwgLi4uZGF0YSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1c3RvbSBJRCBvZiB0aGlzIGJ1dHRvblxuICAgKiBAcGFyYW0gY3VzdG9tSWQgVGhlIGN1c3RvbSBJRFxuICAgKi9cbiAgc2V0Q3VzdG9tSWQoY3VzdG9tSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZGF0YS5jdXN0b21faWQgPSBjdXN0b21JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsYWJlbCBvZiB0aGlzIGJ1dHRvblxuICAgKiBAcGFyYW0gbGFiZWwgVGhlIGxhYmVsXG4gICAqL1xuICBzZXRMYWJlbChsYWJlbDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLmxhYmVsID0gbGFiZWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3R5bGUgb2YgdGhpcyBidXR0b25cbiAgICogQHBhcmFtIHN0eWxlIFRoZSBzdHlsZVxuICAgKi9cbiAgc2V0U3R5bGUoc3R5bGU6IEJ1dHRvblN0eWxlKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLnN0eWxlID0gc3R5bGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW1vamkgb2YgdGhpcyBidXR0b25cbiAgICogQHBhcmFtIGVtb2ppIFRoZSBlbW9qaVxuICAgKi9cbiAgc2V0RW1vamkoZW1vamk6IHsgaWQ/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGFuaW1hdGVkPzogYm9vbGVhbiB9IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKHR5cGVvZiBlbW9qaSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFVuaWNvZGUgZW1vamlcbiAgICAgIHRoaXMuZGF0YS5lbW9qaSA9IHsgbmFtZTogZW1vamkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhLmVtb2ppID0gZW1vamk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFVSTCBvZiB0aGlzIGJ1dHRvbiAob25seSBmb3IgTGluayBzdHlsZSlcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMXG4gICAqL1xuICBzZXRVUkwodXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmRhdGEudXJsID0gdXJsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgd2hldGhlciB0aGlzIGJ1dHRvbiBpcyBkaXNhYmxlZFxuICAgKiBAcGFyYW0gZGlzYWJsZWQgV2hldGhlciB0aGUgYnV0dG9uIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXREaXNhYmxlZChkaXNhYmxlZCA9IHRydWUpOiB0aGlzIHtcbiAgICB0aGlzLmRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYnV0dG9uXG4gICAqL1xuICB0b0pTT04oKTogQVBJQnV0dG9uQ29tcG9uZW50IHtcbiAgICByZXR1cm4geyAuLi50aGlzLmRhdGEgfSBhcyBBUElCdXR0b25Db21wb25lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBidXR0b24gYnVpbGRlciBmcm9tIGV4aXN0aW5nIGRhdGFcbiAgICogQHBhcmFtIG90aGVyIFRoZSBidXR0b24gZGF0YSB0byBjb3B5XG4gICAqL1xuICBzdGF0aWMgZnJvbShvdGhlcjogUGFydGlhbDxBUElCdXR0b25Db21wb25lbnQ+IHwgQnV0dG9uQnVpbGRlcik6IEJ1dHRvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgQnV0dG9uQnVpbGRlcihvdGhlciBpbnN0YW5jZW9mIEJ1dHRvbkJ1aWxkZXIgPyBvdGhlci5kYXRhIDogb3RoZXIpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkJ1aWxkZXI7XG4iXX0=
@@ -205,4 +205,4 @@ exports.Colors = {
205
205
  NotQuiteBlack: 0x23272a,
206
206
  };
207
207
  exports.default = EmbedBuilder;
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW1iZWRCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkZXJzL0VtYmVkQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQTRDSDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNQLElBQUksQ0FBVztJQUUvQixZQUFZLE9BQWlCLEVBQUU7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFvQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxXQUEwQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksU0FBUyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxHQUFrQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxZQUFrQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsS0FBSyxJQUFJO1lBQ3RDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNB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QUFFLFFBQVE7Q0FDZixDQUFDO0FBRVgsa0JBQWUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEVtYmVkQnVpbGRlciBmb3IgY3JlYXRpbmcgcmljaCBlbWJlZHNcclxuICovXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFQSUVtYmVkRmllbGQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIGlubGluZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVBJRW1iZWRBdXRob3Ige1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgaWNvbl91cmw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVBJRW1iZWRGb290ZXIge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBpY29uX3VybD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBUElFbWJlZEltYWdlIHtcclxuICB1cmw6IHN0cmluZztcclxuICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVBJRW1iZWRUaHVtYm5haWwge1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICB3aWR0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBUElFbWJlZCB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIHRpbWVzdGFtcD86IHN0cmluZztcclxuICBjb2xvcj86IG51bWJlcjtcclxuICBmb290ZXI/OiBBUElFbWJlZEZvb3RlcjtcclxuICBpbWFnZT86IEFQSUVtYmVkSW1hZ2U7XHJcbiAgdGh1bWJuYWlsPzogQVBJRW1iZWRUaHVtYm5haWw7XHJcbiAgYXV0aG9yPzogQVBJRW1iZWRBdXRob3I7XHJcbiAgZmllbGRzPzogQVBJRW1iZWRGaWVsZFtdO1xyXG59XHJcblxyXG4vKipcclxuICogQSBidWlsZGVyIGZvciBjcmVhdGluZyBlbWJlZHNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFbWJlZEJ1aWxkZXIge1xyXG4gIHB1YmxpYyByZWFkb25seSBkYXRhOiBBUElFbWJlZDtcclxuXHJcbiAgY29uc3RydWN0b3IoZGF0YTogQVBJRW1iZWQgPSB7fSkge1xyXG4gICAgdGhpcy5kYXRhID0geyAuLi5kYXRhIH07XHJcbiAgICBpZiAoZGF0YS5maWVsZHMpIHtcclxuICAgICAgdGhpcy5kYXRhLmZpZWxkcyA9IFsuLi5kYXRhLmZpZWxkc107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0aXRsZSBvZiB0aGlzIGVtYmVkXHJcbiAgICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZVxyXG4gICAqL1xyXG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEudGl0bGUgPSB0aXRsZSA/PyB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgZW1iZWRcclxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uXHJcbiAgICovXHJcbiAgc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcclxuICAgIHRoaXMuZGF0YS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uID8/IHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgVVJMIG9mIHRoaXMgZW1iZWRcclxuICAgKiBAcGFyYW0gdXJsIFRoZSBVUkxcclxuICAgKi9cclxuICBzZXRVUkwodXJsOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XHJcbiAgICB0aGlzLmRhdGEudXJsID0gdXJsID8/IHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoaXMgZW1iZWRcclxuICAgKiBAcGFyYW0gdGltZXN0YW1wIFRoZSB0aW1lc3RhbXAgb3IgZGF0ZVxyXG4gICAqL1xyXG4gIHNldFRpbWVzdGFtcCh0aW1lc3RhbXA6IERhdGUgfCBudW1iZXIgfCBudWxsID0gRGF0ZS5ub3coKSk6IHRoaXMge1xyXG4gICAgdGhpcy5kYXRhLnRpbWVzdGFtcCA9IHRpbWVzdGFtcCA9PT0gbnVsbCBcclxuICAgICAgPyB1bmRlZmluZWQgXHJcbiAgICAgIDogbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjb2xvciBvZiB0aGlzIGVtYmVkXHJcbiAgICogQHBhcmFtIGNvbG9yIFRoZSBjb2xvciAobnVtYmVyLCBoZXggc3RyaW5nLCBvciBSR0IgYXJyYXkpXHJcbiAgICovXHJcbiAgc2V0Q29sb3IoY29sb3I6IG51bWJlciB8IGAjJHtzdHJpbmd9YCB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bGwpOiB0aGlzIHtcclxuICAgIGlmIChjb2xvciA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmRhdGEuY29sb3IgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5kYXRhLmNvbG9yID0gY29sb3I7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5kYXRhLmNvbG9yID0gcGFyc2VJbnQoY29sb3IucmVwbGFjZSgnIycsICcnKSwgMTYpO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xyXG4gICAgICB0aGlzLmRhdGEuY29sb3IgPSAoY29sb3JbMF0gPDwgMTYpICsgKGNvbG9yWzFdIDw8IDgpICsgY29sb3JbMl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGZvb3RlciBvZiB0aGlzIGVtYmVkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGZvb3RlciBvcHRpb25zXHJcbiAgICovXHJcbiAgc2V0Rm9vdGVyKG9wdGlvbnM6IHsgdGV4dDogc3RyaW5nOyBpY29uVVJMPzogc3RyaW5nIH0gfCBudWxsKTogdGhpcyB7XHJcbiAgICBpZiAob3B0aW9ucyA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmRhdGEuZm9vdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhLmZvb3RlciA9IHtcclxuICAgICAgICB0ZXh0OiBvcHRpb25zLnRleHQsXHJcbiAgICAgICAgaWNvbl91cmw6IG9wdGlvbnMuaWNvblVSTCxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgaW1hZ2Ugb2YgdGhpcyBlbWJlZFxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIGltYWdlIFVSTFxyXG4gICAqL1xyXG4gIHNldEltYWdlKHVybDogc3RyaW5nIHwgbnVsbCk6IHRoaXMge1xyXG4gICAgdGhpcy5kYXRhLmltYWdlID0gdXJsID09PSBudWxsID8gdW5kZWZpbmVkIDogeyB1cmwgfTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGh1bWJuYWlsIG9mIHRoaXMgZW1iZWRcclxuICAgKiBAcGFyYW0gdXJsIFRoZSB0aHVtYm5haWwgVVJMXHJcbiAgICovXHJcbiAgc2V0VGh1bWJuYWlsKHVybDogc3RyaW5nIHwgbnVsbCk6IHRoaXMge1xyXG4gICAgdGhpcy5kYXRhLnRodW1ibmFpbCA9IHVybCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHsgdXJsIH07XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGF1dGhvciBvZiB0aGlzIGVtYmVkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGF1dGhvciBvcHRpb25zXHJcbiAgICovXHJcbiAgc2V0QXV0aG9yKG9wdGlvbnM6IHsgbmFtZTogc3RyaW5nOyBpY29uVVJMPzogc3RyaW5nOyB1cmw/OiBzdHJpbmcgfSB8IG51bGwpOiB0aGlzIHtcclxuICAgIGlmIChvcHRpb25zID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5hdXRob3IgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGEuYXV0aG9yID0ge1xyXG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcclxuICAgICAgICBpY29uX3VybDogb3B0aW9ucy5pY29uVVJMLFxyXG4gICAgICAgIHVybDogb3B0aW9ucy51cmwsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgZmllbGRzIHRvIHRoaXMgZW1iZWQgKG1heCAyNSBmaWVsZHMgcGVyIGVtYmVkKVxyXG4gICAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBhZGRcclxuICAgKi9cclxuICBhZGRGaWVsZHMoLi4uZmllbGRzOiBBUElFbWJlZEZpZWxkW10pOiB0aGlzIHtcclxuICAgIGlmICghdGhpcy5kYXRhLmZpZWxkcykgdGhpcy5kYXRhLmZpZWxkcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5maWVsZHMubGVuZ3RoICsgZmllbGRzLmxlbmd0aCA+IDI1KSB7XHJcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBFbWJlZCBmaWVsZHMgY2Fubm90IGV4Y2VlZCAyNS4gQ3VycmVudDogJHt0aGlzLmRhdGEuZmllbGRzLmxlbmd0aH0sIGFkZGluZzogJHtmaWVsZHMubGVuZ3RofWApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhLmZpZWxkcy5wdXNoKC4uLmZpZWxkcyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGZpZWxkcyBvZiB0aGlzIGVtYmVkIChtYXggMjUgZmllbGRzIHBlciBlbWJlZClcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gc2V0XHJcbiAgICovXHJcbiAgc2V0RmllbGRzKC4uLmZpZWxkczogQVBJRW1iZWRGaWVsZFtdKTogdGhpcyB7XHJcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDI1KSB7XHJcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBFbWJlZCBmaWVsZHMgY2Fubm90IGV4Y2VlZCAyNS4gUHJvdmlkZWQ6ICR7ZmllbGRzLmxlbmd0aH1gKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YS5maWVsZHMgPSBmaWVsZHM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMsIHJlcGxhY2VzLCBvciBpbnNlcnRzIGZpZWxkcyAobWF4IDI1IGZpZWxkcyBwZXIgZW1iZWQpXHJcbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBzdGFydCBhdFxyXG4gICAqIEBwYXJhbSBkZWxldGVDb3VudCBUaGUgbnVtYmVyIG9mIGZpZWxkcyB0byByZW1vdmVcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gaW5zZXJ0XHJcbiAgICovXHJcbiAgc3BsaWNlRmllbGRzKGluZGV4OiBudW1iZXIsIGRlbGV0ZUNvdW50OiBudW1iZXIsIC4uLmZpZWxkczogQVBJRW1iZWRGaWVsZFtdKTogdGhpcyB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YS5maWVsZHMpIHRoaXMuZGF0YS5maWVsZHMgPSBbXTtcclxuICAgIHRoaXMuZGF0YS5maWVsZHMuc3BsaWNlKGluZGV4LCBkZWxldGVDb3VudCwgLi4uZmllbGRzKTtcclxuICAgIGlmICh0aGlzLmRhdGEuZmllbGRzLmxlbmd0aCA+IDI1KSB7XHJcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBFbWJlZCBmaWVsZHMgY2Fubm90IGV4Y2VlZCAyNS4gUmVzdWx0IHdvdWxkIGhhdmU6ICR7dGhpcy5kYXRhLmZpZWxkcy5sZW5ndGh9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZW1iZWRcclxuICAgKi9cclxuICB0b0pTT04oKTogQVBJRW1iZWQge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5kYXRhIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IGVtYmVkIGJ1aWxkZXIgZnJvbSBleGlzdGluZyBkYXRhXHJcbiAgICogQHBhcmFtIG90aGVyIFRoZSBlbWJlZCBkYXRhIHRvIGNvcHlcclxuICAgKi9cclxuICBzdGF0aWMgZnJvbShvdGhlcjogQVBJRW1iZWQgfCBFbWJlZEJ1aWxkZXIpOiBFbWJlZEJ1aWxkZXIge1xyXG4gICAgcmV0dXJuIG5ldyBFbWJlZEJ1aWxkZXIob3RoZXIgaW5zdGFuY2VvZiBFbWJlZEJ1aWxkZXIgPyBvdGhlci5kYXRhIDogb3RoZXIpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ29sb3IgY29uc3RhbnRzIChESlMgY29tcGF0aWJpbGl0eSlcclxuZXhwb3J0IGNvbnN0IENvbG9ycyA9IHtcclxuICBEZWZhdWx0OiAweDAwMDAwMCxcclxuICBXaGl0ZTogMHhmZmZmZmYsXHJcbiAgQXF1YTogMHgxYWJjOWMsXHJcbiAgR3JlZW46IDB4NTdmMjg3LFxyXG4gIEJsdWU6IDB4MzQ5OGRiLFxyXG4gIFllbGxvdzogMHhmZWU3NWMsXHJcbiAgUHVycGxlOiAweDliNTliNixcclxuICBMdW1pbm91c1ZpdmlkUGluazogMHhlOTFlNjMsXHJcbiAgRnVjaHNpYTogMHhlYjQ1OWUsXHJcbiAgR29sZDogMHhmMWM0MGYsXHJcbiAgT3JhbmdlOiAweGU2N2UyMixcclxuICBSZWQ6IDB4ZWQ0MjQ1LFxyXG4gIEdyZXk6IDB4OTVhNWE2LFxyXG4gIE5hdnk6IDB4MzQ0OTVlLFxyXG4gIERhcmtBcXVhOiAweDExODA2YSxcclxuICBEYXJrR3JlZW46IDB4MWY4YjRjLFxyXG4gIERhcmtCbHVlOiAweDIwNjY5NCxcclxuICBEYXJrUHVycGxlOiAweDcxMzY4YSxcclxuICBEYXJrVml2aWRQaW5rOiAweGFkMTQ1NyxcclxuICBEYXJrR29sZDogMHhjMjdjMGUsXHJcbiAgRGFya09yYW5nZTogMHhhODQzMDAsXHJcbiAgRGFya1JlZDogMHg5OTJkMjIsXHJcbiAgRGFya0dyZXk6IDB4OTc5YzlmLFxyXG4gIERhcmtlckdyZXk6IDB4N2Y4YzhkLFxyXG4gIExpZ2h0R3JleTogMHhiY2MwYzAsXHJcbiAgRGFya05hdnk6IDB4MmMzZTUwLFxyXG4gIEJsdXJwbGU6IDB4NTg2NWYyLFxyXG4gIEdyZXlwbGU6IDB4OTlhYWI1LFxyXG4gIERhcmtCdXROb3RCbGFjazogMHgyYzJmMzMsXHJcbiAgTm90UXVpdGVCbGFjazogMHgyMzI3MmEsXHJcbn0gYXMgY29uc3Q7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFbWJlZEJ1aWxkZXI7XHJcbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW1iZWRCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkZXJzL0VtYmVkQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQTRDSDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNQLElBQUksQ0FBVztJQUUvQixZQUFZLE9BQWlCLEVBQUU7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFvQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxXQUEwQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksU0FBUyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxHQUFrQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxZQUFrQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsS0FBSyxJQUFJO1lBQ3RDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNB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QUFFLFFBQVE7Q0FDZixDQUFDO0FBRVgsa0JBQWUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbWJlZEJ1aWxkZXIgZm9yIGNyZWF0aW5nIHJpY2ggZW1iZWRzXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBBUElFbWJlZEZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBpbmxpbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFQSUVtYmVkQXV0aG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIGljb25fdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFQSUVtYmVkRm9vdGVyIHtcbiAgdGV4dDogc3RyaW5nO1xuICBpY29uX3VybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElFbWJlZEltYWdlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVBJRW1iZWRUaHVtYm5haWwge1xuICB1cmw6IHN0cmluZztcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElFbWJlZCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gIGNvbG9yPzogbnVtYmVyO1xuICBmb290ZXI/OiBBUElFbWJlZEZvb3RlcjtcbiAgaW1hZ2U/OiBBUElFbWJlZEltYWdlO1xuICB0aHVtYm5haWw/OiBBUElFbWJlZFRodW1ibmFpbDtcbiAgYXV0aG9yPzogQVBJRW1iZWRBdXRob3I7XG4gIGZpZWxkcz86IEFQSUVtYmVkRmllbGRbXTtcbn1cblxuLyoqXG4gKiBBIGJ1aWxkZXIgZm9yIGNyZWF0aW5nIGVtYmVkc1xuICovXG5leHBvcnQgY2xhc3MgRW1iZWRCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGE6IEFQSUVtYmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IEFQSUVtYmVkID0ge30pIHtcbiAgICB0aGlzLmRhdGEgPSB7IC4uLmRhdGEgfTtcbiAgICBpZiAoZGF0YS5maWVsZHMpIHtcbiAgICAgIHRoaXMuZGF0YS5maWVsZHMgPSBbLi4uZGF0YS5maWVsZHNdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0aXRsZSBvZiB0aGlzIGVtYmVkXG4gICAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGVcbiAgICovXG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLnRpdGxlID0gdGl0bGUgPz8gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgZW1iZWRcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvblxuICAgKi9cbiAgc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICB0aGlzLmRhdGEuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgVVJMIG9mIHRoaXMgZW1iZWRcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMXG4gICAqL1xuICBzZXRVUkwodXJsOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLnVybCA9IHVybCA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoaXMgZW1iZWRcbiAgICogQHBhcmFtIHRpbWVzdGFtcCBUaGUgdGltZXN0YW1wIG9yIGRhdGVcbiAgICovXG4gIHNldFRpbWVzdGFtcCh0aW1lc3RhbXA6IERhdGUgfCBudW1iZXIgfCBudWxsID0gRGF0ZS5ub3coKSk6IHRoaXMge1xuICAgIHRoaXMuZGF0YS50aW1lc3RhbXAgPSB0aW1lc3RhbXAgPT09IG51bGwgXG4gICAgICA/IHVuZGVmaW5lZCBcbiAgICAgIDogbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbG9yIG9mIHRoaXMgZW1iZWRcbiAgICogQHBhcmFtIGNvbG9yIFRoZSBjb2xvciAobnVtYmVyLCBoZXggc3RyaW5nLCBvciBSR0IgYXJyYXkpXG4gICAqL1xuICBzZXRDb2xvcihjb2xvcjogbnVtYmVyIHwgYCMke3N0cmluZ31gIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVsbCk6IHRoaXMge1xuICAgIGlmIChjb2xvciA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5kYXRhLmNvbG9yID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbG9yID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5kYXRhLmNvbG9yID0gY29sb3I7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmRhdGEuY29sb3IgPSBwYXJzZUludChjb2xvci5yZXBsYWNlKCcjJywgJycpLCAxNik7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgICAgdGhpcy5kYXRhLmNvbG9yID0gKGNvbG9yWzBdIDw8IDE2KSArIChjb2xvclsxXSA8PCA4KSArIGNvbG9yWzJdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmb290ZXIgb2YgdGhpcyBlbWJlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgZm9vdGVyIG9wdGlvbnNcbiAgICovXG4gIHNldEZvb3RlcihvcHRpb25zOiB7IHRleHQ6IHN0cmluZzsgaWNvblVSTD86IHN0cmluZyB9IHwgbnVsbCk6IHRoaXMge1xuICAgIGlmIChvcHRpb25zID09PSBudWxsKSB7XG4gICAgICB0aGlzLmRhdGEuZm9vdGVyID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEuZm9vdGVyID0ge1xuICAgICAgICB0ZXh0OiBvcHRpb25zLnRleHQsXG4gICAgICAgIGljb25fdXJsOiBvcHRpb25zLmljb25VUkwsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbWFnZSBvZiB0aGlzIGVtYmVkXG4gICAqIEBwYXJhbSB1cmwgVGhlIGltYWdlIFVSTFxuICAgKi9cbiAgc2V0SW1hZ2UodXJsOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLmltYWdlID0gdXJsID09PSBudWxsID8gdW5kZWZpbmVkIDogeyB1cmwgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0aHVtYm5haWwgb2YgdGhpcyBlbWJlZFxuICAgKiBAcGFyYW0gdXJsIFRoZSB0aHVtYm5haWwgVVJMXG4gICAqL1xuICBzZXRUaHVtYm5haWwodXJsOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhLnRodW1ibmFpbCA9IHVybCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHsgdXJsIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXV0aG9yIG9mIHRoaXMgZW1iZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGF1dGhvciBvcHRpb25zXG4gICAqL1xuICBzZXRBdXRob3Iob3B0aW9uczogeyBuYW1lOiBzdHJpbmc7IGljb25VUkw/OiBzdHJpbmc7IHVybD86IHN0cmluZyB9IHwgbnVsbCk6IHRoaXMge1xuICAgIGlmIChvcHRpb25zID09PSBudWxsKSB7XG4gICAgICB0aGlzLmRhdGEuYXV0aG9yID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEuYXV0aG9yID0ge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIGljb25fdXJsOiBvcHRpb25zLmljb25VUkwsXG4gICAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGZpZWxkcyB0byB0aGlzIGVtYmVkIChtYXggMjUgZmllbGRzIHBlciBlbWJlZClcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGFkZFxuICAgKi9cbiAgYWRkRmllbGRzKC4uLmZpZWxkczogQVBJRW1iZWRGaWVsZFtdKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLmRhdGEuZmllbGRzKSB0aGlzLmRhdGEuZmllbGRzID0gW107XG4gICAgaWYgKHRoaXMuZGF0YS5maWVsZHMubGVuZ3RoICsgZmllbGRzLmxlbmd0aCA+IDI1KSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRW1iZWQgZmllbGRzIGNhbm5vdCBleGNlZWQgMjUuIEN1cnJlbnQ6ICR7dGhpcy5kYXRhLmZpZWxkcy5sZW5ndGh9LCBhZGRpbmc6ICR7ZmllbGRzLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhLmZpZWxkcy5wdXNoKC4uLmZpZWxkcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZmllbGRzIG9mIHRoaXMgZW1iZWQgKG1heCAyNSBmaWVsZHMgcGVyIGVtYmVkKVxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gc2V0XG4gICAqL1xuICBzZXRGaWVsZHMoLi4uZmllbGRzOiBBUElFbWJlZEZpZWxkW10pOiB0aGlzIHtcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDI1KSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRW1iZWQgZmllbGRzIGNhbm5vdCBleGNlZWQgMjUuIFByb3ZpZGVkOiAke2ZpZWxkcy5sZW5ndGh9YCk7XG4gICAgfVxuICAgIHRoaXMuZGF0YS5maWVsZHMgPSBmaWVsZHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcywgcmVwbGFjZXMsIG9yIGluc2VydHMgZmllbGRzIChtYXggMjUgZmllbGRzIHBlciBlbWJlZClcbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBzdGFydCBhdFxuICAgKiBAcGFyYW0gZGVsZXRlQ291bnQgVGhlIG51bWJlciBvZiBmaWVsZHMgdG8gcmVtb3ZlXG4gICAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBpbnNlcnRcbiAgICovXG4gIHNwbGljZUZpZWxkcyhpbmRleDogbnVtYmVyLCBkZWxldGVDb3VudDogbnVtYmVyLCAuLi5maWVsZHM6IEFQSUVtYmVkRmllbGRbXSk6IHRoaXMge1xuICAgIGlmICghdGhpcy5kYXRhLmZpZWxkcykgdGhpcy5kYXRhLmZpZWxkcyA9IFtdO1xuICAgIHRoaXMuZGF0YS5maWVsZHMuc3BsaWNlKGluZGV4LCBkZWxldGVDb3VudCwgLi4uZmllbGRzKTtcbiAgICBpZiAodGhpcy5kYXRhLmZpZWxkcy5sZW5ndGggPiAyNSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEVtYmVkIGZpZWxkcyBjYW5ub3QgZXhjZWVkIDI1LiBSZXN1bHQgd291bGQgaGF2ZTogJHt0aGlzLmRhdGEuZmllbGRzLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZW1iZWRcbiAgICovXG4gIHRvSlNPTigpOiBBUElFbWJlZCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5kYXRhIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBlbWJlZCBidWlsZGVyIGZyb20gZXhpc3RpbmcgZGF0YVxuICAgKiBAcGFyYW0gb3RoZXIgVGhlIGVtYmVkIGRhdGEgdG8gY29weVxuICAgKi9cbiAgc3RhdGljIGZyb20ob3RoZXI6IEFQSUVtYmVkIHwgRW1iZWRCdWlsZGVyKTogRW1iZWRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEVtYmVkQnVpbGRlcihvdGhlciBpbnN0YW5jZW9mIEVtYmVkQnVpbGRlciA/IG90aGVyLmRhdGEgOiBvdGhlcik7XG4gIH1cbn1cblxuLy8gQ29sb3IgY29uc3RhbnRzIChESlMgY29tcGF0aWJpbGl0eSlcbmV4cG9ydCBjb25zdCBDb2xvcnMgPSB7XG4gIERlZmF1bHQ6IDB4MDAwMDAwLFxuICBXaGl0ZTogMHhmZmZmZmYsXG4gIEFxdWE6IDB4MWFiYzljLFxuICBHcmVlbjogMHg1N2YyODcsXG4gIEJsdWU6IDB4MzQ5OGRiLFxuICBZZWxsb3c6IDB4ZmVlNzVjLFxuICBQdXJwbGU6IDB4OWI1OWI2LFxuICBMdW1pbm91c1ZpdmlkUGluazogMHhlOTFlNjMsXG4gIEZ1Y2hzaWE6IDB4ZWI0NTllLFxuICBHb2xkOiAweGYxYzQwZixcbiAgT3JhbmdlOiAweGU2N2UyMixcbiAgUmVkOiAweGVkNDI0NSxcbiAgR3JleTogMHg5NWE1YTYsXG4gIE5hdnk6IDB4MzQ0OTVlLFxuICBEYXJrQXF1YTogMHgxMTgwNmEsXG4gIERhcmtHcmVlbjogMHgxZjhiNGMsXG4gIERhcmtCbHVlOiAweDIwNjY5NCxcbiAgRGFya1B1cnBsZTogMHg3MTM2OGEsXG4gIERhcmtWaXZpZFBpbms6IDB4YWQxNDU3LFxuICBEYXJrR29sZDogMHhjMjdjMGUsXG4gIERhcmtPcmFuZ2U6IDB4YTg0MzAwLFxuICBEYXJrUmVkOiAweDk5MmQyMixcbiAgRGFya0dyZXk6IDB4OTc5YzlmLFxuICBEYXJrZXJHcmV5OiAweDdmOGM4ZCxcbiAgTGlnaHRHcmV5OiAweGJjYzBjMCxcbiAgRGFya05hdnk6IDB4MmMzZTUwLFxuICBCbHVycGxlOiAweDU4NjVmMixcbiAgR3JleXBsZTogMHg5OWFhYjUsXG4gIERhcmtCdXROb3RCbGFjazogMHgyYzJmMzMsXG4gIE5vdFF1aXRlQmxhY2s6IDB4MjMyNzJhLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgRW1iZWRCdWlsZGVyO1xuIl19