@discordeno/rest 19.0.0-next.fd518cb → 19.0.0-next.fda3003
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/dist/cjs/index.cjs +25 -0
- package/dist/cjs/invalidBucket.cjs +87 -0
- package/dist/cjs/manager.cjs +1446 -0
- package/dist/cjs/queue.cjs +166 -0
- package/dist/cjs/routes.cjs +581 -0
- package/dist/cjs/types.cjs +6 -0
- package/dist/cjs/typings/routes.cjs +6 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/invalidBucket.js +83 -0
- package/dist/esm/manager.js +1404 -0
- package/dist/esm/queue.js +156 -0
- package/dist/esm/routes.js +571 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/typings/routes.js +3 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{invalidBucket.d.ts → types/invalidBucket.d.ts} +5 -0
- package/dist/types/invalidBucket.d.ts.map +1 -0
- package/dist/types/manager.d.ts.map +1 -0
- package/dist/{queue.d.ts → types/queue.d.ts} +12 -0
- package/dist/types/queue.d.ts.map +1 -0
- package/dist/types/routes.d.ts.map +1 -0
- package/dist/{types.d.ts → types/types.d.ts} +446 -110
- package/dist/types/types.d.ts.map +1 -0
- package/dist/{typings → types/typings}/routes.d.ts +46 -5
- package/dist/types/typings/routes.d.ts.map +1 -0
- package/package.json +29 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +0 -1
- package/dist/invalidBucket.d.ts.map +0 -1
- package/dist/invalidBucket.js +0 -82
- package/dist/invalidBucket.js.map +0 -1
- package/dist/manager.d.ts.map +0 -1
- package/dist/manager.js +0 -1102
- package/dist/manager.js.map +0 -1
- package/dist/queue.d.ts.map +0 -1
- package/dist/queue.js +0 -153
- package/dist/queue.js.map +0 -1
- package/dist/routes.d.ts.map +0 -1
- package/dist/routes.js +0 -487
- package/dist/routes.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/typings/routes.d.ts.map +0 -1
- package/dist/typings/routes.js +0 -3
- package/dist/typings/routes.js.map +0 -1
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/{manager.d.ts → types/manager.d.ts} +0 -0
- /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createRoutes", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createRoutes;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _utils = require("@discordeno/utils");
|
|
12
|
+
function createRoutes() {
|
|
13
|
+
return {
|
|
14
|
+
webhooks: {
|
|
15
|
+
id: (webhookId)=>{
|
|
16
|
+
return `/webhooks/${webhookId}`;
|
|
17
|
+
},
|
|
18
|
+
message: (webhookId, token, messageId, options)=>{
|
|
19
|
+
let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`;
|
|
20
|
+
if (options) {
|
|
21
|
+
if (options.threadId) url += `thread_id=${options.threadId}`;
|
|
22
|
+
}
|
|
23
|
+
return url;
|
|
24
|
+
},
|
|
25
|
+
original: (webhookId, token, options)=>{
|
|
26
|
+
let url = `/webhooks/${webhookId}/${token}/messages/@original?`;
|
|
27
|
+
if (options) {
|
|
28
|
+
if (options.threadId) url += `thread_id=${options.threadId}`;
|
|
29
|
+
}
|
|
30
|
+
return url;
|
|
31
|
+
},
|
|
32
|
+
webhook: (webhookId, token, options)=>{
|
|
33
|
+
let url = `/webhooks/${webhookId}/${token}?`;
|
|
34
|
+
if (options) {
|
|
35
|
+
if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`;
|
|
36
|
+
if (options.threadId) url += `thread_id=${options.threadId}`;
|
|
37
|
+
}
|
|
38
|
+
return url;
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
// Channel Endpoints
|
|
42
|
+
channels: {
|
|
43
|
+
bulk: (channelId)=>{
|
|
44
|
+
return `/channels/${channelId}/messages/bulk-delete`;
|
|
45
|
+
},
|
|
46
|
+
dm: ()=>{
|
|
47
|
+
return '/users/@me/channels';
|
|
48
|
+
},
|
|
49
|
+
dmRecipient: (channelId, userId)=>{
|
|
50
|
+
return `/channels/${channelId}/recipients/${userId}`;
|
|
51
|
+
},
|
|
52
|
+
pin: (channelId, messageId)=>{
|
|
53
|
+
return `/channels/${channelId}/pins/${messageId}`;
|
|
54
|
+
},
|
|
55
|
+
pins: (channelId)=>{
|
|
56
|
+
return `/channels/${channelId}/pins`;
|
|
57
|
+
},
|
|
58
|
+
reactions: {
|
|
59
|
+
bot: (channelId, messageId, emoji)=>{
|
|
60
|
+
return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`;
|
|
61
|
+
},
|
|
62
|
+
user: (channelId, messageId, emoji, userId)=>{
|
|
63
|
+
return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`;
|
|
64
|
+
},
|
|
65
|
+
all: (channelId, messageId)=>{
|
|
66
|
+
return `/channels/${channelId}/messages/${messageId}/reactions`;
|
|
67
|
+
},
|
|
68
|
+
emoji: (channelId, messageId, emoji, options)=>{
|
|
69
|
+
let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
|
|
70
|
+
if (options) {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
72
|
+
if (options.after) url += `after=${options.after}`;
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
74
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
75
|
+
}
|
|
76
|
+
return url;
|
|
77
|
+
},
|
|
78
|
+
message: (channelId, messageId, emoji, options)=>{
|
|
79
|
+
let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
|
|
80
|
+
if (options) {
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
82
|
+
if (options.after) url += `after=${options.after}`;
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
84
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
85
|
+
}
|
|
86
|
+
return url;
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
webhooks: (channelId)=>{
|
|
90
|
+
return `/channels/${channelId}/webhooks`;
|
|
91
|
+
},
|
|
92
|
+
channel: (channelId)=>{
|
|
93
|
+
return `/channels/${channelId}`;
|
|
94
|
+
},
|
|
95
|
+
follow: (channelId)=>{
|
|
96
|
+
return `/channels/${channelId}/followers`;
|
|
97
|
+
},
|
|
98
|
+
forum: (channelId)=>{
|
|
99
|
+
return `/channels/${channelId}/threads`;
|
|
100
|
+
},
|
|
101
|
+
invites: (channelId)=>{
|
|
102
|
+
return `/channels/${channelId}/invites`;
|
|
103
|
+
},
|
|
104
|
+
message: (channelId, messageId)=>{
|
|
105
|
+
return `/channels/${channelId}/messages/${messageId}`;
|
|
106
|
+
},
|
|
107
|
+
messages: (channelId, options)=>{
|
|
108
|
+
let url = `/channels/${channelId}/messages?`;
|
|
109
|
+
if (options) {
|
|
110
|
+
if ((0, _utils.isGetMessagesAfter)(options) && options.after) {
|
|
111
|
+
url += `after=${options.after}`;
|
|
112
|
+
}
|
|
113
|
+
if ((0, _utils.isGetMessagesBefore)(options) && options.before) {
|
|
114
|
+
url += `&before=${options.before}`;
|
|
115
|
+
}
|
|
116
|
+
if ((0, _utils.isGetMessagesAround)(options) && options.around) {
|
|
117
|
+
url += `&around=${options.around}`;
|
|
118
|
+
}
|
|
119
|
+
if ((0, _utils.isGetMessagesLimit)(options) && options.limit) {
|
|
120
|
+
url += `&limit=${options.limit}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return url;
|
|
124
|
+
},
|
|
125
|
+
overwrite: (channelId, overwriteId)=>{
|
|
126
|
+
return `/channels/${channelId}/permissions/${overwriteId}`;
|
|
127
|
+
},
|
|
128
|
+
crosspost: (channelId, messageId)=>{
|
|
129
|
+
return `/channels/${channelId}/messages/${messageId}/crosspost`;
|
|
130
|
+
},
|
|
131
|
+
stages: ()=>{
|
|
132
|
+
return '/stage-instances';
|
|
133
|
+
},
|
|
134
|
+
stage: (channelId)=>{
|
|
135
|
+
return `/stage-instances/${channelId}`;
|
|
136
|
+
},
|
|
137
|
+
// Thread Endpoints
|
|
138
|
+
threads: {
|
|
139
|
+
message: (channelId, messageId)=>{
|
|
140
|
+
return `/channels/${channelId}/messages/${messageId}/threads`;
|
|
141
|
+
},
|
|
142
|
+
all: (channelId)=>{
|
|
143
|
+
return `/channels/${channelId}/threads`;
|
|
144
|
+
},
|
|
145
|
+
active: (guildId)=>{
|
|
146
|
+
return `/guilds/${guildId}/threads/active`;
|
|
147
|
+
},
|
|
148
|
+
members: (channelId)=>{
|
|
149
|
+
return `/channels/${channelId}/thread-members`;
|
|
150
|
+
},
|
|
151
|
+
me: (channelId)=>{
|
|
152
|
+
return `/channels/${channelId}/thread-members/@me`;
|
|
153
|
+
},
|
|
154
|
+
user: (channelId, userId)=>{
|
|
155
|
+
return `/channels/${channelId}/thread-members/${userId}`;
|
|
156
|
+
},
|
|
157
|
+
archived: (channelId)=>{
|
|
158
|
+
return `/channels/${channelId}/threads/archived`;
|
|
159
|
+
},
|
|
160
|
+
public: (channelId, options)=>{
|
|
161
|
+
let url = `/channels/${channelId}/threads/archived/public?`;
|
|
162
|
+
if (options) {
|
|
163
|
+
if (options.before) {
|
|
164
|
+
url += `before=${new Date(options.before).toISOString()}`;
|
|
165
|
+
}
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
167
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
168
|
+
}
|
|
169
|
+
return url;
|
|
170
|
+
},
|
|
171
|
+
private: (channelId, options)=>{
|
|
172
|
+
let url = `/channels/${channelId}/threads/archived/private?`;
|
|
173
|
+
if (options) {
|
|
174
|
+
if (options.before) {
|
|
175
|
+
url += `before=${new Date(options.before).toISOString()}`;
|
|
176
|
+
}
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
178
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
179
|
+
}
|
|
180
|
+
return url;
|
|
181
|
+
},
|
|
182
|
+
joined: (channelId, options)=>{
|
|
183
|
+
let url = `/channels/${channelId}/users/@me/threads/archived/private?`;
|
|
184
|
+
if (options) {
|
|
185
|
+
if (options.before) {
|
|
186
|
+
url += `before=${new Date(options.before).toISOString()}`;
|
|
187
|
+
}
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
189
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
190
|
+
}
|
|
191
|
+
return url;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
typing: (channelId)=>{
|
|
195
|
+
return `/channels/${channelId}/typing`;
|
|
196
|
+
},
|
|
197
|
+
polls: {
|
|
198
|
+
votes: (channelId, messageId, answerId, options)=>{
|
|
199
|
+
let url = `/channels/${channelId}/polls/${messageId}/answers/${answerId}?`;
|
|
200
|
+
if (options) {
|
|
201
|
+
if (options.after) url += `after=${options.after}`;
|
|
202
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
203
|
+
}
|
|
204
|
+
return url;
|
|
205
|
+
},
|
|
206
|
+
expire: (channelId, messageId)=>{
|
|
207
|
+
return `/channels/${channelId}/polls/${messageId}/expire`;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
// Guild Endpoints
|
|
212
|
+
guilds: {
|
|
213
|
+
all: ()=>{
|
|
214
|
+
return '/guilds';
|
|
215
|
+
},
|
|
216
|
+
userGuilds: (options)=>{
|
|
217
|
+
let url = '/users/@me/guilds?';
|
|
218
|
+
if (options) {
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
220
|
+
if (options.after) url += `after=${options.after}`;
|
|
221
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
222
|
+
if (options.before) url += `&before=${options.before}`;
|
|
223
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
224
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
225
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
226
|
+
if (options.withCounts) url += `&with_counts=${options.withCounts}`;
|
|
227
|
+
}
|
|
228
|
+
return url;
|
|
229
|
+
},
|
|
230
|
+
auditlogs: (guildId, options)=>{
|
|
231
|
+
let url = `/guilds/${guildId}/audit-logs?`;
|
|
232
|
+
if (options) {
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
234
|
+
if (options.actionType) url += `action_type=${options.actionType}`;
|
|
235
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
236
|
+
if (options.before) url += `&before=${options.before}`;
|
|
237
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
238
|
+
if (options.after) url += `&after=${options.after}`;
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
240
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
241
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
242
|
+
if (options.userId) url += `&user_id=${options.userId}`;
|
|
243
|
+
}
|
|
244
|
+
return url;
|
|
245
|
+
},
|
|
246
|
+
automod: {
|
|
247
|
+
rule: (guildId, ruleId)=>{
|
|
248
|
+
return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`;
|
|
249
|
+
},
|
|
250
|
+
rules: (guildId)=>{
|
|
251
|
+
return `/guilds/${guildId}/auto-moderation/rules`;
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
channels: (guildId)=>{
|
|
255
|
+
return `/guilds/${guildId}/channels`;
|
|
256
|
+
},
|
|
257
|
+
emoji: (guildId, emojiId)=>{
|
|
258
|
+
return `/guilds/${guildId}/emojis/${emojiId}`;
|
|
259
|
+
},
|
|
260
|
+
emojis: (guildId)=>{
|
|
261
|
+
return `/guilds/${guildId}/emojis`;
|
|
262
|
+
},
|
|
263
|
+
events: {
|
|
264
|
+
events: (guildId, withUserCount)=>{
|
|
265
|
+
let url = `/guilds/${guildId}/scheduled-events?`;
|
|
266
|
+
if (withUserCount !== undefined) {
|
|
267
|
+
url += `with_user_count=${withUserCount.toString()}`;
|
|
268
|
+
}
|
|
269
|
+
return url;
|
|
270
|
+
},
|
|
271
|
+
event: (guildId, eventId, withUserCount)=>{
|
|
272
|
+
let url = `/guilds/${guildId}/scheduled-events/${eventId}`;
|
|
273
|
+
if (withUserCount !== undefined) {
|
|
274
|
+
url += `with_user_count=${withUserCount.toString()}`;
|
|
275
|
+
}
|
|
276
|
+
return url;
|
|
277
|
+
},
|
|
278
|
+
users: (guildId, eventId, options)=>{
|
|
279
|
+
let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`;
|
|
280
|
+
if (options) {
|
|
281
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
282
|
+
if (options.limit !== undefined) url += `limit=${options.limit}`;
|
|
283
|
+
if (options.withMember !== undefined) {
|
|
284
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
285
|
+
url += `&with_member=${options.withMember.toString()}`;
|
|
286
|
+
}
|
|
287
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
288
|
+
if (options.after !== undefined) url += `&after=${options.after}`;
|
|
289
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
290
|
+
if (options.before !== undefined) url += `&before=${options.before}`;
|
|
291
|
+
}
|
|
292
|
+
return url;
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
guild (guildId, withCounts) {
|
|
296
|
+
let url = `/guilds/${guildId}?`;
|
|
297
|
+
if (withCounts !== undefined) {
|
|
298
|
+
url += `with_counts=${withCounts.toString()}`;
|
|
299
|
+
}
|
|
300
|
+
return url;
|
|
301
|
+
},
|
|
302
|
+
integration (guildId, integrationId) {
|
|
303
|
+
return `/guilds/${guildId}/integrations/${integrationId}`;
|
|
304
|
+
},
|
|
305
|
+
integrations: (guildId)=>{
|
|
306
|
+
return `/guilds/${guildId}/integrations?include_applications=true`;
|
|
307
|
+
},
|
|
308
|
+
invite (inviteCode, options) {
|
|
309
|
+
let url = `/invites/${inviteCode}?`;
|
|
310
|
+
if (options) {
|
|
311
|
+
if (options.withCounts !== undefined) {
|
|
312
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
313
|
+
url += `with_counts=${options.withCounts.toString()}`;
|
|
314
|
+
}
|
|
315
|
+
if (options.withExpiration !== undefined) {
|
|
316
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
317
|
+
url += `&with_expiration=${options.withExpiration.toString()}`;
|
|
318
|
+
}
|
|
319
|
+
if (options.scheduledEventId) {
|
|
320
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
321
|
+
url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return url;
|
|
325
|
+
},
|
|
326
|
+
invites: (guildId)=>{
|
|
327
|
+
return `/guilds/${guildId}/invites`;
|
|
328
|
+
},
|
|
329
|
+
leave: (guildId)=>{
|
|
330
|
+
return `/users/@me/guilds/${guildId}`;
|
|
331
|
+
},
|
|
332
|
+
members: {
|
|
333
|
+
ban: (guildId, userId)=>{
|
|
334
|
+
return `/guilds/${guildId}/bans/${userId}`;
|
|
335
|
+
},
|
|
336
|
+
bans: (guildId, options)=>{
|
|
337
|
+
let url = `/guilds/${guildId}/bans?`;
|
|
338
|
+
if (options) {
|
|
339
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
340
|
+
if (options.limit) url += `limit=${options.limit}`;
|
|
341
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
342
|
+
if (options.after) url += `&after=${options.after}`;
|
|
343
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
344
|
+
if (options.before) url += `&before=${options.before}`;
|
|
345
|
+
}
|
|
346
|
+
return url;
|
|
347
|
+
},
|
|
348
|
+
bulkBan: (guildId)=>{
|
|
349
|
+
return `/guilds/${guildId}/bulk-ban`;
|
|
350
|
+
},
|
|
351
|
+
bot: (guildId)=>{
|
|
352
|
+
return `/guilds/${guildId}/members/@me`;
|
|
353
|
+
},
|
|
354
|
+
member: (guildId, userId)=>{
|
|
355
|
+
return `/guilds/${guildId}/members/${userId}`;
|
|
356
|
+
},
|
|
357
|
+
currentMember: (guildId)=>{
|
|
358
|
+
return `/users/@me/guilds/${guildId}/member`;
|
|
359
|
+
},
|
|
360
|
+
members: (guildId, options)=>{
|
|
361
|
+
let url = `/guilds/${guildId}/members?`;
|
|
362
|
+
if (options !== undefined) {
|
|
363
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
364
|
+
if (options.limit) url += `limit=${options.limit}`;
|
|
365
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
366
|
+
if (options.after) url += `&after=${options.after}`;
|
|
367
|
+
}
|
|
368
|
+
return url;
|
|
369
|
+
},
|
|
370
|
+
search: (guildId, query, options)=>{
|
|
371
|
+
let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`;
|
|
372
|
+
if (options) {
|
|
373
|
+
if (options.limit !== undefined) url += `&limit=${options.limit}`;
|
|
374
|
+
}
|
|
375
|
+
return url;
|
|
376
|
+
},
|
|
377
|
+
prune: (guildId, options)=>{
|
|
378
|
+
let url = `/guilds/${guildId}/prune?`;
|
|
379
|
+
if (options) {
|
|
380
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
381
|
+
if (options.days) url += `days=${options.days}`;
|
|
382
|
+
if (Array.isArray(options.includeRoles)) {
|
|
383
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
384
|
+
url += `&include_roles=${options.includeRoles.join(',')}`;
|
|
385
|
+
} else if (options.includeRoles) {
|
|
386
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
387
|
+
url += `&include_roles=${options.includeRoles}`;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return url;
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
mfa: (guildId)=>`/guilds/${guildId}/mfa`,
|
|
394
|
+
preview: (guildId)=>{
|
|
395
|
+
return `/guilds/${guildId}/preview`;
|
|
396
|
+
},
|
|
397
|
+
prune: (guildId, options)=>{
|
|
398
|
+
let url = `/guilds/${guildId}/prune?`;
|
|
399
|
+
if (options) {
|
|
400
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
401
|
+
if (options.days) url += `days=${options.days}`;
|
|
402
|
+
if (Array.isArray(options.includeRoles)) {
|
|
403
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
404
|
+
url += `&include_roles=${options.includeRoles.join(',')}`;
|
|
405
|
+
} else if (options.includeRoles) {
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
407
|
+
url += `&include_roles=${options.includeRoles}`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return url;
|
|
411
|
+
},
|
|
412
|
+
roles: {
|
|
413
|
+
one: (guildId, roleId)=>{
|
|
414
|
+
return `/guilds/${guildId}/roles/${roleId}`;
|
|
415
|
+
},
|
|
416
|
+
all: (guildId)=>{
|
|
417
|
+
return `/guilds/${guildId}/roles`;
|
|
418
|
+
},
|
|
419
|
+
member: (guildId, memberId, roleId)=>{
|
|
420
|
+
return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`;
|
|
421
|
+
}
|
|
422
|
+
},
|
|
423
|
+
stickers: (guildId)=>{
|
|
424
|
+
return `/guilds/${guildId}/stickers`;
|
|
425
|
+
},
|
|
426
|
+
sticker: (guildId, stickerId)=>{
|
|
427
|
+
return `/guilds/${guildId}/stickers/${stickerId}`;
|
|
428
|
+
},
|
|
429
|
+
voice: (guildId, userId)=>{
|
|
430
|
+
return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`;
|
|
431
|
+
},
|
|
432
|
+
templates: {
|
|
433
|
+
code: (code)=>{
|
|
434
|
+
return `/guilds/templates/${code}`;
|
|
435
|
+
},
|
|
436
|
+
guild: (guildId, code)=>{
|
|
437
|
+
return `/guilds/${guildId}/templates/${code}`;
|
|
438
|
+
},
|
|
439
|
+
all: (guildId)=>{
|
|
440
|
+
return `/guilds/${guildId}/templates`;
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
vanity: (guildId)=>{
|
|
444
|
+
return `/guilds/${guildId}/vanity-url`;
|
|
445
|
+
},
|
|
446
|
+
regions: (guildId)=>{
|
|
447
|
+
return `/guilds/${guildId}/regions`;
|
|
448
|
+
},
|
|
449
|
+
webhooks: (guildId)=>{
|
|
450
|
+
return `/guilds/${guildId}/webhooks`;
|
|
451
|
+
},
|
|
452
|
+
welcome: (guildId)=>{
|
|
453
|
+
return `/guilds/${guildId}/welcome-screen`;
|
|
454
|
+
},
|
|
455
|
+
widget: (guildId)=>{
|
|
456
|
+
return `/guilds/${guildId}/widget`;
|
|
457
|
+
},
|
|
458
|
+
widgetJson: (guildId)=>{
|
|
459
|
+
return `/guilds/${guildId}/widget.json`;
|
|
460
|
+
},
|
|
461
|
+
onboarding: (guildId)=>{
|
|
462
|
+
return `/guilds/${guildId}/onboarding`;
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
sticker: (stickerId)=>{
|
|
466
|
+
return `/stickers/${stickerId}`;
|
|
467
|
+
},
|
|
468
|
+
regions: ()=>{
|
|
469
|
+
return '/voice/regions';
|
|
470
|
+
},
|
|
471
|
+
// Interaction Endpoints
|
|
472
|
+
interactions: {
|
|
473
|
+
commands: {
|
|
474
|
+
// Application Endpoints
|
|
475
|
+
commands: (applicationId)=>{
|
|
476
|
+
return `/applications/${applicationId}/commands`;
|
|
477
|
+
},
|
|
478
|
+
guilds: {
|
|
479
|
+
all (applicationId, guildId) {
|
|
480
|
+
return `/applications/${applicationId}/guilds/${guildId}/commands`;
|
|
481
|
+
},
|
|
482
|
+
one (applicationId, guildId, commandId, withLocalizations) {
|
|
483
|
+
let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`;
|
|
484
|
+
if (withLocalizations !== undefined) {
|
|
485
|
+
url += `with_localizations=${withLocalizations.toString()}`;
|
|
486
|
+
}
|
|
487
|
+
return url;
|
|
488
|
+
}
|
|
489
|
+
},
|
|
490
|
+
permissions: (applicationId, guildId)=>{
|
|
491
|
+
return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`;
|
|
492
|
+
},
|
|
493
|
+
permission: (applicationId, guildId, commandId)=>{
|
|
494
|
+
return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`;
|
|
495
|
+
},
|
|
496
|
+
command: (applicationId, commandId, withLocalizations)=>{
|
|
497
|
+
let url = `/applications/${applicationId}/commands/${commandId}?`;
|
|
498
|
+
if (withLocalizations !== undefined) {
|
|
499
|
+
url += `withLocalizations=${withLocalizations.toString()}`;
|
|
500
|
+
}
|
|
501
|
+
return url;
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
responses: {
|
|
505
|
+
// Interaction Endpoints
|
|
506
|
+
callback: (interactionId, token)=>{
|
|
507
|
+
return `/interactions/${interactionId}/${token}/callback`;
|
|
508
|
+
},
|
|
509
|
+
original: (interactionId, token)=>{
|
|
510
|
+
return `/webhooks/${interactionId}/${token}/messages/@original`;
|
|
511
|
+
},
|
|
512
|
+
message: (applicationId, token, messageId)=>{
|
|
513
|
+
return `/webhooks/${applicationId}/${token}/messages/${messageId}`;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
// OAuth2 endpoints
|
|
518
|
+
oauth2: {
|
|
519
|
+
tokenExchange: ()=>{
|
|
520
|
+
return '/oauth2/token';
|
|
521
|
+
},
|
|
522
|
+
tokenRevoke: ()=>{
|
|
523
|
+
return '/oauth2/token/revoke';
|
|
524
|
+
},
|
|
525
|
+
currentAuthorization: ()=>{
|
|
526
|
+
return '/oauth2/@me';
|
|
527
|
+
},
|
|
528
|
+
application: ()=>{
|
|
529
|
+
return '/oauth2/applications/@me';
|
|
530
|
+
},
|
|
531
|
+
connections: ()=>{
|
|
532
|
+
return '/users/@me/connections';
|
|
533
|
+
},
|
|
534
|
+
roleConnections: (applicationId)=>{
|
|
535
|
+
return `/users/@me/applications/${applicationId}/role-connection`;
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
monetization: {
|
|
539
|
+
entitlements: (applicationId, options)=>{
|
|
540
|
+
let url = `/applications/${applicationId}/entitlements?`;
|
|
541
|
+
if (options) {
|
|
542
|
+
if (options.after) url += `after=${options.after}`;
|
|
543
|
+
if (options.before) url += `&before=${options.before}`;
|
|
544
|
+
if (options.excludeEnded) url += `&exclude_ended=${options.excludeEnded}`;
|
|
545
|
+
if (options.guildId) url += `&guild_id=${options.guildId}`;
|
|
546
|
+
if (options.limit) url += `&limit=${options.limit}`;
|
|
547
|
+
if (options.skuIds) url += `&sku_ids=${options.skuIds.join(',')}`;
|
|
548
|
+
if (options.userId) url += `&user_id=${options.userId}`;
|
|
549
|
+
}
|
|
550
|
+
return url;
|
|
551
|
+
},
|
|
552
|
+
entitlement: (applicationId, entitlementId)=>{
|
|
553
|
+
return `/applications/${applicationId}/entitlements/${entitlementId}`;
|
|
554
|
+
},
|
|
555
|
+
consumeEntitlement: (applicationId, entitlementId)=>{
|
|
556
|
+
return `/applications/${applicationId}/entitlements/${entitlementId}/consume`;
|
|
557
|
+
},
|
|
558
|
+
skus: (applicationId)=>{
|
|
559
|
+
return `/applications/${applicationId}/skus`;
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
// User endpoints
|
|
563
|
+
user (userId) {
|
|
564
|
+
return `/users/${userId}`;
|
|
565
|
+
},
|
|
566
|
+
application () {
|
|
567
|
+
return '/applications/@me';
|
|
568
|
+
},
|
|
569
|
+
currentUser () {
|
|
570
|
+
return '/users/@me';
|
|
571
|
+
},
|
|
572
|
+
gatewayBot () {
|
|
573
|
+
return '/gateway/bot';
|
|
574
|
+
},
|
|
575
|
+
stickerPacks () {
|
|
576
|
+
return '/sticker-packs';
|
|
577
|
+
}
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3ZWJob29rczogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vd2ViaG9va3NgXG4gICAgICB9LFxuXG4gICAgICBjaGFubmVsOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIGZvbGxvdzogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vZm9sbG93ZXJzYFxuICAgICAgfSxcblxuICAgICAgZm9ydW06IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHNgXG4gICAgICB9LFxuXG4gICAgICBpbnZpdGVzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9pbnZpdGVzYFxuICAgICAgfSxcblxuICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH1gXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlczogKGNoYW5uZWxJZCwgb3B0aW9ucz86IEdldE1lc3NhZ2VzT3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXM/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBZnRlcihvcHRpb25zKSAmJiBvcHRpb25zLmFmdGVyKSB7XG4gICAgICAgICAgICB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0dldE1lc3NhZ2VzQmVmb3JlKG9wdGlvbnMpICYmIG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0dldE1lc3NhZ2VzQXJvdW5kKG9wdGlvbnMpICYmIG9wdGlvbnMuYXJvdW5kKSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZhcm91bmQ9JHtvcHRpb25zLmFyb3VuZH1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0dldE1lc3NhZ2VzTGltaXQob3B0aW9ucykgJiYgb3B0aW9ucy5saW1pdCkge1xuICAgICAgICAgICAgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuXG4gICAgICBvdmVyd3JpdGU6IChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wZXJtaXNzaW9ucy8ke292ZXJ3cml0ZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIGNyb3NzcG9zdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vY3Jvc3Nwb3N0YFxuICAgICAgfSxcblxuICAgICAgc3RhZ2VzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL3N0YWdlLWluc3RhbmNlcydcbiAgICAgIH0sXG5cbiAgICAgIHN0YWdlOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3N0YWdlLWluc3RhbmNlcy8ke2NoYW5uZWxJZH1gXG4gICAgICB9LFxuXG4gICAgICAvLyBUaHJlYWQgRW5kcG9pbnRzXG4gICAgICB0aHJlYWRzOiB7XG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHNgXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2ZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90aHJlYWRzL2FjdGl2ZWBcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyczogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVyc2BcbiAgICAgICAgfSxcbiAgICAgICAgbWU6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkLW1lbWJlcnMvQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkLW1lbWJlcnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBhcmNoaXZlZDogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkYFxuICAgICAgICB9LFxuICAgICAgICBwdWJsaWM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkcy9hcmNoaXZlZC9wdWJsaWM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICB1cmwgKz0gYGJlZm9yZT0ke25ldyBEYXRlKG9wdGlvbnMuYmVmb3JlKS50b0lTT1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgcHJpdmF0ZTogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICB1cmwgKz0gYGJlZm9yZT0ke25ldyBEYXRlKG9wdGlvbnMuYmVmb3JlKS50b0lTT1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgam9pbmVkOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3VzZXJzL0BtZS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICB1cmwgKz0gYGJlZm9yZT0ke25ldyBEYXRlKG9wdGlvbnMuYmVmb3JlKS50b0lTT1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHR5cGluZzogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdHlwaW5nYFxuICAgICAgfSxcblxuICAgICAgcG9sbHM6IHtcbiAgICAgICAgdm90ZXM6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgYW5zd2VySWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2Fuc3dlcnMvJHthbnN3ZXJJZH0/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGlyZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BvbGxzLyR7bWVzc2FnZUlkfS9leHBpcmVgXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBHdWlsZCBFbmRwb2ludHNcbiAgICBndWlsZHM6IHtcbiAgICAgIGFsbDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9ndWlsZHMnXG4gICAgICB9LFxuICAgICAgdXNlckd1aWxkczogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9ICcvdXNlcnMvQG1lL2d1aWxkcz8nXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzKSB1cmwgKz0gYCZ3aXRoX2NvdW50cz0ke29wdGlvbnMud2l0aENvdW50c31gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXVkaXRsb2dzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9hdWRpdC1sb2dzP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5hY3Rpb25UeXBlKSB1cmwgKz0gYGFjdGlvbl90eXBlPSR7b3B0aW9ucy5hY3Rpb25UeXBlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMudXNlcklkKSB1cmwgKz0gYCZ1c2VyX2lkPSR7b3B0aW9ucy51c2VySWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGF1dG9tb2Q6IHtcbiAgICAgICAgcnVsZTogKGd1aWxkSWQsIHJ1bGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2F1dG8tbW9kZXJhdGlvbi9ydWxlcy8ke3J1bGVJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bGVzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2F1dG8tbW9kZXJhdGlvbi9ydWxlc2BcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjaGFubmVsczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vY2hhbm5lbHNgXG4gICAgICB9LFxuICAgICAgZW1vamk6IChndWlsZElkLCBlbW9qaUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2Vtb2ppcy8ke2Vtb2ppSWR9YFxuICAgICAgfSxcbiAgICAgIGVtb2ppczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzYFxuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBldmVudHM6IChndWlsZElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHM/YFxuXG4gICAgICAgICAgaWYgKHdpdGhVc2VyQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX3VzZXJfY291bnQ9JHt3aXRoVXNlckNvdW50LnRvU3RyaW5nKCl9YFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50OiAoZ3VpbGRJZCwgZXZlbnRJZCwgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH1gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICB1c2VyczogKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudFVzZXJzKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cy8ke2V2ZW50SWR9L3VzZXJzP2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYGxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy53aXRoTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgICB1cmwgKz0gYCZ3aXRoX21lbWJlcj0ke29wdGlvbnMud2l0aE1lbWJlci50b1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBndWlsZChndWlsZElkLCB3aXRoQ291bnRzKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9P2BcblxuICAgICAgICBpZiAod2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke3dpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCkge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9pbnRlZ3JhdGlvbnMvJHtpbnRlZ3JhdGlvbklkfWBcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucz9pbmNsdWRlX2FwcGxpY2F0aW9ucz10cnVlYFxuICAgICAgfSxcbiAgICAgIGludml0ZShpbnZpdGVDb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2ludml0ZXMvJHtpbnZpdGVDb2RlfT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF9jb3VudHM9JHtvcHRpb25zLndpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhFeHBpcmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIHVybCArPSBgJndpdGhfZXhwaXJhdGlvbj0ke29wdGlvbnMud2l0aEV4cGlyYXRpb24udG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlZEV2ZW50SWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIHVybCArPSBgJmd1aWxkX3NjaGVkdWxlZF9ldmVudF9pZD0ke29wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZH1gXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGludml0ZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludml0ZXNgXG4gICAgICB9LFxuICAgICAgbGVhdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfWBcbiAgICAgIH0sXG4gICAgICBtZW1iZXJzOiB7XG4gICAgICAgIGJhbjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBiYW5zOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgYnVsa0JhbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9idWxrLWJhbmBcbiAgICAgICAgfSxcbiAgICAgICAgYm90OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvQG1lYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzLyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudE1lbWJlcjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVyYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzL3NlYXJjaD9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9wcnVuZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF5cykgdXJsICs9IGBkYXlzPSR7b3B0aW9ucy5kYXlzfWBcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJyl9YFxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlc31gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1mYTogKGd1aWxkSWQpID0+IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWZhYCxcbiAgICAgIHByZXZpZXc6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3ByZXZpZXdgXG4gICAgICB9LFxuICAgICAgcHJ1bmU6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3BydW5lP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtvcHRpb25zLmRheXN9YFxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzLmpvaW4oJywnKX1gXG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgcm9sZXM6IHtcbiAgICAgICAgb25lOiAoZ3VpbGRJZCwgcm9sZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcm9sZXMvJHtyb2xlSWR9YFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcm9sZXNgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIG1lbWJlcklkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzLyR7bWVtYmVySWR9L3JvbGVzLyR7cm9sZUlkfWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGlja2VyczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc3RpY2tlcnNgXG4gICAgICB9LFxuICAgICAgc3RpY2tlcjogKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG4gICAgICB9LFxuICAgICAgdm9pY2U6IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdm9pY2Utc3RhdGVzLyR7dXNlcklkID8/ICdAbWUnfWBcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZXM6IHtcbiAgICAgICAgY29kZTogKGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvdGVtcGxhdGVzLyR7Y29kZX1gXG4gICAgICAgIH0sXG4gICAgICAgIGd1aWxkOiAoZ3VpbGRJZCwgY29kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RlbXBsYXRlcy8ke2NvZGV9YFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdGVtcGxhdGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZhbml0eTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdmFuaXR5LXVybGBcbiAgICAgIH0sXG4gICAgICByZWdpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yZWdpb25zYFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS93ZWJob29rc2BcbiAgICAgIH0sXG4gICAgICB3ZWxjb21lOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS93ZWxjb21lLXNjcmVlbmBcbiAgICAgIH0sXG4gICAgICB3aWRnZXQ6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dpZGdldGBcbiAgICAgIH0sXG4gICAgICB3aWRnZXRKc29uOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQuanNvbmBcbiAgICAgIH0sXG4gICAgICBvbmJvYXJkaW5nOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9vbmJvYXJkaW5nYFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgc3RpY2tlcjogKHN0aWNrZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGAvc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgIH0sXG5cbiAgICByZWdpb25zOiAoKSA9PiB7XG4gICAgICByZXR1cm4gJy92b2ljZS9yZWdpb25zJ1xuICAgIH0sXG5cbiAgICAvLyBJbnRlcmFjdGlvbiBFbmRwb2ludHNcbiAgICBpbnRlcmFjdGlvbnM6IHtcbiAgICAgIGNvbW1hbmRzOiB7XG4gICAgICAgIC8vIEFwcGxpY2F0aW9uIEVuZHBvaW50c1xuICAgICAgICBjb21tYW5kczogKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9jb21tYW5kc2BcbiAgICAgICAgfSxcblxuICAgICAgICBndWlsZHM6IHtcbiAgICAgICAgICBhbGwoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHNgXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIG9uZShhcHBsaWNhdGlvbklkLCBndWlsZElkLCBjb21tYW5kSWQsIHdpdGhMb2NhbGl6YXRpb25zKSB7XG4gICAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kcy8ke2NvbW1hbmRJZH0/YFxuXG4gICAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYHdpdGhfbG9jYWxpemF0aW9ucz0ke3dpdGhMb2NhbGl6YXRpb25zLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IChhcHBsaWNhdGlvbklkLCBndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHMvcGVybWlzc2lvbnNgXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb246IChhcHBsaWNhdGlvbklkLCBndWlsZElkLCBjb21tYW5kSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kcy8ke2NvbW1hbmRJZH0vcGVybWlzc2lvbnNgXG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1hbmQ6IChhcHBsaWNhdGlvbklkLCBjb21tYW5kSWQsIHdpdGhMb2NhbGl6YXRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vY29tbWFuZHMvJHtjb21tYW5kSWR9P2BcblxuICAgICAgICAgIGlmICh3aXRoTG9jYWxpemF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhMb2NhbGl6YXRpb25zPSR7d2l0aExvY2FsaXphdGlvbnMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgICAgICBjYWxsYmFjazogKGludGVyYWN0aW9uSWQsIHRva2VuKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvaW50ZXJhY3Rpb25zLyR7aW50ZXJhY3Rpb25JZH0vJHt0b2tlbn0vY2FsbGJhY2tgXG4gICAgICAgIH0sXG4gICAgICAgIG9yaWdpbmFsOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2ludGVyYWN0aW9uSWR9LyR7dG9rZW59L21lc3NhZ2VzL0BvcmlnaW5hbGBcbiAgICAgICAgfSxcbiAgICAgICAgbWVzc2FnZTogKGFwcGxpY2F0aW9uSWQsIHRva2VuLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2FwcGxpY2F0aW9uSWR9LyR7dG9rZW59L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIE9BdXRoMiBlbmRwb2ludHNcbiAgICBvYXV0aDI6IHtcbiAgICAgIHRva2VuRXhjaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuJ1xuICAgICAgfSxcbiAgICAgIHRva2VuUmV2b2tlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi90b2tlbi9yZXZva2UnXG4gICAgICB9LFxuICAgICAgY3VycmVudEF1dGhvcml6YXRpb246ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL0BtZSdcbiAgICAgIH0sXG4gICAgICBhcHBsaWNhdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvYXBwbGljYXRpb25zL0BtZSdcbiAgICAgIH0sXG4gICAgICBjb25uZWN0aW9uczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY29ubmVjdGlvbnMnXG4gICAgICB9LFxuICAgICAgcm9sZUNvbm5lY3Rpb25zOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vcm9sZS1jb25uZWN0aW9uYFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgbW9uZXRpemF0aW9uOiB7XG4gICAgICBlbnRpdGxlbWVudHM6IChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2VudGl0bGVtZW50cz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVFbmRlZCkgdXJsICs9IGAmZXhjbHVkZV9lbmRlZD0ke29wdGlvbnMuZXhjbHVkZUVuZGVkfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5ndWlsZElkKSB1cmwgKz0gYCZndWlsZF9pZD0ke29wdGlvbnMuZ3VpbGRJZH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2t1SWRzKSB1cmwgKz0gYCZza3VfaWRzPSR7b3B0aW9ucy5za3VJZHMuam9pbignLCcpfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgZW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2VudGl0bGVtZW50cy8ke2VudGl0bGVtZW50SWR9YFxuICAgICAgfSxcbiAgICAgIGNvbnN1bWVFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzLyR7ZW50aXRsZW1lbnRJZH0vY29uc3VtZWBcbiAgICAgIH0sXG5cbiAgICAgIHNrdXM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L3NrdXNgXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBVc2VyIGVuZHBvaW50c1xuICAgIHVzZXIodXNlcklkKSB7XG4gICAgICByZXR1cm4gYC91c2Vycy8ke3VzZXJJZH1gXG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uKCkge1xuICAgICAgcmV0dXJuICcvYXBwbGljYXRpb25zL0BtZSdcbiAgICB9LFxuXG4gICAgY3VycmVudFVzZXIoKSB7XG4gICAgICByZXR1cm4gJy91c2Vycy9AbWUnXG4gICAgfSxcblxuICAgIGdhdGV3YXlCb3QoKSB7XG4gICAgICByZXR1cm4gJy9nYXRld2F5L2JvdCdcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2tzKCkge1xuICAgICAgcmV0dXJuICcvc3RpY2tlci1wYWNrcydcbiAgICB9LFxuICB9XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUm91dGVzIiwid2ViaG9va3MiLCJpZCIsIndlYmhvb2tJZCIsIm1lc3NhZ2UiLCJ0b2tlbiIsIm1lc3NhZ2VJZCIsIm9wdGlvbnMiLCJ1cmwiLCJ0aHJlYWRJZCIsIm9yaWdpbmFsIiwid2ViaG9vayIsIndhaXQiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsImNoYW5uZWxzIiwiYnVsayIsImNoYW5uZWxJZCIsImRtIiwiZG1SZWNpcGllbnQiLCJ1c2VySWQiLCJwaW4iLCJwaW5zIiwicmVhY3Rpb25zIiwiYm90IiwiZW1vamkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1c2VyIiwiYWxsIiwiYWZ0ZXIiLCJsaW1pdCIsImNoYW5uZWwiLCJmb2xsb3ciLCJmb3J1bSIsImludml0ZXMiLCJtZXNzYWdlcyIsImlzR2V0TWVzc2FnZXNBZnRlciIsImlzR2V0TWVzc2FnZXNCZWZvcmUiLCJiZWZvcmUiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiYXJvdW5kIiwiaXNHZXRNZXNzYWdlc0xpbWl0Iiwib3ZlcndyaXRlIiwib3ZlcndyaXRlSWQiLCJjcm9zc3Bvc3QiLCJzdGFnZXMiLCJzdGFnZSIsInRocmVhZHMiLCJhY3RpdmUiLCJndWlsZElkIiwibWVtYmVycyIsIm1lIiwiYXJjaGl2ZWQiLCJwdWJsaWMiLCJEYXRlIiwidG9JU09TdHJpbmciLCJwcml2YXRlIiwiam9pbmVkIiwidHlwaW5nIiwicG9sbHMiLCJ2b3RlcyIsImFuc3dlcklkIiwiZXhwaXJlIiwiZ3VpbGRzIiwidXNlckd1aWxkcyIsIndpdGhDb3VudHMiLCJhdWRpdGxvZ3MiLCJhY3Rpb25UeXBlIiwiYXV0b21vZCIsInJ1bGUiLCJydWxlSWQiLCJydWxlcyIsImVtb2ppSWQiLCJlbW9qaXMiLCJldmVudHMiLCJ3aXRoVXNlckNvdW50IiwiZXZlbnQiLCJldmVudElkIiwidXNlcnMiLCJ3aXRoTWVtYmVyIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwid2l0aEV4cGlyYXRpb24iLCJzY2hlZHVsZWRFdmVudElkIiwibGVhdmUiLCJiYW4iLCJiYW5zIiwiYnVsa0JhbiIsIm1lbWJlciIsImN1cnJlbnRNZW1iZXIiLCJzZWFyY2giLCJxdWVyeSIsInBydW5lIiwiZGF5cyIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVSb2xlcyIsImpvaW4iLCJtZmEiLCJwcmV2aWV3Iiwicm9sZXMiLCJvbmUiLCJyb2xlSWQiLCJtZW1iZXJJZCIsInN0aWNrZXJzIiwic3RpY2tlciIsInN0aWNrZXJJZCIsInZvaWNlIiwidGVtcGxhdGVzIiwiY29kZSIsInZhbml0eSIsInJlZ2lvbnMiLCJ3ZWxjb21lIiwid2lkZ2V0Iiwid2lkZ2V0SnNvbiIsIm9uYm9hcmRpbmciLCJpbnRlcmFjdGlvbnMiLCJjb21tYW5kcyIsImFwcGxpY2F0aW9uSWQiLCJjb21tYW5kSWQiLCJ3aXRoTG9jYWxpemF0aW9ucyIsInBlcm1pc3Npb25zIiwicGVybWlzc2lvbiIsImNvbW1hbmQiLCJyZXNwb25zZXMiLCJjYWxsYmFjayIsImludGVyYWN0aW9uSWQiLCJvYXV0aDIiLCJ0b2tlbkV4Y2hhbmdlIiwidG9rZW5SZXZva2UiLCJjdXJyZW50QXV0aG9yaXphdGlvbiIsImFwcGxpY2F0aW9uIiwiY29ubmVjdGlvbnMiLCJyb2xlQ29ubmVjdGlvbnMiLCJtb25ldGl6YXRpb24iLCJlbnRpdGxlbWVudHMiLCJleGNsdWRlRW5kZWQiLCJza3VJZHMiLCJlbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJjb25zdW1lRW50aXRsZW1lbnQiLCJza3VzIiwiY3VycmVudFVzZXIiLCJnYXRld2F5Qm90Iiwic3RpY2tlclBhY2tzIl0sIm1hcHBp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
|