@discordeno/bot 21.0.1-next.4792ad2 → 21.0.1-next.49a8cd1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/dist/cjs/bot.cjs +1 -1
  2. package/dist/cjs/desiredProperties.cjs +1 -1
  3. package/dist/cjs/handlers/channels/CHANNEL_CREATE.cjs +3 -4
  4. package/dist/cjs/handlers/channels/CHANNEL_DELETE.cjs +3 -5
  5. package/dist/cjs/handlers/channels/CHANNEL_UPDATE.cjs +2 -4
  6. package/dist/cjs/handlers/channels/THREAD_CREATE.cjs +2 -4
  7. package/dist/cjs/handlers/channels/THREAD_DELETE.cjs +2 -4
  8. package/dist/cjs/handlers/channels/THREAD_LIST_SYNC.cjs +2 -3
  9. package/dist/cjs/handlers/channels/THREAD_MEMBERS_UPDATE.cjs +4 -2
  10. package/dist/cjs/handlers/channels/THREAD_MEMBER_UPDATE.cjs +1 -3
  11. package/dist/cjs/handlers/channels/THREAD_UPDATE.cjs +2 -4
  12. package/dist/cjs/handlers/guilds/GUILD_CREATE.cjs +2 -3
  13. package/dist/cjs/handlers/guilds/GUILD_DELETE.cjs +6 -8
  14. package/dist/cjs/handlers/guilds/GUILD_UPDATE.cjs +2 -3
  15. package/dist/cjs/handlers/guilds/index.cjs +2 -2
  16. package/dist/cjs/handlers/index.cjs +3 -3
  17. package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +3 -3
  18. package/dist/cjs/handlers/invites/INVITE_CREATE.cjs +3 -3
  19. package/dist/cjs/handlers/members/GUILD_MEMBER_ADD.cjs +5 -2
  20. package/dist/cjs/handlers/members/GUILD_MEMBER_UPDATE.cjs +6 -3
  21. package/dist/cjs/handlers/messages/MESSAGE_CREATE.cjs +2 -3
  22. package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +6 -2
  23. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +2 -1
  24. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.cjs +2 -1
  25. package/dist/cjs/handlers/messages/MESSAGE_UPDATE.cjs +2 -3
  26. package/dist/cjs/handlers/messages/index.cjs +3 -3
  27. package/dist/cjs/handlers/misc/TYPING_START.cjs +5 -2
  28. package/dist/cjs/handlers/roles/GUILD_ROLE_CREATE.cjs +2 -3
  29. package/dist/cjs/handlers/roles/GUILD_ROLE_UPDATE.cjs +2 -3
  30. package/dist/cjs/handlers/soundboard/index.cjs +3 -3
  31. package/dist/cjs/handlers/voice/VOICE_STATE_UPDATE.cjs +3 -3
  32. package/dist/cjs/handlers/voice/index.cjs +2 -2
  33. package/dist/cjs/helpers.cjs +82 -150
  34. package/dist/cjs/index.cjs +3 -4
  35. package/dist/cjs/transformers/activity.cjs +1 -1
  36. package/dist/cjs/transformers/application.cjs +44 -45
  37. package/dist/cjs/transformers/attachment.cjs +1 -1
  38. package/dist/cjs/transformers/channel.cjs +44 -40
  39. package/dist/cjs/transformers/component.cjs +2 -2
  40. package/dist/cjs/transformers/emoji.cjs +1 -1
  41. package/dist/cjs/transformers/entitlement.cjs +1 -1
  42. package/dist/cjs/transformers/guild.cjs +75 -68
  43. package/dist/cjs/transformers/incidentsData.cjs +1 -1
  44. package/dist/cjs/transformers/interaction.cjs +89 -83
  45. package/dist/cjs/transformers/invite.cjs +30 -31
  46. package/dist/cjs/transformers/lobby.cjs +2 -4
  47. package/dist/cjs/transformers/member.cjs +9 -6
  48. package/dist/cjs/transformers/message.cjs +72 -69
  49. package/dist/cjs/transformers/onboarding.cjs +2 -2
  50. package/dist/cjs/transformers/poll.cjs +5 -4
  51. package/dist/cjs/transformers/presence.cjs +9 -10
  52. package/dist/cjs/transformers/reverse/application.cjs +1 -1
  53. package/dist/cjs/transformers/reverse/attachment.cjs +15 -14
  54. package/dist/cjs/transformers/reverse/component.cjs +5 -5
  55. package/dist/cjs/transformers/reverse/emoji.cjs +3 -3
  56. package/dist/cjs/transformers/reverse/index.cjs +1 -2
  57. package/dist/cjs/transformers/reverse/member.cjs +34 -32
  58. package/dist/cjs/transformers/reverse/presence.cjs +1 -1
  59. package/dist/cjs/transformers/reverse/team.cjs +1 -1
  60. package/dist/cjs/transformers/role.cjs +19 -19
  61. package/dist/cjs/transformers/scheduledEvent.cjs +1 -1
  62. package/dist/cjs/transformers/sku.cjs +1 -1
  63. package/dist/cjs/transformers/soundboardSound.cjs +1 -1
  64. package/dist/cjs/transformers/stageInstance.cjs +1 -1
  65. package/dist/cjs/transformers/stageInviteInstance.cjs +10 -4
  66. package/dist/cjs/transformers/sticker.cjs +1 -1
  67. package/dist/cjs/transformers/subscription.cjs +1 -1
  68. package/dist/cjs/transformers/team.cjs +1 -1
  69. package/dist/cjs/transformers/template.cjs +1 -1
  70. package/dist/cjs/transformers/threadMember.cjs +7 -4
  71. package/dist/cjs/transformers/user.cjs +1 -1
  72. package/dist/cjs/transformers/voiceState.cjs +11 -9
  73. package/dist/cjs/transformers/webhook.cjs +1 -1
  74. package/dist/cjs/transformers/widget.cjs +6 -16
  75. package/dist/cjs/transformers.cjs +164 -162
  76. package/dist/esm/bot.js +2 -2
  77. package/dist/esm/desiredProperties.js +1 -1
  78. package/dist/esm/events.js +1 -1
  79. package/dist/esm/handlers/channels/CHANNEL_CREATE.js +3 -4
  80. package/dist/esm/handlers/channels/CHANNEL_DELETE.js +3 -5
  81. package/dist/esm/handlers/channels/CHANNEL_UPDATE.js +2 -4
  82. package/dist/esm/handlers/channels/THREAD_CREATE.js +2 -4
  83. package/dist/esm/handlers/channels/THREAD_DELETE.js +2 -4
  84. package/dist/esm/handlers/channels/THREAD_LIST_SYNC.js +2 -3
  85. package/dist/esm/handlers/channels/THREAD_MEMBERS_UPDATE.js +4 -2
  86. package/dist/esm/handlers/channels/THREAD_MEMBER_UPDATE.js +1 -3
  87. package/dist/esm/handlers/channels/THREAD_UPDATE.js +2 -4
  88. package/dist/esm/handlers/guilds/GUILD_CREATE.js +2 -3
  89. package/dist/esm/handlers/guilds/GUILD_DELETE.js +6 -8
  90. package/dist/esm/handlers/guilds/GUILD_UPDATE.js +2 -3
  91. package/dist/esm/handlers/guilds/index.js +2 -2
  92. package/dist/esm/handlers/index.js +3 -3
  93. package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +3 -3
  94. package/dist/esm/handlers/invites/INVITE_CREATE.js +3 -3
  95. package/dist/esm/handlers/members/GUILD_MEMBER_ADD.js +5 -2
  96. package/dist/esm/handlers/members/GUILD_MEMBER_UPDATE.js +6 -3
  97. package/dist/esm/handlers/messages/MESSAGE_CREATE.js +2 -3
  98. package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +6 -2
  99. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +2 -1
  100. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js +2 -1
  101. package/dist/esm/handlers/messages/MESSAGE_UPDATE.js +2 -3
  102. package/dist/esm/handlers/messages/index.js +3 -3
  103. package/dist/esm/handlers/misc/TYPING_START.js +5 -2
  104. package/dist/esm/handlers/roles/GUILD_ROLE_CREATE.js +2 -3
  105. package/dist/esm/handlers/roles/GUILD_ROLE_UPDATE.js +2 -3
  106. package/dist/esm/handlers/soundboard/index.js +3 -3
  107. package/dist/esm/handlers/voice/VOICE_STATE_UPDATE.js +3 -3
  108. package/dist/esm/handlers/voice/index.js +2 -2
  109. package/dist/esm/helpers.js +82 -150
  110. package/dist/esm/index.js +3 -4
  111. package/dist/esm/transformers/activity.js +1 -1
  112. package/dist/esm/transformers/application.js +44 -45
  113. package/dist/esm/transformers/attachment.js +1 -1
  114. package/dist/esm/transformers/channel.js +44 -40
  115. package/dist/esm/transformers/component.js +2 -2
  116. package/dist/esm/transformers/emoji.js +1 -1
  117. package/dist/esm/transformers/entitlement.js +1 -1
  118. package/dist/esm/transformers/guild.js +75 -68
  119. package/dist/esm/transformers/incidentsData.js +1 -1
  120. package/dist/esm/transformers/interaction.js +91 -83
  121. package/dist/esm/transformers/invite.js +31 -32
  122. package/dist/esm/transformers/lobby.js +2 -4
  123. package/dist/esm/transformers/member.js +9 -6
  124. package/dist/esm/transformers/message.js +72 -69
  125. package/dist/esm/transformers/onboarding.js +2 -2
  126. package/dist/esm/transformers/poll.js +5 -4
  127. package/dist/esm/transformers/presence.js +9 -10
  128. package/dist/esm/transformers/reverse/application.js +1 -1
  129. package/dist/esm/transformers/reverse/attachment.js +15 -14
  130. package/dist/esm/transformers/reverse/component.js +5 -5
  131. package/dist/esm/transformers/reverse/emoji.js +3 -3
  132. package/dist/esm/transformers/reverse/index.js +1 -2
  133. package/dist/esm/transformers/reverse/member.js +34 -32
  134. package/dist/esm/transformers/reverse/presence.js +1 -1
  135. package/dist/esm/transformers/reverse/team.js +1 -1
  136. package/dist/esm/transformers/role.js +19 -19
  137. package/dist/esm/transformers/scheduledEvent.js +1 -1
  138. package/dist/esm/transformers/sku.js +1 -1
  139. package/dist/esm/transformers/soundboardSound.js +1 -1
  140. package/dist/esm/transformers/stageInstance.js +1 -1
  141. package/dist/esm/transformers/stageInviteInstance.js +10 -4
  142. package/dist/esm/transformers/sticker.js +1 -1
  143. package/dist/esm/transformers/subscription.js +1 -1
  144. package/dist/esm/transformers/team.js +1 -1
  145. package/dist/esm/transformers/template.js +1 -1
  146. package/dist/esm/transformers/threadMember.js +7 -4
  147. package/dist/esm/transformers/types.js +1 -1
  148. package/dist/esm/transformers/user.js +1 -1
  149. package/dist/esm/transformers/voiceState.js +11 -9
  150. package/dist/esm/transformers/webhook.js +1 -1
  151. package/dist/esm/transformers/widget.js +6 -16
  152. package/dist/esm/transformers.js +166 -164
  153. package/dist/types/bot.d.ts +1 -5
  154. package/dist/types/bot.d.ts.map +1 -1
  155. package/dist/types/desiredProperties.d.ts +2 -1
  156. package/dist/types/desiredProperties.d.ts.map +1 -1
  157. package/dist/types/events.d.ts +4 -4
  158. package/dist/types/events.d.ts.map +1 -1
  159. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -1
  160. package/dist/types/handlers/channels/CHANNEL_DELETE.d.ts.map +1 -1
  161. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -1
  162. package/dist/types/handlers/guilds/GUILD_DELETE.d.ts.map +1 -1
  163. package/dist/types/handlers/guilds/index.d.ts +1 -1
  164. package/dist/types/handlers/guilds/index.d.ts.map +1 -1
  165. package/dist/types/handlers/index.d.ts +2 -2
  166. package/dist/types/handlers/index.d.ts.map +1 -1
  167. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
  168. package/dist/types/handlers/invites/INVITE_CREATE.d.ts.map +1 -1
  169. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts +2 -2
  170. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -1
  171. package/dist/types/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +1 -1
  172. package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
  173. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
  174. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts.map +1 -1
  175. package/dist/types/handlers/messages/index.d.ts +2 -2
  176. package/dist/types/handlers/messages/index.d.ts.map +1 -1
  177. package/dist/types/handlers/roles/GUILD_ROLE_CREATE.d.ts.map +1 -1
  178. package/dist/types/handlers/roles/GUILD_ROLE_UPDATE.d.ts.map +1 -1
  179. package/dist/types/handlers/soundboard/index.d.ts +2 -2
  180. package/dist/types/handlers/soundboard/index.d.ts.map +1 -1
  181. package/dist/types/handlers/voice/VOICE_STATE_UPDATE.d.ts.map +1 -1
  182. package/dist/types/handlers/voice/index.d.ts +1 -1
  183. package/dist/types/handlers/voice/index.d.ts.map +1 -1
  184. package/dist/types/helpers.d.ts +9 -9
  185. package/dist/types/helpers.d.ts.map +1 -1
  186. package/dist/types/index.d.ts +2 -3
  187. package/dist/types/index.d.ts.map +1 -1
  188. package/dist/types/transformers/activity.d.ts +3 -3
  189. package/dist/types/transformers/activity.d.ts.map +1 -1
  190. package/dist/types/transformers/application.d.ts +2 -3
  191. package/dist/types/transformers/application.d.ts.map +1 -1
  192. package/dist/types/transformers/attachment.d.ts +2 -2
  193. package/dist/types/transformers/attachment.d.ts.map +1 -1
  194. package/dist/types/transformers/channel.d.ts +5 -6
  195. package/dist/types/transformers/channel.d.ts.map +1 -1
  196. package/dist/types/transformers/emoji.d.ts +4 -4
  197. package/dist/types/transformers/emoji.d.ts.map +1 -1
  198. package/dist/types/transformers/entitlement.d.ts +2 -2
  199. package/dist/types/transformers/entitlement.d.ts.map +1 -1
  200. package/dist/types/transformers/guild.d.ts +5 -6
  201. package/dist/types/transformers/guild.d.ts.map +1 -1
  202. package/dist/types/transformers/incidentsData.d.ts +2 -2
  203. package/dist/types/transformers/incidentsData.d.ts.map +1 -1
  204. package/dist/types/transformers/interaction.d.ts +16 -20
  205. package/dist/types/transformers/interaction.d.ts.map +1 -1
  206. package/dist/types/transformers/invite.d.ts +4 -5
  207. package/dist/types/transformers/invite.d.ts.map +1 -1
  208. package/dist/types/transformers/lobby.d.ts +3 -3
  209. package/dist/types/transformers/lobby.d.ts.map +1 -1
  210. package/dist/types/transformers/member.d.ts +7 -3
  211. package/dist/types/transformers/member.d.ts.map +1 -1
  212. package/dist/types/transformers/message.d.ts +13 -13
  213. package/dist/types/transformers/message.d.ts.map +1 -1
  214. package/dist/types/transformers/onboarding.d.ts +4 -4
  215. package/dist/types/transformers/onboarding.d.ts.map +1 -1
  216. package/dist/types/transformers/poll.d.ts +3 -3
  217. package/dist/types/transformers/poll.d.ts.map +1 -1
  218. package/dist/types/transformers/presence.d.ts +2 -2
  219. package/dist/types/transformers/presence.d.ts.map +1 -1
  220. package/dist/types/transformers/reverse/application.d.ts +2 -2
  221. package/dist/types/transformers/reverse/application.d.ts.map +1 -1
  222. package/dist/types/transformers/reverse/attachment.d.ts +2 -2
  223. package/dist/types/transformers/reverse/attachment.d.ts.map +1 -1
  224. package/dist/types/transformers/reverse/emoji.d.ts +2 -2
  225. package/dist/types/transformers/reverse/emoji.d.ts.map +1 -1
  226. package/dist/types/transformers/reverse/index.d.ts +0 -1
  227. package/dist/types/transformers/reverse/index.d.ts.map +1 -1
  228. package/dist/types/transformers/reverse/member.d.ts +3 -4
  229. package/dist/types/transformers/reverse/member.d.ts.map +1 -1
  230. package/dist/types/transformers/reverse/presence.d.ts +2 -2
  231. package/dist/types/transformers/reverse/presence.d.ts.map +1 -1
  232. package/dist/types/transformers/reverse/team.d.ts +2 -2
  233. package/dist/types/transformers/reverse/team.d.ts.map +1 -1
  234. package/dist/types/transformers/role.d.ts +6 -7
  235. package/dist/types/transformers/role.d.ts.map +1 -1
  236. package/dist/types/transformers/scheduledEvent.d.ts +3 -3
  237. package/dist/types/transformers/scheduledEvent.d.ts.map +1 -1
  238. package/dist/types/transformers/sku.d.ts +2 -2
  239. package/dist/types/transformers/sku.d.ts.map +1 -1
  240. package/dist/types/transformers/soundboardSound.d.ts +2 -2
  241. package/dist/types/transformers/soundboardSound.d.ts.map +1 -1
  242. package/dist/types/transformers/stageInstance.d.ts +2 -2
  243. package/dist/types/transformers/stageInstance.d.ts.map +1 -1
  244. package/dist/types/transformers/stageInviteInstance.d.ts +4 -4
  245. package/dist/types/transformers/stageInviteInstance.d.ts.map +1 -1
  246. package/dist/types/transformers/sticker.d.ts +3 -3
  247. package/dist/types/transformers/sticker.d.ts.map +1 -1
  248. package/dist/types/transformers/subscription.d.ts +2 -2
  249. package/dist/types/transformers/subscription.d.ts.map +1 -1
  250. package/dist/types/transformers/team.d.ts +2 -2
  251. package/dist/types/transformers/team.d.ts.map +1 -1
  252. package/dist/types/transformers/template.d.ts +2 -2
  253. package/dist/types/transformers/template.d.ts.map +1 -1
  254. package/dist/types/transformers/threadMember.d.ts +11 -2
  255. package/dist/types/transformers/threadMember.d.ts.map +1 -1
  256. package/dist/types/transformers/types.d.ts +8 -8
  257. package/dist/types/transformers/types.d.ts.map +1 -1
  258. package/dist/types/transformers/user.d.ts +6 -6
  259. package/dist/types/transformers/user.d.ts.map +1 -1
  260. package/dist/types/transformers/voiceState.d.ts +4 -5
  261. package/dist/types/transformers/voiceState.d.ts.map +1 -1
  262. package/dist/types/transformers/webhook.d.ts +2 -2
  263. package/dist/types/transformers/webhook.d.ts.map +1 -1
  264. package/dist/types/transformers/widget.d.ts +1 -1
  265. package/dist/types/transformers/widget.d.ts.map +1 -1
  266. package/dist/types/transformers.d.ts +86 -68
  267. package/dist/types/transformers.d.ts.map +1 -1
  268. package/package.json +6 -6
  269. package/dist/cjs/transformers/reverse/createApplicationCommand.cjs +0 -36
  270. package/dist/cjs/utils.cjs +0 -32
  271. package/dist/esm/transformers/reverse/createApplicationCommand.js +0 -26
  272. package/dist/esm/utils.js +0 -11
  273. package/dist/types/transformers/reverse/createApplicationCommand.d.ts +0 -3
  274. package/dist/types/transformers/reverse/createApplicationCommand.d.ts.map +0 -1
  275. package/dist/types/utils.d.ts +0 -5
  276. package/dist/types/utils.d.ts.map +0 -1
@@ -109,67 +109,68 @@ const baseInteraction = {
109
109
  else return await this.bot?.helpers.deleteOriginalInteractionResponse(this.token);
110
110
  }
111
111
  };
112
- function transformInteraction(bot, payload) {
113
- const guildId = payload.interaction.guild_id ? bot.transformers.snowflake(payload.interaction.guild_id) : undefined;
114
- const user = bot.transformers.user(bot, payload.interaction.member?.user ?? payload.interaction.user);
112
+ function transformInteraction(bot, payload, extra) {
113
+ const guildId = payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined;
115
114
  const interaction = Object.create(baseInteraction);
116
115
  const props = bot.transformers.desiredProperties.interaction;
117
- // Typescript has an hard time with this, so we need to tell him for sure this is a Bot
118
116
  interaction.bot = bot;
119
117
  interaction.acknowledged = false;
120
- if (props.id && payload.interaction.id) interaction.id = bot.transformers.snowflake(payload.interaction.id);
121
- if (props.applicationId && payload.interaction.application_id) interaction.applicationId = bot.transformers.snowflake(payload.interaction.application_id);
122
- if (props.type && payload.interaction.type) interaction.type = payload.interaction.type;
123
- if (props.token && payload.interaction.token) interaction.token = payload.interaction.token;
124
- if (props.version && payload.interaction.version) interaction.version = payload.interaction.version;
125
- if (props.locale && payload.interaction.locale) interaction.locale = payload.interaction.locale;
126
- if (props.guildLocale && payload.interaction.guild_locale) interaction.guildLocale = payload.interaction.guild_locale;
127
- if (props.guild && payload.interaction.guild) // @ts-expect-error payload.interaction.guild is a Partial<DiscordGuild>
128
- interaction.guild = bot.transformers.guild(bot, {
129
- guild: payload.interaction.guild,
130
- shardId: payload.shardId
118
+ if (props.id && payload.id) interaction.id = bot.transformers.snowflake(payload.id);
119
+ if (props.applicationId && payload.application_id) interaction.applicationId = bot.transformers.snowflake(payload.application_id);
120
+ if (props.type && payload.type) interaction.type = payload.type;
121
+ if (props.token && payload.token) interaction.token = payload.token;
122
+ if (props.version && payload.version) interaction.version = payload.version;
123
+ if (props.locale && payload.locale) interaction.locale = payload.locale;
124
+ if (props.guildLocale && payload.guild_locale) interaction.guildLocale = payload.guild_locale;
125
+ if (props.guild && payload.guild) // @ts-expect-error payload.guild is a Partial<DiscordGuild>
126
+ interaction.guild = bot.transformers.guild(bot, payload.guild, {
127
+ shardId: extra?.shardId
131
128
  });
132
129
  if (props.guildId && guildId) interaction.guildId = guildId;
133
- if (props.user && user) interaction.user = user;
134
- if (props.appPermissions && payload.interaction.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.interaction.app_permissions);
135
- if (props.message && payload.interaction.message) interaction.message = bot.transformers.message(bot, {
136
- message: payload.interaction.message,
137
- shardId: 0
130
+ if (props.user) {
131
+ if (payload.member?.user) interaction.user = bot.transformers.user(bot, payload.member?.user);
132
+ else if (payload.user) interaction.user = bot.transformers.user(bot, payload.user);
133
+ }
134
+ if (props.appPermissions && payload.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.app_permissions);
135
+ if (props.message && payload.message) interaction.message = bot.transformers.message(bot, payload.message, {
136
+ shardId: extra?.shardId
138
137
  });
139
- if (props.channel && payload.interaction.channel) interaction.channel = bot.transformers.channel(bot, {
140
- channel: payload.interaction.channel,
138
+ if (props.channel && payload.channel) // @ts-expect-error payload.channel is a Partial<>
139
+ interaction.channel = bot.transformers.channel(bot, payload.channel, {
141
140
  guildId
142
141
  });
143
- if (props.channelId && payload.interaction.channel_id) interaction.channelId = bot.transformers.snowflake(payload.interaction.channel_id);
144
- if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, user.id);
145
- if (props.entitlements && payload.interaction.entitlements) interaction.entitlements = payload.interaction.entitlements.map((e)=>bot.transformers.entitlement(bot, e));
146
- if (props.authorizingIntegrationOwners && payload.interaction.authorizing_integration_owners) {
142
+ if (props.channelId && payload.channel_id) interaction.channelId = bot.transformers.snowflake(payload.channel_id);
143
+ if (props.member && guildId && payload.member) interaction.member = bot.transformers.member(bot, payload.member, {
144
+ guildId,
145
+ userId: payload.member?.user.id ?? payload.user?.id
146
+ });
147
+ if (props.entitlements && payload.entitlements) interaction.entitlements = payload.entitlements.map((e)=>bot.transformers.entitlement(bot, e));
148
+ if (props.authorizingIntegrationOwners && payload.authorizing_integration_owners) {
147
149
  interaction.authorizingIntegrationOwners = {};
148
- if (payload.interaction.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_types.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['0']);
149
- if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_types.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
150
+ if (payload.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_types.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['0']);
151
+ if (payload.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_types.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['1']);
150
152
  }
151
- if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
152
- if (props.attachmentSizeLimit && payload.interaction.attachment_size_limit) interaction.attachmentSizeLimit = payload.interaction.attachment_size_limit;
153
- if (props.data && payload.interaction.data) {
153
+ if (props.context && payload.context) interaction.context = payload.context;
154
+ if (props.attachmentSizeLimit && payload.attachment_size_limit) interaction.attachmentSizeLimit = payload.attachment_size_limit;
155
+ if (props.data && payload.data) {
154
156
  interaction.data = {
155
- type: payload.interaction.data.type,
156
- componentType: payload.interaction.data.component_type,
157
- customId: payload.interaction.data.custom_id,
158
- components: payload.interaction.data.components?.map((component)=>bot.transformers.component(bot, component)),
159
- values: payload.interaction.data.values,
160
- id: payload.interaction.data.id ? bot.transformers.snowflake(payload.interaction.data.id) : undefined,
161
- name: payload.interaction.data.name,
162
- resolved: payload.interaction.data.resolved ? bot.transformers.interactionDataResolved(bot, {
163
- resolved: payload.interaction.data.resolved,
164
- shardId: payload.shardId,
157
+ type: payload.data.type,
158
+ componentType: payload.data.component_type,
159
+ customId: payload.data.custom_id,
160
+ components: payload.data.components?.map((component)=>bot.transformers.component(bot, component)),
161
+ values: payload.data.values,
162
+ id: payload.data.id ? bot.transformers.snowflake(payload.data.id) : undefined,
163
+ name: payload.data.name,
164
+ resolved: payload.data.resolved ? bot.transformers.interactionDataResolved(bot, payload.data.resolved, {
165
+ shardId: extra?.shardId,
165
166
  guildId
166
167
  }) : undefined,
167
- options: payload.interaction.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
168
- targetId: payload.interaction.data.target_id ? bot.transformers.snowflake(payload.interaction.data.target_id) : undefined
168
+ options: payload.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
169
+ targetId: payload.data.target_id ? bot.transformers.snowflake(payload.data.target_id) : undefined
169
170
  };
170
171
  }
171
172
  // Typescript has an hard time with interaction.bot, so we need to tell him for sure this interaction is the of the correct type
172
- return bot.transformers.customizers.interaction(bot, payload, interaction);
173
+ return bot.transformers.customizers.interaction(bot, payload, interaction, extra);
173
174
  }
174
175
  function transformInteractionDataOption(bot, option) {
175
176
  const opt = {
@@ -181,13 +182,13 @@ function transformInteractionDataOption(bot, option) {
181
182
  };
182
183
  return bot.transformers.customizers.interactionDataOptions(bot, option, opt);
183
184
  }
184
- function transformInteractionDataResolved(bot, payload) {
185
+ function transformInteractionDataResolved(bot, payload, extra) {
185
186
  const transformed = {};
186
- if (payload.resolved.messages) {
187
- transformed.messages = new _utils.Collection(Object.entries(payload.resolved.messages).map(([_id, value])=>{
188
- const message = bot.transformers.message(bot, {
189
- message: value,
190
- shardId: payload.shardId
187
+ if (payload.messages) {
188
+ transformed.messages = new _utils.Collection(Object.entries(payload.messages).map(([_id, value])=>{
189
+ // @ts-expect-error TODO: Deal with partials
190
+ const message = bot.transformers.message(bot, value, {
191
+ shardId: extra?.shardId
191
192
  });
192
193
  return [
193
194
  message.id,
@@ -195,8 +196,8 @@ function transformInteractionDataResolved(bot, payload) {
195
196
  ];
196
197
  }));
197
198
  }
198
- if (payload.resolved.users) {
199
- transformed.users = new _utils.Collection(Object.entries(payload.resolved.users).map(([_id, value])=>{
199
+ if (payload.users) {
200
+ transformed.users = new _utils.Collection(Object.entries(payload.users).map(([_id, value])=>{
200
201
  const user = bot.transformers.user(bot, value);
201
202
  return [
202
203
  user.id,
@@ -204,20 +205,24 @@ function transformInteractionDataResolved(bot, payload) {
204
205
  ];
205
206
  }));
206
207
  }
207
- if (payload.guildId && payload.resolved.members) {
208
- transformed.members = new _utils.Collection(Object.entries(payload.resolved.members).map(([id, value])=>{
209
- const member = bot.transformers.member(bot, value, payload.guildId, bot.transformers.snowflake(id));
208
+ if (extra?.guildId && payload.members) {
209
+ transformed.members = new _utils.Collection(Object.entries(payload.members).map(([id, value])=>{
210
+ // @ts-expect-error TODO: Deal with partials, value is missing 2 values but the transformer can handle it, despite what the types says
211
+ const member = bot.transformers.member(bot, value, {
212
+ guildId: extra.guildId,
213
+ userId: bot.transformers.snowflake(id)
214
+ });
215
+ // We need to tell TS that we are sure the id is a bigint
210
216
  return [
211
217
  member.id,
212
218
  member
213
219
  ];
214
220
  }));
215
221
  }
216
- if (payload.guildId && payload.resolved.roles) {
217
- transformed.roles = new _utils.Collection(Object.entries(payload.resolved.roles).map(([_id, value])=>{
218
- const role = bot.transformers.role(bot, {
219
- role: value,
220
- guildId: payload.guildId
222
+ if (extra?.guildId && payload.roles) {
223
+ transformed.roles = new _utils.Collection(Object.entries(payload.roles).map(([_id, value])=>{
224
+ const role = bot.transformers.role(bot, value, {
225
+ guildId: extra.guildId
221
226
  });
222
227
  return [
223
228
  role.id,
@@ -225,37 +230,39 @@ function transformInteractionDataResolved(bot, payload) {
225
230
  ];
226
231
  }));
227
232
  }
228
- if (payload.resolved.channels) {
229
- transformed.channels = new _utils.Collection(Object.entries(payload.resolved.channels).map(([_id, value])=>{
230
- const channel = bot.transformers.channel(bot, {
231
- channel: value
232
- });
233
+ if (payload.channels) {
234
+ transformed.channels = new _utils.Collection(Object.entries(payload.channels).map(([_id, value])=>{
235
+ const channel = bot.transformers.channel(bot, value);
236
+ // We need to tell TS that we are sure the id is a bigint
233
237
  return [
234
238
  channel.id,
235
239
  channel
236
240
  ];
237
241
  }));
238
242
  }
239
- if (payload.resolved.attachments) {
240
- transformed.attachments = new _utils.Collection(Object.entries(payload.resolved.attachments).map(([key, value])=>{
243
+ if (payload.attachments) {
244
+ transformed.attachments = new _utils.Collection(Object.entries(payload.attachments).map(([key, value])=>{
241
245
  const id = bot.transformers.snowflake(key);
246
+ const attachment = bot.transformers.attachment(bot, value);
242
247
  return [
243
248
  id,
244
- bot.transformers.attachment(bot, value)
249
+ attachment
245
250
  ];
246
251
  }));
247
252
  }
248
- return bot.transformers.customizers.interactionDataResolved(bot, payload, transformed);
253
+ return bot.transformers.customizers.interactionDataResolved(bot, payload, transformed, {
254
+ shardId: extra?.shardId,
255
+ guildId: extra?.guildId ? bot.transformers.snowflake(extra.guildId) : undefined
256
+ });
249
257
  }
250
- function transformInteractionCallbackResponse(bot, payload) {
258
+ function transformInteractionCallbackResponse(bot, payload, extra) {
251
259
  const props = bot.transformers.desiredProperties.interactionCallbackResponse;
252
260
  const response = {};
253
- if (props.interaction && payload.interactionCallbackResponse.interaction) response.interaction = bot.transformers.interactionCallback(bot, payload.interactionCallbackResponse.interaction);
254
- if (props.resource && payload.interactionCallbackResponse.resource) response.resource = bot.transformers.interactionResource(bot, {
255
- interactionResource: payload.interactionCallbackResponse.resource,
256
- shardId: payload.shardId
261
+ if (props.interaction && payload.interaction) response.interaction = bot.transformers.interactionCallback(bot, payload.interaction);
262
+ if (props.resource && payload.resource) response.resource = bot.transformers.interactionResource(bot, payload.resource, {
263
+ shardId: extra?.shardId
257
264
  });
258
- return bot.transformers.customizers.interactionCallbackResponse(bot, payload.interactionCallbackResponse, response);
265
+ return bot.transformers.customizers.interactionCallbackResponse(bot, payload, response, extra);
259
266
  }
260
267
  function transformInteractionCallback(bot, payload) {
261
268
  const props = bot.transformers.desiredProperties.interactionCallback;
@@ -268,16 +275,15 @@ function transformInteractionCallback(bot, payload) {
268
275
  if (props.responseMessageLoading && payload.response_message_loading) callback.responseMessageLoading = payload.response_message_loading;
269
276
  return bot.transformers.customizers.interactionCallback(bot, payload, callback);
270
277
  }
271
- function transformInteractionResource(bot, payload) {
278
+ function transformInteractionResource(bot, payload, extra) {
272
279
  const props = bot.transformers.desiredProperties.interactionResource;
273
280
  const resource = {};
274
- if (props.type && payload.interactionResource.type) resource.type = payload.interactionResource.type;
275
- if (props.activityInstance && payload.interactionResource.activity_instance) resource.activityInstance = payload.interactionResource.activity_instance;
276
- if (props.message && payload.interactionResource.message) resource.message = bot.transformers.message(bot, {
277
- message: payload.interactionResource.message,
278
- shardId: payload.shardId
281
+ if (props.type && payload.type) resource.type = payload.type;
282
+ if (props.activityInstance && payload.activity_instance) resource.activityInstance = payload.activity_instance;
283
+ if (props.message && payload.message) resource.message = bot.transformers.message(bot, payload.message, {
284
+ shardId: extra?.shardId
279
285
  });
280
- return bot.transformers.customizers.interactionResource(bot, payload.interactionResource, resource);
286
+ return bot.transformers.customizers.interactionResource(bot, payload, resource, extra);
281
287
  }
282
288
 
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkge1xuICAgICAgcmVzcG9uc2UuZmxhZ3MgPz89IDBcbiAgICAgIHJlc3BvbnNlLmZsYWdzIHw9IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWxcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShcbiAgICAgIHRoaXMuaWQsXG4gICAgICB0aGlzLnRva2VuLFxuICAgICAgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgeyB3aXRoUmVzcG9uc2U6IG9wdGlvbnM/LndpdGhSZXNwb25zZSB9LFxuICAgIClcbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgaW50ZXJhY3Rpb24gaGFzIG5vdCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQgYW5kIHRoaXMgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLnRva2VuLCByZXNwb25zZSlcbiAgfSxcbiAgYXN5bmMgZGVmZXJFZGl0KG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlZmVyIGFuIGFscmVhZHkgcmVzcG9uZGVkIGludGVyYWN0aW9uLicpXG5cbiAgICBpZiAodGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1lc3NhZ2VDb21wb25lbnQgJiYgdGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1vZGFsU3VibWl0KVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRlZmVyIHRvIHRoZW4gZWRpdCBhbiBpbnRlcmFjdGlvbiB0aGF0IGlzbid0IGEgTWVzc2FnZUNvbXBvbmVudCBvciBNb2RhbFN1Ym1pdCBpbnRlcmFjdGlvbi5cIilcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHsgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkVXBkYXRlTWVzc2FnZSB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9LFxuICBhc3luYyBkZWZlcihpc1ByaXZhdGUsIG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlZmVyIGFuIGFscmVhZHkgcmVzcG9uZGVkIGludGVyYWN0aW9uLicpXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgdGhpcy5pZCxcbiAgICAgIHRoaXMudG9rZW4sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZsYWdzOiBpc1ByaXZhdGUgPyBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKVxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbiAgYXN5bmMgZGVsZXRlKG1lc3NhZ2VJZCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWxldGUgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uJylcblxuICAgIGlmIChtZXNzYWdlSWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiwgbWVzc2FnZUlkKVxuICAgIGVsc2UgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLnRva2VuKVxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb24oXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb246IERpc2NvcmRJbnRlcmFjdGlvbjsgc2hhcmRJZDogbnVtYmVyIH0sXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbiB7XG4gIGNvbnN0IGd1aWxkSWQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCkgOiB1bmRlZmluZWRcbiAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyPy51c2VyID8/IHBheWxvYWQuaW50ZXJhY3Rpb24udXNlciEpXG5cbiAgY29uc3QgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uID0gT2JqZWN0LmNyZWF0ZShiYXNlSW50ZXJhY3Rpb24pXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblxuICAvLyBUeXBlc2NyaXB0IGhhcyBhbiBoYXJkIHRpbWUgd2l0aCB0aGlzLCBzbyB3ZSBuZWVkIHRvIHRlbGwgaGltIGZvciBzdXJlIHRoaXMgaXMgYSBCb3RcbiAgaW50ZXJhY3Rpb24uYm90ID0gYm90IGFzIHVua25vd24gYXMgQm90XG4gIGludGVyYWN0aW9uLmFja25vd2xlZGdlZCA9IGZhbHNlXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uaWQpIGludGVyYWN0aW9uLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5pZClcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBsaWNhdGlvbl9pZClcbiAgICBpbnRlcmFjdGlvbi5hcHBsaWNhdGlvbklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBsaWNhdGlvbl9pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi50eXBlKSBpbnRlcmFjdGlvbi50eXBlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50eXBlXG4gIGlmIChwcm9wcy50b2tlbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnRva2VuKSBpbnRlcmFjdGlvbi50b2tlbiA9IHBheWxvYWQuaW50ZXJhY3Rpb24udG9rZW5cbiAgaWYgKHByb3BzLnZlcnNpb24gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi52ZXJzaW9uKSBpbnRlcmFjdGlvbi52ZXJzaW9uID0gcGF5bG9hZC5pbnRlcmFjdGlvbi52ZXJzaW9uXG4gIGlmIChwcm9wcy5sb2NhbGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5sb2NhbGUpIGludGVyYWN0aW9uLmxvY2FsZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24ubG9jYWxlXG4gIGlmIChwcm9wcy5ndWlsZExvY2FsZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2xvY2FsZSkgaW50ZXJhY3Rpb24uZ3VpbGRMb2NhbGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2xvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZClcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQgaXMgYSBQYXJ0aWFsPERpc2NvcmRHdWlsZD5cbiAgICBpbnRlcmFjdGlvbi5ndWlsZCA9IGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCB7IGd1aWxkOiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQgfSlcbiAgaWYgKHByb3BzLmd1aWxkSWQgJiYgZ3VpbGRJZCkgaW50ZXJhY3Rpb24uZ3VpbGRJZCA9IGd1aWxkSWRcbiAgaWYgKHByb3BzLnVzZXIgJiYgdXNlcikgaW50ZXJhY3Rpb24udXNlciA9IHVzZXJcbiAgaWYgKHByb3BzLmFwcFBlcm1pc3Npb25zICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwX3Blcm1pc3Npb25zKVxuICAgIGludGVyYWN0aW9uLmFwcFBlcm1pc3Npb25zID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBfcGVybWlzc2lvbnMpXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVzc2FnZSlcbiAgICBpbnRlcmFjdGlvbi5tZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgeyBtZXNzYWdlOiBwYXlsb2FkLmludGVyYWN0aW9uLm1lc3NhZ2UsIHNoYXJkSWQ6IDAgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWwgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsKVxuICAgIGludGVyYWN0aW9uLmNoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbCBhcyBEaXNjb3JkQ2hhbm5lbCwgZ3VpbGRJZCB9KVxuICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbF9pZCkgaW50ZXJhY3Rpb24uY2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsX2lkKVxuICBpZiAocHJvcHMubWVtYmVyICYmIGd1aWxkSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXIpXG4gICAgaW50ZXJhY3Rpb24ubWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlciwgZ3VpbGRJZCwgdXNlci5pZClcbiAgaWYgKHByb3BzLmVudGl0bGVtZW50cyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmVudGl0bGVtZW50cylcbiAgICBpbnRlcmFjdGlvbi5lbnRpdGxlbWVudHMgPSBwYXlsb2FkLmludGVyYWN0aW9uLmVudGl0bGVtZW50cy5tYXAoKGUpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBlKSlcbiAgaWYgKHByb3BzLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMpIHtcbiAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzID0ge31cblxuICAgIGlmIChwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuR3VpbGRJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddLFxuICAgICAgKVxuICAgIGlmIChwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuVXNlckluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10sXG4gICAgICApXG4gIH1cbiAgaWYgKHByb3BzLmNvbnRleHQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jb250ZXh0KSBpbnRlcmFjdGlvbi5jb250ZXh0ID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5jb250ZXh0XG4gIGlmIChwcm9wcy5hdHRhY2htZW50U2l6ZUxpbWl0ICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXR0YWNobWVudF9zaXplX2xpbWl0KVxuICAgIGludGVyYWN0aW9uLmF0dGFjaG1lbnRTaXplTGltaXQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmF0dGFjaG1lbnRfc2l6ZV9saW1pdFxuICBpZiAocHJvcHMuZGF0YSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEpIHtcbiAgICBpbnRlcmFjdGlvbi5kYXRhID0ge1xuICAgICAgdHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnR5cGUsXG4gICAgICBjb21wb25lbnRUeXBlOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50X3R5cGUsXG4gICAgICBjdXN0b21JZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmN1c3RvbV9pZCxcbiAgICAgIGNvbXBvbmVudHM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jb21wb25lbnRzPy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKSxcbiAgICAgIHZhbHVlczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnZhbHVlcyxcbiAgICAgIGlkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQpIDogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm5hbWUsXG4gICAgICByZXNvbHZlZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkXG4gICAgICAgID8gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHsgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLCBndWlsZElkIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm9wdGlvbnM/Lm1hcCgob3B0KSA9PiBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YU9wdGlvbnMoYm90LCBvcHQpKSxcbiAgICAgIHRhcmdldElkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudGFyZ2V0X2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggaW50ZXJhY3Rpb24uYm90LCBzbyB3ZSBuZWVkIHRvIHRlbGwgaGltIGZvciBzdXJlIHRoaXMgaW50ZXJhY3Rpb24gaXMgdGhlIG9mIHRoZSBjb3JyZWN0IHR5cGVcbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbiBhcyB1bmtub3duIGFzIHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uKGJvdDogQm90LCBvcHRpb246IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24pOiBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBjb25zdCBvcHQgPSB7XG4gICAgbmFtZTogb3B0aW9uLm5hbWUsXG4gICAgdHlwZTogb3B0aW9uLnR5cGUsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICBmb2N1c2VkOiBvcHRpb24uZm9jdXNlZCxcbiAgfSBhcyBJbnRlcmFjdGlvbkRhdGFPcHRpb25cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0aW9uLCBvcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogeyByZXNvbHZlZDogRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkOyBzaGFyZElkOiBudW1iZXI7IGd1aWxkSWQ/OiBiaWdpbnQgfSxcbik6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykge1xuICAgIHRyYW5zZm9ybWVkLm1lc3NhZ2VzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlOiBNZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgeyBtZXNzYWdlOiB2YWx1ZSwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gICAgICAgIHJldHVybiBbbWVzc2FnZS5pZCwgbWVzc2FnZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLnVzZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQudXNlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQudXNlcnMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFt1c2VyLmlkLCB1c2VyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVyOiBNZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHZhbHVlLCBwYXlsb2FkLmd1aWxkSWQhLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkLCBtZW1iZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5ndWlsZElkICYmIHBheWxvYWQucmVzb2x2ZWQucm9sZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5yb2xlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5yb2xlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHsgcm9sZTogdmFsdWUsIGd1aWxkSWQ6IHBheWxvYWQuZ3VpbGRJZCEgfSlcbiAgICAgICAgcmV0dXJuIFtyb2xlLmlkLCByb2xlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5jaGFubmVscykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogdmFsdWUgfSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZENoYW5uZWxcbiAgICAgICAgcmV0dXJuIFtjaGFubmVsLmlkLCBjaGFubmVsXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIHJldHVybiBbaWQsIGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZCwgdHJhbnNmb3JtZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcbiAgY29uc3QgcmVzcG9uc2UgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcblxuICBpZiAocHJvcHMuaW50ZXJhY3Rpb24gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gICAgcmVzcG9uc2UuaW50ZXJhY3Rpb24gPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5pbnRlcmFjdGlvbilcbiAgaWYgKHByb3BzLnJlc291cmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlKVxuICAgIHJlc3BvbnNlLnJlc291cmNlID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwge1xuICAgICAgaW50ZXJhY3Rpb25SZXNvdXJjZTogcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UucmVzb3VyY2UsXG4gICAgICBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQsXG4gICAgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSwgcmVzcG9uc2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2sge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1xuICBjb25zdCBjYWxsYmFjayA9IHt9IGFzIEludGVyYWN0aW9uQ2FsbGJhY2tcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2FsbGJhY2suaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNhbGxiYWNrLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2VJZCAmJiBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkKSBjYWxsYmFjay5hY3Rpdml0eUluc3RhbmNlSWQgPSBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VJZCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfaWQpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCA9IHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWxcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmcpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfbG9hZGluZ1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLCBjYWxsYmFjaylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uUmVzb3VyY2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25SZXNvdXJjZTogRGlzY29yZEludGVyYWN0aW9uUmVzb3VyY2U7IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb25SZXNvdXJjZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlID0ge30gYXMgSW50ZXJhY3Rpb25SZXNvdXJjZVxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlKSByZXNvdXJjZS50eXBlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlKVxuICAgIHJlc291cmNlLmFjdGl2aXR5SW5zdGFuY2UgPSBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UuYWN0aXZpdHlfaW5zdGFuY2VcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UpXG4gICAgcmVzb3VyY2UubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UsIHJlc291cmNlKVxufVxuIl0sIm5hbWVzIjpbImJhc2VJbnRlcmFjdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayIsInRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25SZXNvdXJjZSIsInVuZGVmaW5lZCIsInJlc3BvbmQiLCJyZXNwb25zZSIsIm9wdGlvbnMiLCJ0eXBlIiwiSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzIiwiQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiY29udGVudCIsInRpdGxlIiwiTW9kYWwiLCJJbnRlcmFjdGlvblR5cGVzIiwiQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlIiwiQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlUmVzdWx0IiwiaXNQcml2YXRlIiwiZmxhZ3MiLCJNZXNzYWdlRmxhZ3MiLCJFcGhlbWVyYWwiLCJhY2tub3dsZWRnZWQiLCJib3QiLCJoZWxwZXJzIiwic2VuZEZvbGxvd3VwTWVzc2FnZSIsInRva2VuIiwiTW9kYWxTdWJtaXQiLCJFcnJvciIsInJlc3VsdCIsInNlbmRJbnRlcmFjdGlvblJlc3BvbnNlIiwiaWQiLCJkYXRhIiwid2l0aFJlc3BvbnNlIiwiZWRpdCIsIm1lc3NhZ2VJZCIsImVkaXRGb2xsb3d1cE1lc3NhZ2UiLCJNZXNzYWdlQ29tcG9uZW50IiwiVXBkYXRlTWVzc2FnZSIsImVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJkZWZlckVkaXQiLCJEZWZlcnJlZFVwZGF0ZU1lc3NhZ2UiLCJkZWZlciIsIkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiZGVsZXRlIiwiZGVsZXRlRm9sbG93dXBNZXNzYWdlIiwiZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwicGF5bG9hZCIsImd1aWxkSWQiLCJpbnRlcmFjdGlvbiIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidXNlciIsIm1lbWJlciIsIk9iamVjdCIsImNyZWF0ZSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJ2ZXJzaW9uIiwibG9jYWxlIiwiZ3VpbGRMb2NhbGUiLCJndWlsZF9sb2NhbGUiLCJndWlsZCIsInNoYXJkSWQiLCJhcHBQZXJtaXNzaW9ucyIsImFwcF9wZXJtaXNzaW9ucyIsIm1lc3NhZ2UiLCJjaGFubmVsIiwiY2hhbm5lbElkIiwiY2hhbm5lbF9pZCIsImVudGl0bGVtZW50cyIsIm1hcCIsImUiLCJlbnRpdGxlbWVudCIsImF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMiLCJhdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMiLCJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJHdWlsZEluc3RhbGwiLCJVc2VySW5zdGFsbCIsImNvbnRleHQiLCJhdHRhY2htZW50U2l6ZUxpbWl0IiwiYXR0YWNobWVudF9zaXplX2xpbWl0IiwiY29tcG9uZW50VHlwZSIsImNvbXBvbmVudF90eXBlIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJjb21wb25lbnRzIiwiY29tcG9uZW50IiwidmFsdWVzIiwibmFtZSIsInJlc29sdmVkIiwiaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJvcHQiLCJpbnRlcmFjdGlvbkRhdGFPcHRpb25zIiwidGFyZ2V0SWQiLCJ0YXJnZXRfaWQiLCJjdXN0b21pemVycyIsIm9wdGlvbiIsInZhbHVlIiwiZm9jdXNlZCIsInRyYW5zZm9ybWVkIiwibWVzc2FnZXMiLCJDb2xsZWN0aW9uIiwiZW50cmllcyIsIl9pZCIsInVzZXJzIiwibWVtYmVycyIsInJvbGVzIiwicm9sZSIsImNoYW5uZWxzIiwiYXR0YWNobWVudHMiLCJrZXkiLCJhdHRhY2htZW50IiwiaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwiaW50ZXJhY3Rpb25DYWxsYmFjayIsInJlc291cmNlIiwiaW50ZXJhY3Rpb25SZXNvdXJjZSIsImNhbGxiYWNrIiwiYWN0aXZpdHlJbnN0YW5jZUlkIiwiYWN0aXZpdHlfaW5zdGFuY2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VJZCIsInJlc3BvbnNlX21lc3NhZ2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwiLCJyZXNwb25zZV9tZXNzYWdlX2VwaGVtZXJhbCIsInJlc3BvbnNlTWVzc2FnZUxvYWRpbmciLCJyZXNwb25zZV9tZXNzYWdlX2xvYWRpbmciLCJhY3Rpdml0eUluc3RhbmNlIiwiYWN0aXZpdHlfaW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBNEJhQTtlQUFBQTs7UUFxR0dDO2VBQUFBOztRQXNLQUM7ZUFBQUE7O1FBbEJBQztlQUFBQTs7UUEzRUFDO2VBQUFBOztRQVlBQztlQUFB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
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIEJpZ1N0cmluZyxcbiAgQm90LFxuICBDb21wbGV0ZURlc2lyZWRQcm9wZXJ0aWVzLFxuICBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLFxuICBJbnRlcmFjdGlvbixcbiAgSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICBJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICBJbnRlcmFjdGlvblJlc29sdmVkRGF0YUNoYW5uZWwsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWREYXRhTWVtYmVyLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBNZXNzYWdlLFxuICBSb2xlLFxuICBTZXR1cERlc2lyZWRQcm9wcyxcbiAgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG4gIFRyYW5zZm9ybVByb3BlcnR5LFxuICBVc2VyLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuLy8gQXNzdW1lIHdlIGhhdmUgYWxsIGRlc2lyZWQgcHJvcGVydGllcyBmb3IgdGhpcyBvciBlbHNlIHR5cGVzY3JpcHQgd2lsbCBnZXQgdmVyeSBjb25mdXNlZCBmb3IgdGhlIHJldHVybiB0eXBlcyBvZiB0aGVzZSBmdW5jdGlvbnMuXG4vLyBUaGlzIGlzIHVzZWQgYXMgYSBwcm90b3R5cGUsIHNvIHRoZSBhY3R1YWwgdHlwZSB3aXRoIHRoZSB1c2VyIGRlc2lyZWQgcHJvcGVydGllcyB3aWxsIGJlIHNldCBsYXRlci5cbmV4cG9ydCBjb25zdCBiYXNlSW50ZXJhY3Rpb246IFNldHVwRGVzaXJlZFByb3BzPEludGVyYWN0aW9uLCBDb21wbGV0ZURlc2lyZWRQcm9wZXJ0aWVzPHt9LCB0cnVlPiwgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvci5SZW1vdmVLZXk+ID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIFNldHVwRGVzaXJlZFByb3BzPEludGVyYWN0aW9uLCBDb21wbGV0ZURlc2lyZWRQcm9wZXJ0aWVzPHt9LCB0cnVlPiwgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvci5SZW1vdmVLZXk+KSxcblxuICBhc3luYyByZXNwb25kKHJlc3BvbnNlLCBvcHRpb25zKSB7XG4gICAgbGV0IHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYW4gb2JqZWN0LCBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIGJlIGFuIGF1dG9jb21wbGV0ZSBvciBhIG1vZGFsIHJlc3BvbnNlXG4gICAgaWYgKHJlc3BvbnNlLnRpdGxlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlUmVzdWx0XG4gICAgaWYgKHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UgJiYgb3B0aW9ucz8uaXNQcml2YXRlKSB7XG4gICAgICByZXNwb25zZS5mbGFncyA/Pz0gMFxuICAgICAgcmVzcG9uc2UuZmxhZ3MgfD0gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbFxuICAgIH1cblxuICAgIC8vIFNpbmNlIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBnaXZlbiBhIHJlc3BvbnNlLCBhbnkgZnVydGhlciByZXNwb25zZXMgbXVzdCBiZSBmb2xsb3d1cHMuXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIHJlc3BvbnNlKVxuXG4gICAgLy8gTW9kYWxzIGNhbm5vdCBiZSBjaGFpbmVkXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdCAmJiB0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZXNwb25kIHRvIGEgbW9kYWwgaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIG1vZGFsLicpXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgdGhpcy5pZCxcbiAgICAgIHRoaXMudG9rZW4sXG4gICAgICB7IHR5cGUsIGRhdGE6IHJlc3BvbnNlIH0sXG4gICAgICB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0sXG4gICAgKVxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbiAgYXN5bmMgZWRpdChyZXNwb25zZSwgbWVzc2FnZUlkLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIGlmIChtZXNzYWdlSWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5lZGl0Rm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZCwgcmVzcG9uc2UpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFja25vd2xlZGdlZCkge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpbnRlcmFjdGlvbiBoYXMgbm90IGJlZW4gcmVzcG9uZGVkIHRvIHlldCBhbmQgdGhpcyBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICAgIHRoaXMuaWQsXG4gICAgICAgIHRoaXMudG9rZW4sXG4gICAgICAgIHsgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLlVwZGF0ZU1lc3NhZ2UsIGRhdGE6IHJlc3BvbnNlIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5lZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4sIHJlc3BvbnNlKVxuICB9LFxuICBhc3luYyBkZWZlckVkaXQob3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVmZXIgdG8gdGhlbiBlZGl0IGFuIGludGVyYWN0aW9uIHRoYXQgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShcbiAgICAgIHRoaXMuaWQsXG4gICAgICB0aGlzLnRva2VuLFxuICAgICAgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRVcGRhdGVNZXNzYWdlIH0sXG4gICAgICBvcHRpb25zLFxuICAgIClcbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sXG4gIGFzeW5jIGRlZmVyKGlzUHJpdmF0ZSwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9LFxuICBhc3luYyBkZWxldGUobWVzc2FnZUlkKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlbGV0ZSBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24nKVxuXG4gICAgaWYgKG1lc3NhZ2VJZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQpXG4gICAgZWxzZSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4pXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uLCBleHRyYT86IHsgc2hhcmRJZD86IG51bWJlciB9KTogSW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgaW50ZXJhY3Rpb246IFNldHVwRGVzaXJlZFByb3BzPEludGVyYWN0aW9uLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4gPSBPYmplY3QuY3JlYXRlKGJhc2VJbnRlcmFjdGlvbilcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uXG5cbiAgaW50ZXJhY3Rpb24uYm90ID0gYm90XG4gIGludGVyYWN0aW9uLmFja25vd2xlZGdlZCA9IGZhbHNlXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGludGVyYWN0aW9uLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5hcHBsaWNhdGlvbl9pZCkgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQudmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQudmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkICYmIHBheWxvYWQuZ3VpbGQpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmd1aWxkIGlzIGEgUGFydGlhbDxEaXNjb3JkR3VpbGQ+XG4gICAgaW50ZXJhY3Rpb24uZ3VpbGQgPSBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgcGF5bG9hZC5ndWlsZCwgeyBzaGFyZElkOiBleHRyYT8uc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBndWlsZElkKSBpbnRlcmFjdGlvbi5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMudXNlcikge1xuICAgIGlmIChwYXlsb2FkLm1lbWJlcj8udXNlcikgaW50ZXJhY3Rpb24udXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQubWVtYmVyPy51c2VyKVxuICAgIGVsc2UgaWYgKHBheWxvYWQudXNlcikgaW50ZXJhY3Rpb24udXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQudXNlcilcbiAgfVxuICBpZiAocHJvcHMuYXBwUGVybWlzc2lvbnMgJiYgcGF5bG9hZC5hcHBfcGVybWlzc2lvbnMpIGludGVyYWN0aW9uLmFwcFBlcm1pc3Npb25zID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hcHBfcGVybWlzc2lvbnMpXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQubWVzc2FnZSkgaW50ZXJhY3Rpb24ubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHBheWxvYWQubWVzc2FnZSwgeyBzaGFyZElkOiBleHRyYT8uc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuY2hhbm5lbCAmJiBwYXlsb2FkLmNoYW5uZWwpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmNoYW5uZWwgaXMgYSBQYXJ0aWFsPD5cbiAgICBpbnRlcmFjdGlvbi5jaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgcGF5bG9hZC5jaGFubmVsLCB7IGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmNoYW5uZWxfaWQpIGludGVyYWN0aW9uLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLm1lbWJlciAmJiBndWlsZElkICYmIHBheWxvYWQubWVtYmVyKVxuICAgIGludGVyYWN0aW9uLm1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5tZW1iZXIsIHtcbiAgICAgIGd1aWxkSWQsXG4gICAgICB1c2VySWQ6IHBheWxvYWQubWVtYmVyPy51c2VyLmlkID8/IHBheWxvYWQudXNlcj8uaWQsXG4gICAgfSlcbiAgaWYgKHByb3BzLmVudGl0bGVtZW50cyAmJiBwYXlsb2FkLmVudGl0bGVtZW50cykgaW50ZXJhY3Rpb24uZW50aXRsZW1lbnRzID0gcGF5bG9hZC5lbnRpdGxlbWVudHMubWFwKChlKSA9PiBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgZSkpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzICYmIHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzKSB7XG4gICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG5cbiAgICBpZiAocGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5jb250ZXh0ICYmIHBheWxvYWQuY29udGV4dCkgaW50ZXJhY3Rpb24uY29udGV4dCA9IHBheWxvYWQuY29udGV4dFxuICBpZiAocHJvcHMuYXR0YWNobWVudFNpemVMaW1pdCAmJiBwYXlsb2FkLmF0dGFjaG1lbnRfc2l6ZV9saW1pdCkgaW50ZXJhY3Rpb24uYXR0YWNobWVudFNpemVMaW1pdCA9IHBheWxvYWQuYXR0YWNobWVudF9zaXplX2xpbWl0XG4gIGlmIChwcm9wcy5kYXRhICYmIHBheWxvYWQuZGF0YSkge1xuICAgIGludGVyYWN0aW9uLmRhdGEgPSB7XG4gICAgICB0eXBlOiBwYXlsb2FkLmRhdGEudHlwZSxcbiAgICAgIGNvbXBvbmVudFR5cGU6IHBheWxvYWQuZGF0YS5jb21wb25lbnRfdHlwZSxcbiAgICAgIGN1c3RvbUlkOiBwYXlsb2FkLmRhdGEuY3VzdG9tX2lkLFxuICAgICAgY29tcG9uZW50czogcGF5bG9hZC5kYXRhLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpLFxuICAgICAgdmFsdWVzOiBwYXlsb2FkLmRhdGEudmFsdWVzLFxuICAgICAgaWQ6IHBheWxvYWQuZGF0YS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZGF0YS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiBwYXlsb2FkLmRhdGEubmFtZSxcbiAgICAgIHJlc29sdmVkOiBwYXlsb2FkLmRhdGEucmVzb2x2ZWRcbiAgICAgICAgPyBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZC5kYXRhLnJlc29sdmVkLCB7IHNoYXJkSWQ6IGV4dHJhPy5zaGFyZElkLCBndWlsZElkIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uczogcGF5bG9hZC5kYXRhLm9wdGlvbnM/Lm1hcCgob3B0KSA9PiBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YU9wdGlvbnMoYm90LCBvcHQpKSxcbiAgICAgIHRhcmdldElkOiBwYXlsb2FkLmRhdGEudGFyZ2V0X2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5kYXRhLnRhcmdldF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggaW50ZXJhY3Rpb24uYm90LCBzbyB3ZSBuZWVkIHRvIHRlbGwgaGltIGZvciBzdXJlIHRoaXMgaW50ZXJhY3Rpb24gaXMgdGhlIG9mIHRoZSBjb3JyZWN0IHR5cGVcbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbiBhcyB1bmtub3duIGFzIHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uLCBleHRyYSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoXG4gIGJvdDogQm90LFxuICBwYXlsb2FkOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIGV4dHJhPzogeyBzaGFyZElkPzogbnVtYmVyOyBndWlsZElkPzogQmlnU3RyaW5nIH0sXG4pOiBUcmFuc2Zvcm1Qcm9wZXJ0eTxJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IuUmVtb3ZlS2V5PiB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHBheWxvYWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5tZXNzYWdlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBEZWFsIHdpdGggcGFydGlhbHNcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHZhbHVlLCB7IHNoYXJkSWQ6IGV4dHJhPy5zaGFyZElkIH0pIGFzIE1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIFttZXNzYWdlLmlkLCBtZXNzYWdlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQudXNlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC51c2VycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC51c2VycykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHZhbHVlKSBhcyBVc2VyXG4gICAgICAgIHJldHVybiBbdXNlci5pZCwgdXNlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChleHRyYT8uZ3VpbGRJZCAmJiBwYXlsb2FkLm1lbWJlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBEZWFsIHdpdGggcGFydGlhbHMsIHZhbHVlIGlzIG1pc3NpbmcgMiB2YWx1ZXMgYnV0IHRoZSB0cmFuc2Zvcm1lciBjYW4gaGFuZGxlIGl0LCBkZXNwaXRlIHdoYXQgdGhlIHR5cGVzIHNheXNcbiAgICAgICAgY29uc3QgbWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCB2YWx1ZSwge1xuICAgICAgICAgIGd1aWxkSWQ6IGV4dHJhLmd1aWxkSWQsXG4gICAgICAgICAgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCksXG4gICAgICAgIH0pIGFzIEludGVyYWN0aW9uUmVzb2x2ZWREYXRhTWVtYmVyPFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPlxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdGVsbCBUUyB0aGF0IHdlIGFyZSBzdXJlIHRoZSBpZCBpcyBhIGJpZ2ludFxuICAgICAgICByZXR1cm4gW21lbWJlci5pZCBhcyBiaWdpbnQsIG1lbWJlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChleHRyYT8uZ3VpbGRJZCAmJiBwYXlsb2FkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucm9sZXMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB2YWx1ZSwgeyBndWlsZElkOiBleHRyYS5ndWlsZElkIH0pIGFzIFJvbGVcbiAgICAgICAgcmV0dXJuIFtyb2xlLmlkLCByb2xlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5jaGFubmVscykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHZhbHVlKSBhcyB1bmtub3duIGFzIEludGVyYWN0aW9uUmVzb2x2ZWREYXRhQ2hhbm5lbDxcbiAgICAgICAgICBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyxcbiAgICAgICAgICBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yXG4gICAgICAgID5cbiAgICAgICAgLy8gV2UgbmVlZCB0byB0ZWxsIFRTIHRoYXQgd2UgYXJlIHN1cmUgdGhlIGlkIGlzIGEgYmlnaW50XG4gICAgICAgIHJldHVybiBbY2hhbm5lbC5pZCBhcyBiaWdpbnQsIGNoYW5uZWxdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5hdHRhY2htZW50cykge1xuICAgIHRyYW5zZm9ybWVkLmF0dGFjaG1lbnRzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLmF0dGFjaG1lbnRzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGtleSlcbiAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKSBhcyBBdHRhY2htZW50XG4gICAgICAgIHJldHVybiBbaWQsIGF0dGFjaG1lbnRdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQsIHRyYW5zZm9ybWVkLCB7XG4gICAgc2hhcmRJZDogZXh0cmE/LnNoYXJkSWQsXG4gICAgZ3VpbGRJZDogZXh0cmE/Lmd1aWxkSWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShleHRyYS5ndWlsZElkKSA6IHVuZGVmaW5lZCxcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZShcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIGV4dHJhPzogeyBzaGFyZElkPzogbnVtYmVyIH0sXG4pOiBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG4gIGNvbnN0IHJlc3BvbnNlID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj5cblxuICBpZiAocHJvcHMuaW50ZXJhY3Rpb24gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbikgcmVzcG9uc2UuaW50ZXJhY3Rpb24gPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLmludGVyYWN0aW9uKVxuICBpZiAocHJvcHMucmVzb3VyY2UgJiYgcGF5bG9hZC5yZXNvdXJjZSkgcmVzcG9uc2UucmVzb3VyY2UgPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCBwYXlsb2FkLnJlc291cmNlLCB7IHNoYXJkSWQ6IGV4dHJhPy5zaGFyZElkIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKGJvdCwgcGF5bG9hZCwgcmVzcG9uc2UsIGV4dHJhKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayhib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2spOiBJbnRlcmFjdGlvbkNhbGxiYWNrIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uQ2FsbGJhY2tcbiAgY29uc3QgY2FsbGJhY2sgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxJbnRlcmFjdGlvbkNhbGxiYWNrLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj5cblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2FsbGJhY2suaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNhbGxiYWNrLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2VJZCAmJiBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkKSBjYWxsYmFjay5hY3Rpdml0eUluc3RhbmNlSWQgPSBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VJZCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfaWQpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCA9IHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWxcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmcpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfbG9hZGluZ1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLCBjYWxsYmFjaylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uUmVzb3VyY2UoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLCBleHRyYT86IHsgc2hhcmRJZD86IG51bWJlciB9KTogSW50ZXJhY3Rpb25SZXNvdXJjZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb25SZXNvdXJjZSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSByZXNvdXJjZS50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlICYmIHBheWxvYWQuYWN0aXZpdHlfaW5zdGFuY2UpIHJlc291cmNlLmFjdGl2aXR5SW5zdGFuY2UgPSBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQubWVzc2FnZSkgcmVzb3VyY2UubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHBheWxvYWQubWVzc2FnZSwgeyBzaGFyZElkOiBleHRyYT8uc2hhcmRJZCB9KVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCBwYXlsb2FkLCByZXNvdXJjZSwgZXh0cmEpXG59XG4iXSwibmFtZXMiOlsiYmFzZUludGVyYWN0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb24iLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlIiwidW5kZWZpbmVkIiwicmVzcG9uZCIsInJlc3BvbnNlIiwib3B0aW9ucyIsInR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJjb250ZW50IiwidGl0bGUiLCJNb2RhbCIsIkludGVyYWN0aW9uVHlwZXMiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIk1lc3NhZ2VGbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwicmVzdWx0Iiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJ3aXRoUmVzcG9uc2UiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJwYXlsb2FkIiwiZXh0cmEiLCJndWlsZElkIiwiZ3VpbGRfaWQiLCJ0cmFuc2Zvcm1lcnMiLCJzbm93Zmxha2UiLCJpbnRlcmFjdGlvbiIsIk9iamVjdCIsImNyZWF0ZSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJ2ZXJzaW9uIiwibG9jYWxlIiwiZ3VpbGRMb2NhbGUiLCJndWlsZF9sb2NhbGUiLCJndWlsZCIsInNoYXJkSWQiLCJ1c2VyIiwibWVtYmVyIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJ1c2VySWQiLCJlbnRpdGxlbWVudHMiLCJtYXAiLCJlIiwiZW50aXRsZW1lbnQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiYXR0YWNobWVudFNpemVMaW1pdCIsImF0dGFjaG1lbnRfc2l6ZV9saW1pdCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsImludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1lZCIsIm1lc3NhZ2VzIiwiQ29sbGVjdGlvbiIsImVudHJpZXMiLCJfaWQiLCJ1c2VycyIsIm1lbWJlcnMiLCJyb2xlcyIsInJvbGUiLCJjaGFubmVscyIsImF0dGFjaG1lbnRzIiwia2V5IiwiYXR0YWNobWVudCIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2siLCJyZXNvdXJjZSIsImludGVyYWN0aW9uUmVzb3VyY2UiLCJjYWxsYmFjayIsImFjdGl2aXR5SW5zdGFuY2VJZCIsImFjdGl2aXR5X2luc3RhbmNlX2lkIiwicmVzcG9uc2VNZXNzYWdlSWQiLCJyZXNwb25zZV9tZXNzYWdlX2lkIiwicmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsIiwicmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwiLCJyZXNwb25zZU1lc3NhZ2VMb2FkaW5nIiwicmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nIiwiYWN0aXZpdHlJbnN0YW5jZSIsImFjdGl2aXR5X2luc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQXFDYUE7ZUFBQUE7O1FBcUdHQztlQUFBQTs7UUFnTEFDO2VBQUFBOztRQWRBQztlQUFBQTs7UUEzRkFDO2VBQUFBOztRQVlBQztlQUFBQTs7UUEyR0FDO2VBQUFBOzs7dUJBN1RUO3VCQUNvQjtBQXlCcEIsTUFBTU4sa0JBQTRIO0lBQ3ZJLDJFQUEyRTtJQUMzRSxHQUFJTyxTQUFTO0lBRWIsTUFBTUMsU0FBUUMsUUFBUSxFQUFFQyxPQUFPO1FBQzdCLElBQUlDLE9BQU9DLCtCQUF3QixDQUFDQyx3QkFBd0I7UUFFNUQsNERBQTREO1FBQzVELElBQUksT0FBT0osYUFBYSxVQUFVQSxXQUFXO1lBQUVLLFNBQVNMO1FBQVM7UUFFakUsNEZBQTRGO1FBQzVGLElBQUlBLFNBQVNNLEtBQUssRUFBRUosT0FBT0MsK0JBQXdCLENBQUNJLEtBQUs7UUFDekQsSUFBSSxJQUFJLENBQUNMLElBQUksS0FBS00sdUJBQWdCLENBQUNDLDhCQUE4QixFQUFFUCxPQUFPQywrQkFBd0IsQ0FBQ08sb0NBQW9DO1FBQ3ZJLElBQUlSLFNBQVNDLCtCQUF3QixDQUFDQyx3QkFBd0IsSUFBSUgsU0FBU1UsV0FBVztZQUNwRlgsU0FBU1ksS0FBSyxLQUFLO1lBQ25CWixTQUFTWSxLQUFLLElBQUlDLG1CQUFZLENBQUNDLFNBQVM7UUFDMUM7UUFFQSx5RkFBeUY7UUFDekYsSUFBSSxJQUFJLENBQUNDLFlBQVksRUFBRSxPQUFPLE1BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUND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
@@ -9,44 +9,43 @@ Object.defineProperty(exports, "transformInvite", {
9
9
  }
10
10
  });
11
11
  const _index = require("../index.cjs");
12
- function transformInvite(bot, payload) {
12
+ function transformInvite(bot, payload, extra) {
13
13
  const props = bot.transformers.desiredProperties.invite;
14
14
  const invite = {};
15
- if (props.type && 'type' in payload.invite) invite.type = payload.invite.type;
16
- if (props.code && payload.invite.code) invite.code = payload.invite.code;
17
- if (props.createdAt && payload.invite.created_at) invite.createdAt = Date.parse(payload.invite.created_at);
18
- if (props.inviter && payload.invite.inviter) invite.inviter = bot.transformers.user(bot, payload.invite.inviter);
19
- if (props.maxAge) invite.maxAge = payload.invite.max_age;
20
- if (props.maxUses) invite.maxUses = payload.invite.max_uses;
21
- if (props.targetType && payload.invite.target_type) invite.targetType = payload.invite.target_type;
22
- if (props.targetUser && payload.invite.target_user) invite.targetUser = bot.transformers.user(bot, payload.invite.target_user);
23
- if (props.targetApplication && payload.invite.target_application) invite.targetApplication = bot.transformers.application(bot, {
24
- application: payload.invite.target_application,
25
- shardId: payload.shardId
15
+ if (props.type && 'type' in payload) invite.type = payload.type;
16
+ if (props.code && payload.code) invite.code = payload.code;
17
+ if (props.createdAt && payload.created_at) invite.createdAt = Date.parse(payload.created_at);
18
+ if (props.inviter && payload.inviter) invite.inviter = bot.transformers.user(bot, payload.inviter);
19
+ if (props.maxAge) invite.maxAge = payload.max_age;
20
+ if (props.maxUses) invite.maxUses = payload.max_uses;
21
+ if (props.targetType && payload.target_type) invite.targetType = payload.target_type;
22
+ if (props.targetUser && payload.target_user) invite.targetUser = bot.transformers.user(bot, payload.target_user);
23
+ if (props.targetApplication && payload.target_application) // @ts-expect-error TODO: Partials
24
+ invite.targetApplication = bot.transformers.application(bot, payload.target_application, {
25
+ shardId: extra?.shardId
26
26
  });
27
- if (props.temporary && payload.invite.temporary) invite.temporary = payload.invite.temporary;
28
- if (props.uses && payload.invite.uses) invite.uses = payload.invite.uses;
29
- if ((0, _index.isInviteWithMetadata)(payload.invite)) {
30
- if (props.channelId && payload.invite.channel?.id) invite.channelId = bot.transformers.snowflake(payload.invite.channel.id);
31
- if (props.guildId && payload.invite.guild?.id) invite.guildId = bot.transformers.snowflake(payload.invite.guild.id);
32
- if (props.approximateMemberCount && payload.invite.approximate_member_count) invite.approximateMemberCount = payload.invite.approximate_member_count;
33
- if (props.approximatePresenceCount && payload.invite.approximate_presence_count !== undefined) invite.approximatePresenceCount = payload.invite.approximate_presence_count;
34
- if (props.guildScheduledEvent && payload.invite.guild_scheduled_event) invite.guildScheduledEvent = bot.transformers.scheduledEvent(bot, payload.invite.guild_scheduled_event);
35
- if (props.stageInstance && invite.guildId && payload.invite.stage_instance) {
36
- invite.stageInstance = bot.transformers.inviteStageInstance(bot, {
37
- ...payload.invite.stage_instance,
38
- guildId: invite.guildId
27
+ if (props.temporary && payload.temporary) invite.temporary = payload.temporary;
28
+ if (props.uses && payload.uses) invite.uses = payload.uses;
29
+ if ((0, _index.isInviteWithMetadata)(payload)) {
30
+ if (props.channelId && payload.channel?.id) invite.channelId = bot.transformers.snowflake(payload.channel.id);
31
+ if (props.guildId && payload.guild?.id) invite.guildId = bot.transformers.snowflake(payload.guild.id);
32
+ if (props.approximateMemberCount && payload.approximate_member_count) invite.approximateMemberCount = payload.approximate_member_count;
33
+ if (props.approximatePresenceCount && payload.approximate_presence_count !== undefined) invite.approximatePresenceCount = payload.approximate_presence_count;
34
+ if (props.guildScheduledEvent && payload.guild_scheduled_event) invite.guildScheduledEvent = bot.transformers.scheduledEvent(bot, payload.guild_scheduled_event);
35
+ if (props.stageInstance && payload.guild?.id && payload.stage_instance) {
36
+ invite.stageInstance = bot.transformers.inviteStageInstance(bot, payload.stage_instance, {
37
+ guildId: payload.guild.id
39
38
  });
40
39
  }
41
- if (props.expiresAt && payload.invite.expires_at) {
42
- invite.expiresAt = Date.parse(payload.invite.expires_at);
40
+ if (props.expiresAt && payload.expires_at) {
41
+ invite.expiresAt = Date.parse(payload.expires_at);
43
42
  }
44
- if (props.flags && payload.invite.flags) invite.flags = new _index.ToggleBitfield(payload.invite.flags);
43
+ if (props.flags && payload.flags) invite.flags = new _index.ToggleBitfield(payload.flags);
45
44
  } else {
46
- if (props.channelId && payload.invite.channel_id) invite.channelId = bot.transformers.snowflake(payload.invite.channel_id);
47
- if (props.guildId && payload.invite.guild_id) invite.guildId = bot.transformers.snowflake(payload.invite.guild_id);
45
+ if (props.channelId && payload.channel_id) invite.channelId = bot.transformers.snowflake(payload.channel_id);
46
+ if (props.guildId && payload.guild_id) invite.guildId = bot.transformers.snowflake(payload.guild_id);
48
47
  }
49
- return bot.transformers.customizers.invite(bot, payload.invite, invite);
48
+ return bot.transformers.customizers.invite(bot, payload, invite, extra);
50
49
  }
51
50
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW52aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEFwcGxpY2F0aW9uLCBEaXNjb3JkSW52aXRlQ3JlYXRlLCBEaXNjb3JkSW52aXRlTWV0YWRhdGEgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxCb3QsIHR5cGUgSW52aXRlLCBUb2dnbGVCaXRmaWVsZCwgaXNJbnZpdGVXaXRoTWV0YWRhdGEgfSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludml0ZShcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogeyBpbnZpdGU6IERpc2NvcmRJbnZpdGVDcmVhdGUgfCBEaXNjb3JkSW52aXRlTWV0YWRhdGE7IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW52aXRlIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludml0ZVxuICBjb25zdCBpbnZpdGUgPSB7fSBhcyBJbnZpdGVcblxuICBpZiAocHJvcHMudHlwZSAmJiAndHlwZScgaW4gcGF5bG9hZC5pbnZpdGUpIGludml0ZS50eXBlID0gcGF5bG9hZC5pbnZpdGUudHlwZVxuICBpZiAocHJvcHMuY29kZSAmJiBwYXlsb2FkLmludml0ZS5jb2RlKSBpbnZpdGUuY29kZSA9IHBheWxvYWQuaW52aXRlLmNvZGVcbiAgaWYgKHByb3BzLmNyZWF0ZWRBdCAmJiBwYXlsb2FkLmludml0ZS5jcmVhdGVkX2F0KSBpbnZpdGUuY3JlYXRlZEF0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmludml0ZS5jcmVhdGVkX2F0KVxuICBpZiAocHJvcHMuaW52aXRlciAmJiBwYXlsb2FkLmludml0ZS5pbnZpdGVyKSBpbnZpdGUuaW52aXRlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW52aXRlLmludml0ZXIpXG4gIGlmIChwcm9wcy5tYXhBZ2UpIGludml0ZS5tYXhBZ2UgPSBwYXlsb2FkLmludml0ZS5tYXhfYWdlXG4gIGlmIChwcm9wcy5tYXhVc2VzKSBpbnZpdGUubWF4VXNlcyA9IHBheWxvYWQuaW52aXRlLm1heF91c2VzXG4gIGlmIChwcm9wcy50YXJnZXRUeXBlICYmIHBheWxvYWQuaW52aXRlLnRhcmdldF90eXBlKSBpbnZpdGUudGFyZ2V0VHlwZSA9IHBheWxvYWQuaW52aXRlLnRhcmdldF90eXBlXG4gIGlmIChwcm9wcy50YXJnZXRVc2VyICYmIHBheWxvYWQuaW52aXRlLnRhcmdldF91c2VyKSBpbnZpdGUudGFyZ2V0VXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW52aXRlLnRhcmdldF91c2VyKVxuICBpZiAocHJvcHMudGFyZ2V0QXBwbGljYXRpb24gJiYgcGF5bG9hZC5pbnZpdGUudGFyZ2V0X2FwcGxpY2F0aW9uKVxuICAgIGludml0ZS50YXJnZXRBcHBsaWNhdGlvbiA9IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb24oYm90LCB7XG4gICAgICBhcHBsaWNhdGlvbjogcGF5bG9hZC5pbnZpdGUudGFyZ2V0X2FwcGxpY2F0aW9uIGFzIERpc2NvcmRBcHBsaWNhdGlvbixcbiAgICAgIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCxcbiAgICB9KVxuICBpZiAocHJvcHMudGVtcG9yYXJ5ICYmIHBheWxvYWQuaW52aXRlLnRlbXBvcmFyeSkgaW52aXRlLnRlbXBvcmFyeSA9IHBheWxvYWQuaW52aXRlLnRlbXBvcmFyeVxuICBpZiAocHJvcHMudXNlcyAmJiBwYXlsb2FkLmludml0ZS51c2VzKSBpbnZpdGUudXNlcyA9IHBheWxvYWQuaW52aXRlLnVzZXNcblxuICBpZiAoaXNJbnZpdGVXaXRoTWV0YWRhdGEocGF5bG9hZC5pbnZpdGUpKSB7XG4gICAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmludml0ZS5jaGFubmVsPy5pZCkgaW52aXRlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW52aXRlLmNoYW5uZWwuaWQpXG4gICAgaWYgKHByb3BzLmd1aWxkSWQgJiYgcGF5bG9hZC5pbnZpdGUuZ3VpbGQ/LmlkKSBpbnZpdGUuZ3VpbGRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW52aXRlLmd1aWxkLmlkKVxuICAgIGlmIChwcm9wcy5hcHByb3hpbWF0ZU1lbWJlckNvdW50ICYmIHBheWxvYWQuaW52aXRlLmFwcHJveGltYXRlX21lbWJlcl9jb3VudClcbiAgICAgIGludml0ZS5hcHByb3hpbWF0ZU1lbWJlckNvdW50ID0gcGF5bG9hZC5pbnZpdGUuYXBwcm94aW1hdGVfbWVtYmVyX2NvdW50XG4gICAgaWYgKHByb3BzLmFwcHJveGltYXRlUHJlc2VuY2VDb3VudCAmJiBwYXlsb2FkLmludml0ZS5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgaW52aXRlLmFwcHJveGltYXRlUHJlc2VuY2VDb3VudCA9IHBheWxvYWQuaW52aXRlLmFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50XG4gICAgaWYgKHByb3BzLmd1aWxkU2NoZWR1bGVkRXZlbnQgJiYgcGF5bG9hZC5pbnZpdGUuZ3VpbGRfc2NoZWR1bGVkX2V2ZW50KVxuICAgICAgaW52aXRlLmd1aWxkU2NoZWR1bGVkRXZlbnQgPSBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgcGF5bG9hZC5pbnZpdGUuZ3VpbGRfc2NoZWR1bGVkX2V2ZW50KVxuICAgIGlmIChwcm9wcy5zdGFnZUluc3RhbmNlICYmIGludml0ZS5ndWlsZElkICYmIHBheWxvYWQuaW52aXRlLnN0YWdlX2luc3RhbmNlKSB7XG4gICAgICBpbnZpdGUuc3RhZ2VJbnN0YW5jZSA9IGJvdC50cmFuc2Zvcm1lcnMuaW52aXRlU3RhZ2VJbnN0YW5jZShib3QsIHtcbiAgICAgICAgLi4ucGF5bG9hZC5pbnZpdGUuc3RhZ2VfaW5zdGFuY2UsXG4gICAgICAgIGd1aWxkSWQ6IGludml0ZS5ndWlsZElkLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHByb3BzLmV4cGlyZXNBdCAmJiBwYXlsb2FkLmludml0ZS5leHBpcmVzX2F0KSB7XG4gICAgICBpbnZpdGUuZXhwaXJlc0F0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmludml0ZS5leHBpcmVzX2F0KVxuICAgIH1cbiAgICBpZiAocHJvcHMuZmxhZ3MgJiYgcGF5bG9hZC5pbnZpdGUuZmxhZ3MpIGludml0ZS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmludml0ZS5mbGFncylcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuaW52aXRlLmNoYW5uZWxfaWQpIGludml0ZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludml0ZS5jaGFubmVsX2lkKVxuICAgIGlmIChwcm9wcy5ndWlsZElkICYmIHBheWxvYWQuaW52aXRlLmd1aWxkX2lkKSBpbnZpdGUuZ3VpbGRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW52aXRlLmd1aWxkX2lkKVxuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW52aXRlKGJvdCwgcGF5bG9hZC5pbnZpdGUsIGludml0ZSlcbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1JbnZpdGUiLCJib3QiLCJwYXlsb2FkIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsImludml0ZSIsInR5cGUiLCJjb2RlIiwiY3JlYXRlZEF0IiwiY3JlYXRlZF9hdCIsIkRhdGUiLCJwYXJzZSIsImludml0ZXIiLCJ1c2VyIiwibWF4QWdlIiwibWF4X2FnZSIsIm1heFVzZXMiLCJtYXhfdXNlcyIsInRhcmdldFR5cGUiLCJ0YXJnZXRfdHlwZSIsInRhcmdldFVzZXIiLCJ0YXJnZXRfdXNlciIsInRhcmdldEFwcGxpY2F0aW9uIiwidGFyZ2V0X2FwcGxpY2F0aW9uIiwiYXBwbGljYXRpb24iLCJzaGFyZElkIiwidGVtcG9yYXJ5IiwidXNlcyIsImlzSW52aXRlV2l0aE1ldGFkYXRhIiwiY2hhbm5lbElkIiwiY2hhbm5lbCIsImlkIiwic25vd2ZsYWtlIiwiZ3VpbGRJZCIsImd1aWxkIiwiYXBwcm94aW1hdGVNZW1iZXJDb3VudCIsImFwcHJveGltYXRlX21lbWJlcl9jb3VudCIsImFwcHJveGltYXRlUHJlc2VuY2VDb3VudCIsImFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50IiwidW5kZWZpbmVkIiwiZ3VpbGRTY2hlZHVsZWRFdmVudCIsImd1aWxkX3NjaGVkdWxlZF9ldmVudCIsInNjaGVkdWxlZEV2ZW50Iiwic3RhZ2VJbnN0YW5jZSIsInN0YWdlX2luc3RhbmNlIiwiaW52aXRlU3RhZ2VJbnN0YW5jZSIsImV4cGlyZXNBdCIsImV4cGlyZXNfYXQiLCJmbGFncyIsIlRvZ2dsZUJpdGZpZWxkIiwiY2hhbm5lbF9pZCIsImd1aWxkX2lkIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2dCQTs7O2VBQUFBOzs7dUJBRm9FO0FBRTdFLFNBQVNBLGdCQUNkQyxHQUFnQixFQUNoQkMsT0FBaUY7SUFFakYsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsTUFBTTtJQUN2RCxNQUFNQSxTQUFTLENBQUM7SUFFaEIsSUFBSUgsTUFBTUksSUFBSSxJQUFJLFVBQVVMLFFBQVFJLE1BQU0sRUFBRUEsT0FBT0MsSUFBSSxHQUFHTCxRQUFRSSxNQUFNLENBQUNDLElBQUk7SUFDN0UsSUFBSUosTUFBTUssSUFBSSxJQUFJTixRQUFRSSxNQUFNLENBQUNFLElBQUksRUFBRUYsT0FBT0UsSUFBSSxHQUFHTixRQUFRSSxNQUFNLENBQUNFLElBQUk7SUFDeEUsSUFBSUws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
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW52aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEludml0ZUNyZWF0ZSwgRGlzY29yZEludml0ZU1ldGFkYXRhIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQge1xuICB0eXBlIEJvdCxcbiAgdHlwZSBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLFxuICB0eXBlIEludml0ZSxcbiAgaXNJbnZpdGVXaXRoTWV0YWRhdGEsXG4gIHR5cGUgU2V0dXBEZXNpcmVkUHJvcHMsXG4gIFRvZ2dsZUJpdGZpZWxkLFxuICB0eXBlIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludml0ZShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEludml0ZUNyZWF0ZSB8IERpc2NvcmRJbnZpdGVNZXRhZGF0YSwgZXh0cmE/OiB7IHNoYXJkSWQ/OiBudW1iZXIgfSk6IEludml0ZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnZpdGVcbiAgY29uc3QgaW52aXRlID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8SW52aXRlLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj5cblxuICBpZiAocHJvcHMudHlwZSAmJiAndHlwZScgaW4gcGF5bG9hZCkgaW52aXRlLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmNvZGUgJiYgcGF5bG9hZC5jb2RlKSBpbnZpdGUuY29kZSA9IHBheWxvYWQuY29kZVxuICBpZiAocHJvcHMuY3JlYXRlZEF0ICYmIHBheWxvYWQuY3JlYXRlZF9hdCkgaW52aXRlLmNyZWF0ZWRBdCA9IERhdGUucGFyc2UocGF5bG9hZC5jcmVhdGVkX2F0KVxuICBpZiAocHJvcHMuaW52aXRlciAmJiBwYXlsb2FkLmludml0ZXIpIGludml0ZS5pbnZpdGVyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5pbnZpdGVyKVxuICBpZiAocHJvcHMubWF4QWdlKSBpbnZpdGUubWF4QWdlID0gcGF5bG9hZC5tYXhfYWdlXG4gIGlmIChwcm9wcy5tYXhVc2VzKSBpbnZpdGUubWF4VXNlcyA9IHBheWxvYWQubWF4X3VzZXNcbiAgaWYgKHByb3BzLnRhcmdldFR5cGUgJiYgcGF5bG9hZC50YXJnZXRfdHlwZSkgaW52aXRlLnRhcmdldFR5cGUgPSBwYXlsb2FkLnRhcmdldF90eXBlXG4gIGlmIChwcm9wcy50YXJnZXRVc2VyICYmIHBheWxvYWQudGFyZ2V0X3VzZXIpIGludml0ZS50YXJnZXRVc2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC50YXJnZXRfdXNlcilcbiAgaWYgKHByb3BzLnRhcmdldEFwcGxpY2F0aW9uICYmIHBheWxvYWQudGFyZ2V0X2FwcGxpY2F0aW9uKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogUGFydGlhbHNcbiAgICBpbnZpdGUudGFyZ2V0QXBwbGljYXRpb24gPSBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgcGF5bG9hZC50YXJnZXRfYXBwbGljYXRpb24sIHsgc2hhcmRJZDogZXh0cmE/LnNoYXJkSWQgfSlcbiAgaWYgKHByb3BzLnRlbXBvcmFyeSAmJiBwYXlsb2FkLnRlbXBvcmFyeSkgaW52aXRlLnRlbXBvcmFyeSA9IHBheWxvYWQudGVtcG9yYXJ5XG4gIGlmIChwcm9wcy51c2VzICYmIHBheWxvYWQudXNlcykgaW52aXRlLnVzZXMgPSBwYXlsb2FkLnVzZXNcblxuICBpZiAoaXNJbnZpdGVXaXRoTWV0YWRhdGEocGF5bG9hZCkpIHtcbiAgICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuY2hhbm5lbD8uaWQpIGludml0ZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWwuaWQpXG4gICAgaWYgKHByb3BzLmd1aWxkSWQgJiYgcGF5bG9hZC5ndWlsZD8uaWQpIGludml0ZS5ndWlsZElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5pZClcbiAgICBpZiAocHJvcHMuYXBwcm94aW1hdGVNZW1iZXJDb3VudCAmJiBwYXlsb2FkLmFwcHJveGltYXRlX21lbWJlcl9jb3VudCkgaW52aXRlLmFwcHJveGltYXRlTWVtYmVyQ291bnQgPSBwYXlsb2FkLmFwcHJveGltYXRlX21lbWJlcl9jb3VudFxuICAgIGlmIChwcm9wcy5hcHByb3hpbWF0ZVByZXNlbmNlQ291bnQgJiYgcGF5bG9hZC5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgaW52aXRlLmFwcHJveGltYXRlUHJlc2VuY2VDb3VudCA9IHBheWxvYWQuYXBwcm94aW1hdGVfcHJlc2VuY2VfY291bnRcbiAgICBpZiAocHJvcHMuZ3VpbGRTY2hlZHVsZWRFdmVudCAmJiBwYXlsb2FkLmd1aWxkX3NjaGVkdWxlZF9ldmVudClcbiAgICAgIGludml0ZS5ndWlsZFNjaGVkdWxlZEV2ZW50ID0gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHBheWxvYWQuZ3VpbGRfc2NoZWR1bGVkX2V2ZW50KVxuICAgIGlmIChwcm9wcy5zdGFnZUluc3RhbmNlICYmIHBheWxvYWQuZ3VpbGQ/LmlkICYmIHBheWxvYWQuc3RhZ2VfaW5zdGFuY2UpIHtcbiAgICAgIGludml0ZS5zdGFnZUluc3RhbmNlID0gYm90LnRyYW5zZm9ybWVycy5pbnZpdGVTdGFnZUluc3RhbmNlKGJvdCwgcGF5bG9hZC5zdGFnZV9pbnN0YW5jZSwgeyBndWlsZElkOiBwYXlsb2FkLmd1aWxkLmlkIH0pXG4gICAgfVxuICAgIGlmIChwcm9wcy5leHBpcmVzQXQgJiYgcGF5bG9hZC5leHBpcmVzX2F0KSB7XG4gICAgICBpbnZpdGUuZXhwaXJlc0F0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmV4cGlyZXNfYXQpXG4gICAgfVxuICAgIGlmIChwcm9wcy5mbGFncyAmJiBwYXlsb2FkLmZsYWdzKSBpbnZpdGUuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncylcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuY2hhbm5lbF9pZCkgaW52aXRlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZClcbiAgICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBwYXlsb2FkLmd1aWxkX2lkKSBpbnZpdGUuZ3VpbGRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGRfaWQpXG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnZpdGUoYm90LCBwYXlsb2FkLCBpbnZpdGUsIGV4dHJhKVxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUludml0ZSIsImJvdCIsInBheWxvYWQiLCJleHRyYSIsInByb3BzIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJpbnZpdGUiLCJ0eXBlIiwiY29kZSIsImNyZWF0ZWRBdCIsImNyZWF0ZWRfYXQiLCJEYXRlIiwicGFyc2UiLCJpbnZpdGVyIiwidXNlciIsIm1heEFnZSIsIm1heF9hZ2UiLCJtYXhVc2VzIiwibWF4X3VzZXMiLCJ0YXJnZXRUeXBlIiwidGFyZ2V0X3R5cGUiLCJ0YXJnZXRVc2VyIiwidGFyZ2V0X3VzZXIiLCJ0YXJnZXRBcHBsaWNhdGlvbiIsInRhcmdldF9hcHBsaWNhdGlvbiIsImFwcGxpY2F0aW9uIiwic2hhcmRJZCIsInRlbXBvcmFyeSIsInVzZXMiLCJpc0ludml0ZVdpdGhNZXRhZGF0YSIsImNoYW5uZWxJZCIsImNoYW5uZWwiLCJpZCIsInNub3dmbGFrZSIsImd1aWxkSWQiLCJndWlsZCIsImFwcHJveGltYXRlTWVtYmVyQ291bnQiLCJhcHByb3hpbWF0ZV9tZW1iZXJfY291bnQiLCJhcHByb3hpbWF0ZVByZXNlbmNlQ291bnQiLCJhcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudCIsInVuZGVmaW5lZCIsImd1aWxkU2NoZWR1bGVkRXZlbnQiLCJndWlsZF9zY2hlZHVsZWRfZXZlbnQiLCJzY2hlZHVsZWRFdmVudCIsInN0YWdlSW5zdGFuY2UiLCJzdGFnZV9pbnN0YW5jZSIsImludml0ZVN0YWdlSW5zdGFuY2UiLCJleHBpcmVzQXQiLCJleHBpcmVzX2F0IiwiZmxhZ3MiLCJUb2dnbGVCaXRmaWVsZCIsImNoYW5uZWxfaWQiLCJndWlsZF9pZCIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdnQkE7OztlQUFBQTs7O3VCQUZUO0FBRUEsU0FBU0EsZ0JBQWdCQyxHQUFRLEVBQUVDLE9BQW9ELEVBQUVDLEtBQTRCO0lBQzFILE1BQU1DLFFBQVFILElBQUlJLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNDLE1BQU07SUFDdkQsTUFBTUEsU0FBUyxDQUFDO0lBRWhCLElBQUlILE1BQU1JLElBQUksSUFBSSxVQUFVTixTQUFTSyxPQUFPQyxJQUFJLEdBQUdOLFFBQVFNLElBQUk7SUFDL0QsSUFBSUosTUFBTUssSUFBSSxJQUFJUCxRQUFRTyxJQUFJLEVBQUVGLE9BQU9FLElBQUksR0FBR1AsUUFBUU8sSUFBSTtJQUMxRCxJQUFJTCxNQUFNTSxTQUFTLElBQUlSLFFBQVFTLFVBQVUsRUFBRUosT0FBT0csU0FBUyxHQUFHRSxLQUFLQyxLQUFLLENBQUNYLFFBQVFTLFVBQVU7SUFDM0YsSUFBSVAsTUFBTVUsT0FBTyxJQUFJWixRQUFRWSxPQUFPLEVBQUVQLE9BQU9PLE9BQU8sR0FBR2IsSUFBSUksWUFBWSxDQUFDVSxJQUFJLENBQUNkLEtBQUtDLFFBQVFZLE9BQU87SUFDakcsSUFBSVYsTUFBTVksTUFBTSxFQUFFVCxPQUFPUyxNQUFNLEdBQUdkLFFBQVFlLE9BQU87SUFDakQsSUFB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
@@ -24,9 +24,7 @@ function transformLobby(bot, payload) {
24
24
  if (props.applicationId && payload.application_id) lobby.applicationId = bot.transformers.snowflake(payload.application_id);
25
25
  if (props.metadata && payload.metadata) lobby.metadata = payload.metadata;
26
26
  if (props.members && payload.members) lobby.members = payload.members.map((member)=>bot.transformers.lobbyMember(bot, member));
27
- if (props.linkedChannel && payload.linked_channel) lobby.linkedChannel = bot.transformers.channel(bot, {
28
- channel: payload.linked_channel
29
- });
27
+ if (props.linkedChannel && payload.linked_channel) lobby.linkedChannel = bot.transformers.channel(bot, payload.linked_channel);
30
28
  return bot.transformers.customizers.lobby(bot, payload, lobby);
31
29
  }
32
30
  function transformLobbyMember(bot, payload) {
@@ -38,4 +36,4 @@ function transformLobbyMember(bot, payload) {
38
36
  return bot.transformers.customizers.lobbyMember(bot, payload, lobbyMember);
39
37
  }
40
38
 
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbG9iYnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTG9iYnksIERpc2NvcmRMb2JieU1lbWJlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbEJvdCwgdHlwZSBMb2JieSwgdHlwZSBMb2JieU1lbWJlciwgVG9nZ2xlQml0ZmllbGQgfSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxvYmJ5KGJvdDogSW50ZXJuYWxCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieSk6IExvYmJ5IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5XG4gIGNvbnN0IGxvYmJ5ID0ge30gYXMgTG9iYnlcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbG9iYnkuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKSBsb2JieS5hcHBsaWNhdGlvbklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hcHBsaWNhdGlvbl9pZClcbiAgaWYgKHByb3BzLm1ldGFkYXRhICYmIHBheWxvYWQubWV0YWRhdGEpIGxvYmJ5Lm1ldGFkYXRhID0gcGF5bG9hZC5tZXRhZGF0YVxuICBpZiAocHJvcHMubWVtYmVycyAmJiBwYXlsb2FkLm1lbWJlcnMpIGxvYmJ5Lm1lbWJlcnMgPSBwYXlsb2FkLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZW1iZXIoYm90LCBtZW1iZXIpKVxuICBpZiAocHJvcHMubGlua2VkQ2hhbm5lbCAmJiBwYXlsb2FkLmxpbmtlZF9jaGFubmVsKSBsb2JieS5saW5rZWRDaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmxpbmtlZF9jaGFubmVsIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubG9iYnkoYm90LCBwYXlsb2FkLCBsb2JieSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxvYmJ5TWVtYmVyKGJvdDogSW50ZXJuYWxCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieU1lbWJlcik6IExvYmJ5TWVtYmVyIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5TWVtYmVyXG4gIGNvbnN0IGxvYmJ5TWVtYmVyID0ge30gYXMgTG9iYnlNZW1iZXJcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbG9iYnlNZW1iZXIuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMubWV0YWRhdGEgJiYgcGF5bG9hZC5tZXRhZGF0YSkgbG9iYnlNZW1iZXIubWV0YWRhdGEgPSBwYXlsb2FkLm1ldGFkYXRhXG4gIGlmIChwcm9wcy5mbGFncyAmJiBwYXlsb2FkLmZsYWdzKSBsb2JieU1lbWJlci5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmxvYmJ5TWVtYmVyKGJvdCwgcGF5bG9hZCwgbG9iYnlNZW1iZXIpXG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtTG9iYnkiLCJ0cmFuc2Zvcm1Mb2JieU1lbWJlciIsImJvdCIsInBheWxvYWQiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwibG9iYnkiLCJpZCIsInNub3dmbGFrZSIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsIm1ldGFkYXRhIiwibWVtYmVycyIsIm1hcCIsIm1lbWJlciIsImxvYmJ5TWVtYmVyIiwibGlua2VkQ2hhbm5lbCIsImxpbmtlZF9jaGFubmVsIiwiY2hhbm5lbCIsImN1c3RvbWl6ZXJzIiwiZmxhZ3MiLCJUb2dnbGVCaXRmaWVsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFHZ0JBO2VBQUFBOztRQWFBQztlQUFBQTs7O3VCQWYrRDtBQUV4RSxTQUFTRCxlQUFlRSxHQUFnQixFQUFFQyxPQUFxQjtJQUNwRSxNQUFNQyxRQUFRRixJQUFJRyxZQUFZLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLO0lBQ3RELE1BQU1BLFFBQVEsQ0FBQztJQUVmLElBQUlILE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFRCxNQUFNQyxFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQzVFLElBQUlKLE1BQU1NLGFBQWEsSUFBSVAsUUFBUVEsY0FBYyxFQUFFSixNQUFNRyxhQUFhLEdBQUdSLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRUSxjQUFjO0lBQzFILElBQUlQLE1BQU1RLFFBQVEsSUFBSVQsUUFBUVMsUUFBUSxFQUFFTCxNQUFNSyxRQUFRLEdBQUdULFFBQVFTLFFBQVE7SUFDekUsSUFBSVIsTUFBTVMsT0FBTyxJQUFJVixRQUFRVSxPQUFPLEVBQUVOLE1BQU1NLE9BQU8sR0FBR1YsUUFBUVUsT0FBTyxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsU0FBV2IsSUFBSUcsWUFBWSxDQUFDVyxXQUFXLENBQUNkLEtBQUthO0lBQ3hILElBQUlYLE1BQU1hLGFBQWEsSUFBSWQsUUFBUWUsY0FBYyxFQUFFWCxNQUFNVSxhQUFhLEdBQUdmLElBQUlHLFlBQVksQ0FBQ2MsT0FBTyxDQUFDakIsS0FBSztRQUFFaUIsU0FBU2hCLFFBQVFlLGNBQWM7SUFBQztJQUV6SSxPQUFPaEIsSUFBSUcsWUFBWSxDQUFDZSxXQUFXLENBQUNiLEtBQUssQ0FBQ0wsS0FBS0MsU0FBU0k7QUFDMUQ7QUFFTyxTQUFTTixxQkFBcUJDLEdBQWdCLEVBQUVDLE9BQTJCO0lBQ2hGLE1BQU1DLFFBQVFGLElBQUlHLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNVLFdBQVc7SUFDNUQsTUFBTUEsY0FBYyxDQUFDO0lBRXJCLElBQUlaLE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFUSxZQUFZUixFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQ2xGLElBQUlKLE1BQU1RLFFBQVEsSUFBSVQsUUFBUVMsUUFBUSxFQUFFSSxZQUFZSixRQUFRLEdBQUdULFFBQVFTLFFBQVE7SUFDL0UsSUFBSVIsTUFBTWlCLEtBQUssSUFBSWxCLFFBQVFrQixLQUFLLEVBQUVMLFlBQVlLLEtBQUssR0FBRyxJQUFJQyxxQkFBYyxDQUFDbkIsUUFBUWtCLEtBQUs7SUFFdEYsT0FBT25CLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDSixXQUFXLENBQUNkLEtBQUtDLFNBQVNhO0FBQ2hFIn0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbG9iYnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTG9iYnksIERpc2NvcmRMb2JieU1lbWJlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHtcbiAgdHlwZSBCb3QsXG4gIHR5cGUgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcixcbiAgdHlwZSBMb2JieSxcbiAgdHlwZSBMb2JieU1lbWJlcixcbiAgdHlwZSBTZXR1cERlc2lyZWRQcm9wcyxcbiAgVG9nZ2xlQml0ZmllbGQsXG4gIHR5cGUgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTG9iYnkoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieSk6IExvYmJ5IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5XG4gIGNvbnN0IGxvYmJ5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPlxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBsb2JieS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuYXBwbGljYXRpb25faWQpIGxvYmJ5LmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMubWV0YWRhdGEgJiYgcGF5bG9hZC5tZXRhZGF0YSkgbG9iYnkubWV0YWRhdGEgPSBwYXlsb2FkLm1ldGFkYXRhXG4gIGlmIChwcm9wcy5tZW1iZXJzICYmIHBheWxvYWQubWVtYmVycykgbG9iYnkubWVtYmVycyA9IHBheWxvYWQubWVtYmVycy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIG1lbWJlcikpXG4gIGlmIChwcm9wcy5saW5rZWRDaGFubmVsICYmIHBheWxvYWQubGlua2VkX2NoYW5uZWwpIGxvYmJ5LmxpbmtlZENoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBwYXlsb2FkLmxpbmtlZF9jaGFubmVsKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmxvYmJ5KGJvdCwgcGF5bG9hZCwgbG9iYnkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1Mb2JieU1lbWJlcihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZExvYmJ5TWVtYmVyKTogTG9iYnlNZW1iZXIge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubG9iYnlNZW1iZXJcbiAgY29uc3QgbG9iYnlNZW1iZXIgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lbWJlciwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+XG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGxvYmJ5TWVtYmVyLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLm1ldGFkYXRhICYmIHBheWxvYWQubWV0YWRhdGEpIGxvYmJ5TWVtYmVyLm1ldGFkYXRhID0gcGF5bG9hZC5tZXRhZGF0YVxuICBpZiAocHJvcHMuZmxhZ3MgJiYgcGF5bG9hZC5mbGFncykgbG9iYnlNZW1iZXIuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncylcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5sb2JieU1lbWJlcihib3QsIHBheWxvYWQsIGxvYmJ5TWVtYmVyKVxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUxvYmJ5IiwidHJhbnNmb3JtTG9iYnlNZW1iZXIiLCJib3QiLCJwYXlsb2FkIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsImxvYmJ5IiwiaWQiLCJzbm93Zmxha2UiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJtZXRhZGF0YSIsIm1lbWJlcnMiLCJtYXAiLCJtZW1iZXIiLCJsb2JieU1lbWJlciIsImxpbmtlZENoYW5uZWwiLCJsaW5rZWRfY2hhbm5lbCIsImNoYW5uZWwiLCJjdXN0b21pemVycyIsImZsYWdzIiwiVG9nZ2xlQml0ZmllbGQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBV2dCQTtlQUFBQTs7UUFhQUM7ZUFBQUE7Ozt1QkFmVDtBQUVBLFNBQVNELGVBQWVFLEdBQVEsRUFBRUMsT0FBcUI7SUFDNUQsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSztJQUN0RCxNQUFNQSxRQUFRLENBQUM7SUFFZixJQUFJSCxNQUFNSSxFQUFFLElBQUlMLFFBQVFLLEVBQUUsRUFBRUQsTUFBTUMsRUFBRSxHQUFHTixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUUssRUFBRTtJQUM1RSxJQUFJSixNQUFNTSxhQUFhLElBQUlQLFFBQVFRLGNBQWMsRUFBRUosTUFBTUcsYUFBYSxHQUFHUixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUVEsY0FBYztJQUMxSCxJQUFJUCxNQUFNUSxRQUFRLElBQUlULFFBQVFTLFFBQVEsRUFBRUwsTUFBTUssUUFBUSxHQUFHVCxRQUFRUyxRQUFRO0lBQ3pFLElBQUlSLE1BQU1TLE9BQU8sSUFBSVYsUUFBUVUsT0FBTyxFQUFFTixNQUFNTSxPQUFPLEdBQUdWLFFBQVFVLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLFNBQVdiLElBQUlHLFlBQVksQ0FBQ1csV0FBVyxDQUFDZCxLQUFLYTtJQUN4SCxJQUFJWCxNQUFNYSxhQUFhLElBQUlkLFFBQVFlLGNBQWMsRUFBRVgsTUFBTVUsYUFBYSxHQUFHZixJQUFJRyxZQUFZLENBQUNjLE9BQU8sQ0FBQ2pCLEtBQUtDLFFBQVFlLGNBQWM7SUFFN0gsT0FBT2hCLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDYixLQUFLLENBQUNMLEtBQUtDLFNBQVNJO0FBQzFEO0FBRU8sU0FBU04scUJBQXFCQyxHQUFRLEVBQUVDLE9BQTJCO0lBQ3hFLE1BQU1DLFFBQVFGLElBQUlHLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNVLFdBQVc7SUFDNUQsTUFBTUEsY0FBYyxDQUFDO0lBRXJCLElBQUlaLE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFUSxZQUFZUixFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQ2xGLElBQUlKLE1BQU1RLFFBQVEsSUFBSVQsUUFBUVMsUUFBUSxFQUFFSSxZQUFZSixRQUFRLEdBQUdULFFBQVFTLFFBQVE7SUFDL0UsSUFBSVIsTUFBTWlCLEtBQUssSUFBSWxCLFFBQVFrQixLQUFLLEVBQUVMLFlBQVlLLEtBQUssR0FBRyxJQUFJQyxxQkFBYyxDQUFDbkIsUUFBUWtCLEtBQUs7SUFFdEYsT0FBT25CLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDSixXQUFXLENBQUNkLEtBQUtDLFNBQVNhO0FBQ2hFIn0=