@discordeno/bot 19.0.0-next.c56bb06 → 19.0.0-next.c5a9a64

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 (478) hide show
  1. package/README.md +30 -0
  2. package/dist/cjs/bot.cjs +17 -9
  3. package/dist/cjs/commandOptionsParser.cjs +1 -1
  4. package/dist/cjs/desiredProperties.cjs +541 -0
  5. package/dist/cjs/events.cjs +6 -0
  6. package/dist/cjs/handlers/channels/CHANNEL_CREATE.cjs +2 -2
  7. package/dist/cjs/handlers/channels/THREAD_MEMBERS_UPDATE.cjs +2 -2
  8. package/dist/cjs/handlers/channels/THREAD_MEMBER_UPDATE.cjs +2 -2
  9. package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +2 -2
  10. package/dist/cjs/handlers/entitlements/ENTITLEMENT_CREATE.cjs +17 -0
  11. package/dist/cjs/handlers/entitlements/ENTITLEMENT_DELETE.cjs +17 -0
  12. package/dist/cjs/handlers/entitlements/ENTITLEMENT_UPDATE.cjs +17 -0
  13. package/dist/cjs/handlers/entitlements/index.cjs +22 -0
  14. package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +9 -6
  15. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.cjs +2 -2
  16. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.cjs +2 -2
  17. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.cjs +2 -2
  18. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.cjs +2 -2
  19. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.cjs +2 -2
  20. package/dist/cjs/handlers/index.cjs +5 -1
  21. package/dist/cjs/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.cjs +2 -2
  22. package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
  23. package/dist/cjs/handlers/invites/INVITE_CREATE.cjs +6 -3
  24. package/dist/cjs/handlers/members/GUILD_MEMBERS_CHUNK.cjs +2 -2
  25. package/dist/cjs/handlers/members/GUILD_MEMBER_ADD.cjs +1 -1
  26. package/dist/cjs/handlers/members/GUILD_MEMBER_UPDATE.cjs +2 -1
  27. package/dist/cjs/handlers/messages/MESSAGE_CREATE.cjs +6 -3
  28. package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +4 -2
  29. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +3 -2
  30. package/dist/cjs/handlers/messages/MESSAGE_UPDATE.cjs +6 -3
  31. package/dist/cjs/handlers/poll/MESSAGE_POLL_VOTE_ADD.cjs +23 -0
  32. package/dist/cjs/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.cjs +23 -0
  33. package/dist/cjs/handlers/poll/index.cjs +21 -0
  34. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.cjs +20 -0
  35. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.cjs +17 -0
  36. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.cjs +20 -0
  37. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.cjs +17 -0
  38. package/dist/cjs/handlers/soundboard/SOUNDBOARD_SOUNDS.cjs +20 -0
  39. package/dist/cjs/handlers/soundboard/index.cjs +24 -0
  40. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_CREATE.cjs +17 -0
  41. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_DELETE.cjs +17 -0
  42. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_UPDATE.cjs +17 -0
  43. package/dist/cjs/handlers/subscriptions/index.cjs +22 -0
  44. package/dist/cjs/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.cjs +26 -0
  45. package/dist/cjs/handlers/voice/index.cjs +2 -1
  46. package/dist/cjs/handlers/webhooks/WEBHOOKS_UPDATE.cjs +2 -2
  47. package/dist/cjs/handlers.cjs +16 -2
  48. package/dist/cjs/helpers.cjs +191 -30
  49. package/dist/cjs/index.cjs +3 -3
  50. package/dist/cjs/transformers/activity.cjs +34 -4
  51. package/dist/cjs/transformers/application.cjs +53 -19
  52. package/dist/cjs/transformers/applicationCommand.cjs +1 -1
  53. package/dist/cjs/transformers/applicationCommandOption.cjs +1 -1
  54. package/dist/cjs/transformers/applicationCommandOptionChoice.cjs +1 -1
  55. package/dist/cjs/transformers/applicationCommandPermission.cjs +1 -1
  56. package/dist/cjs/transformers/attachment.cjs +6 -2
  57. package/dist/cjs/transformers/auditLogEntry.cjs +11 -118
  58. package/dist/cjs/transformers/automodActionExecution.cjs +1 -1
  59. package/dist/cjs/transformers/automodRule.cjs +1 -1
  60. package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
  61. package/dist/cjs/transformers/channel.cjs +54 -27
  62. package/dist/cjs/transformers/component.cjs +59 -13
  63. package/dist/cjs/transformers/embed.cjs +1 -1
  64. package/dist/cjs/transformers/emoji.cjs +34 -5
  65. package/dist/cjs/transformers/entitlement.cjs +27 -0
  66. package/dist/cjs/transformers/gatewayBot.cjs +1 -1
  67. package/dist/cjs/transformers/guild.cjs +18 -11
  68. package/dist/cjs/transformers/index.cjs +10 -1
  69. package/dist/cjs/transformers/integration.cjs +1 -1
  70. package/dist/cjs/transformers/interaction.cjs +160 -79
  71. package/dist/cjs/transformers/invite.cjs +30 -29
  72. package/dist/cjs/transformers/member.cjs +31 -14
  73. package/dist/cjs/transformers/message.cjs +170 -104
  74. package/dist/cjs/transformers/onboarding.cjs +56 -0
  75. package/dist/cjs/transformers/poll.cjs +50 -0
  76. package/dist/cjs/transformers/presence.cjs +1 -1
  77. package/dist/cjs/transformers/reverse/activity.cjs +2 -2
  78. package/dist/cjs/transformers/reverse/allowedMentions.cjs +2 -2
  79. package/dist/cjs/transformers/reverse/application.cjs +6 -2
  80. package/dist/cjs/transformers/reverse/applicationCommand.cjs +1 -1
  81. package/dist/cjs/transformers/reverse/applicationCommandOption.cjs +1 -1
  82. package/dist/cjs/transformers/reverse/applicationCommandOptionChoice.cjs +2 -2
  83. package/dist/cjs/transformers/reverse/applicationCommandPermission.cjs +1 -1
  84. package/dist/cjs/transformers/reverse/attachment.cjs +5 -2
  85. package/dist/cjs/transformers/reverse/auditLogEntry.cjs +13 -123
  86. package/dist/cjs/transformers/reverse/component.cjs +61 -14
  87. package/dist/cjs/transformers/reverse/createApplicationCommand.cjs +2 -3
  88. package/dist/cjs/transformers/reverse/embed.cjs +2 -2
  89. package/dist/cjs/transformers/reverse/emoji.cjs +1 -1
  90. package/dist/cjs/transformers/reverse/gatewayBot.cjs +1 -1
  91. package/dist/cjs/transformers/reverse/index.cjs +1 -2
  92. package/dist/cjs/transformers/reverse/member.cjs +9 -3
  93. package/dist/cjs/transformers/reverse/presence.cjs +1 -1
  94. package/dist/cjs/transformers/reverse/team.cjs +3 -3
  95. package/dist/cjs/transformers/reverse/widgetSettings.cjs +2 -2
  96. package/dist/cjs/transformers/role.cjs +15 -12
  97. package/dist/cjs/transformers/scheduledEvent.cjs +29 -5
  98. package/dist/cjs/transformers/sku.cjs +23 -0
  99. package/dist/cjs/transformers/soundboardSound.cjs +25 -0
  100. package/dist/cjs/transformers/stageInstance.cjs +1 -1
  101. package/dist/cjs/transformers/stageInviteInstance.cjs +4 -4
  102. package/dist/cjs/transformers/sticker.cjs +2 -2
  103. package/dist/cjs/transformers/subscription.cjs +26 -0
  104. package/dist/cjs/transformers/team.cjs +3 -3
  105. package/dist/cjs/transformers/template.cjs +1 -1
  106. package/dist/cjs/transformers/threadMember.cjs +1 -1
  107. package/dist/cjs/transformers/toggles/Permissions.cjs +2 -2
  108. package/dist/cjs/transformers/toggles/channel.cjs +7 -2
  109. package/dist/cjs/transformers/toggles/guild.cjs +85 -52
  110. package/dist/cjs/transformers/toggles/member.cjs +70 -2
  111. package/dist/cjs/transformers/types.cjs +6 -0
  112. package/dist/cjs/transformers/user.cjs +15 -15
  113. package/dist/cjs/transformers/voiceRegion.cjs +1 -1
  114. package/dist/cjs/transformers/voiceState.cjs +9 -9
  115. package/dist/cjs/transformers/webhook.cjs +1 -1
  116. package/dist/cjs/transformers/welcomeScreen.cjs +1 -1
  117. package/dist/cjs/transformers/widget.cjs +1 -1
  118. package/dist/cjs/transformers/widgetSettings.cjs +1 -1
  119. package/dist/cjs/transformers.cjs +147 -512
  120. package/dist/esm/bot.js +17 -9
  121. package/dist/esm/commandOptionsParser.js +1 -1
  122. package/dist/esm/desiredProperties.js +523 -0
  123. package/dist/esm/events.js +3 -0
  124. package/dist/esm/handlers/channels/CHANNEL_CREATE.js +2 -2
  125. package/dist/esm/handlers/channels/THREAD_MEMBERS_UPDATE.js +2 -2
  126. package/dist/esm/handlers/channels/THREAD_MEMBER_UPDATE.js +2 -2
  127. package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +2 -2
  128. package/dist/esm/handlers/entitlements/ENTITLEMENT_CREATE.js +7 -0
  129. package/dist/esm/handlers/entitlements/ENTITLEMENT_DELETE.js +7 -0
  130. package/dist/esm/handlers/entitlements/ENTITLEMENT_UPDATE.js +7 -0
  131. package/dist/esm/handlers/entitlements/index.js +5 -0
  132. package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +9 -6
  133. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +2 -2
  134. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +2 -2
  135. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +2 -2
  136. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +2 -2
  137. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js +2 -2
  138. package/dist/esm/handlers/index.js +5 -1
  139. package/dist/esm/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +2 -2
  140. package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
  141. package/dist/esm/handlers/invites/INVITE_CREATE.js +6 -3
  142. package/dist/esm/handlers/members/GUILD_MEMBERS_CHUNK.js +2 -2
  143. package/dist/esm/handlers/members/GUILD_MEMBER_ADD.js +1 -1
  144. package/dist/esm/handlers/members/GUILD_MEMBER_UPDATE.js +2 -1
  145. package/dist/esm/handlers/messages/MESSAGE_CREATE.js +6 -3
  146. package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +4 -2
  147. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +3 -2
  148. package/dist/esm/handlers/messages/MESSAGE_UPDATE.js +6 -3
  149. package/dist/esm/handlers/poll/MESSAGE_POLL_VOTE_ADD.js +13 -0
  150. package/dist/esm/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.js +13 -0
  151. package/dist/esm/handlers/poll/index.js +4 -0
  152. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +10 -0
  153. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.js +7 -0
  154. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.js +10 -0
  155. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.js +7 -0
  156. package/dist/esm/handlers/soundboard/SOUNDBOARD_SOUNDS.js +10 -0
  157. package/dist/esm/handlers/soundboard/index.js +7 -0
  158. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_CREATE.js +7 -0
  159. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_DELETE.js +7 -0
  160. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_UPDATE.js +7 -0
  161. package/dist/esm/handlers/subscriptions/index.js +5 -0
  162. package/dist/esm/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  163. package/dist/esm/handlers/voice/index.js +2 -1
  164. package/dist/esm/handlers/webhooks/WEBHOOKS_UPDATE.js +2 -2
  165. package/dist/esm/handlers.js +16 -2
  166. package/dist/esm/helpers.js +191 -30
  167. package/dist/esm/index.js +3 -3
  168. package/dist/esm/transformers/activity.js +20 -1
  169. package/dist/esm/transformers/application.js +54 -20
  170. package/dist/esm/transformers/applicationCommand.js +1 -1
  171. package/dist/esm/transformers/applicationCommandOption.js +1 -1
  172. package/dist/esm/transformers/applicationCommandOptionChoice.js +1 -1
  173. package/dist/esm/transformers/applicationCommandPermission.js +1 -1
  174. package/dist/esm/transformers/attachment.js +6 -2
  175. package/dist/esm/transformers/auditLogEntry.js +11 -118
  176. package/dist/esm/transformers/automodActionExecution.js +1 -1
  177. package/dist/esm/transformers/automodRule.js +1 -1
  178. package/dist/esm/transformers/avatarDecorationData.js +10 -0
  179. package/dist/esm/transformers/channel.js +52 -28
  180. package/dist/esm/transformers/component.js +59 -13
  181. package/dist/esm/transformers/embed.js +1 -1
  182. package/dist/esm/transformers/emoji.js +23 -2
  183. package/dist/esm/transformers/entitlement.js +17 -0
  184. package/dist/esm/transformers/gatewayBot.js +1 -1
  185. package/dist/esm/transformers/guild.js +18 -11
  186. package/dist/esm/transformers/index.js +11 -1
  187. package/dist/esm/transformers/integration.js +1 -1
  188. package/dist/esm/transformers/interaction.js +152 -80
  189. package/dist/esm/transformers/invite.js +30 -29
  190. package/dist/esm/transformers/member.js +31 -14
  191. package/dist/esm/transformers/message.js +123 -71
  192. package/dist/esm/transformers/onboarding.js +35 -0
  193. package/dist/esm/transformers/poll.js +32 -0
  194. package/dist/esm/transformers/presence.js +1 -1
  195. package/dist/esm/transformers/reverse/activity.js +2 -2
  196. package/dist/esm/transformers/reverse/allowedMentions.js +2 -2
  197. package/dist/esm/transformers/reverse/application.js +6 -2
  198. package/dist/esm/transformers/reverse/applicationCommand.js +1 -1
  199. package/dist/esm/transformers/reverse/applicationCommandOption.js +1 -1
  200. package/dist/esm/transformers/reverse/applicationCommandOptionChoice.js +2 -2
  201. package/dist/esm/transformers/reverse/applicationCommandPermission.js +1 -1
  202. package/dist/esm/transformers/reverse/attachment.js +5 -2
  203. package/dist/esm/transformers/reverse/auditLogEntry.js +13 -123
  204. package/dist/esm/transformers/reverse/component.js +61 -14
  205. package/dist/esm/transformers/reverse/createApplicationCommand.js +2 -3
  206. package/dist/esm/transformers/reverse/embed.js +2 -2
  207. package/dist/esm/transformers/reverse/emoji.js +1 -1
  208. package/dist/esm/transformers/reverse/gatewayBot.js +1 -1
  209. package/dist/esm/transformers/reverse/index.js +1 -2
  210. package/dist/esm/transformers/reverse/member.js +9 -3
  211. package/dist/esm/transformers/reverse/presence.js +1 -1
  212. package/dist/esm/transformers/reverse/team.js +3 -3
  213. package/dist/esm/transformers/reverse/widgetSettings.js +2 -2
  214. package/dist/esm/transformers/role.js +15 -12
  215. package/dist/esm/transformers/scheduledEvent.js +18 -2
  216. package/dist/esm/transformers/sku.js +13 -0
  217. package/dist/esm/transformers/soundboardSound.js +15 -0
  218. package/dist/esm/transformers/stageInstance.js +1 -1
  219. package/dist/esm/transformers/stageInviteInstance.js +4 -4
  220. package/dist/esm/transformers/sticker.js +2 -2
  221. package/dist/esm/transformers/subscription.js +16 -0
  222. package/dist/esm/transformers/team.js +3 -3
  223. package/dist/esm/transformers/template.js +1 -1
  224. package/dist/esm/transformers/threadMember.js +1 -1
  225. package/dist/esm/transformers/toggles/Permissions.js +2 -2
  226. package/dist/esm/transformers/toggles/channel.js +7 -2
  227. package/dist/esm/transformers/toggles/guild.js +85 -52
  228. package/dist/esm/transformers/toggles/member.js +70 -2
  229. package/dist/esm/transformers/types.js +3 -0
  230. package/dist/esm/transformers/user.js +15 -15
  231. package/dist/esm/transformers/voiceRegion.js +1 -1
  232. package/dist/esm/transformers/voiceState.js +9 -9
  233. package/dist/esm/transformers/webhook.js +1 -1
  234. package/dist/esm/transformers/welcomeScreen.js +1 -1
  235. package/dist/esm/transformers/widget.js +1 -1
  236. package/dist/esm/transformers/widgetSettings.js +1 -1
  237. package/dist/esm/transformers.js +121 -486
  238. package/dist/types/bot.d.ts +43 -215
  239. package/dist/types/bot.d.ts.map +1 -1
  240. package/dist/types/commandOptionsParser.d.ts +11 -2
  241. package/dist/types/commandOptionsParser.d.ts.map +1 -1
  242. package/dist/types/desiredProperties.d.ts +194 -0
  243. package/dist/types/desiredProperties.d.ts.map +1 -0
  244. package/dist/types/events.d.ts +231 -0
  245. package/dist/types/events.d.ts.map +1 -0
  246. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts +1 -1
  247. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -1
  248. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts +1 -1
  249. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts.map +1 -1
  250. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts +1 -1
  251. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -1
  252. package/dist/types/handlers/entitlements/ENTITLEMENT_CREATE.d.ts +4 -0
  253. package/dist/types/handlers/entitlements/ENTITLEMENT_CREATE.d.ts.map +1 -0
  254. package/dist/types/handlers/entitlements/ENTITLEMENT_DELETE.d.ts +4 -0
  255. package/dist/types/handlers/entitlements/ENTITLEMENT_DELETE.d.ts.map +1 -0
  256. package/dist/types/handlers/entitlements/ENTITLEMENT_UPDATE.d.ts +4 -0
  257. package/dist/types/handlers/entitlements/ENTITLEMENT_UPDATE.d.ts.map +1 -0
  258. package/dist/types/handlers/entitlements/index.d.ts +4 -0
  259. package/dist/types/handlers/entitlements/index.d.ts.map +1 -0
  260. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts +1 -1
  261. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
  262. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts +1 -1
  263. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts.map +1 -1
  264. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts +1 -1
  265. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts.map +1 -1
  266. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts +1 -1
  267. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts.map +1 -1
  268. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts +1 -1
  269. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts.map +1 -1
  270. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts +1 -1
  271. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts.map +1 -1
  272. package/dist/types/handlers/index.d.ts +4 -0
  273. package/dist/types/handlers/index.d.ts.map +1 -1
  274. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts +1 -1
  275. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts.map +1 -1
  276. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
  277. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
  278. package/dist/types/handlers/invites/INVITE_CREATE.d.ts +1 -1
  279. package/dist/types/handlers/invites/INVITE_CREATE.d.ts.map +1 -1
  280. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts +2 -2
  281. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -1
  282. package/dist/types/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +1 -1
  283. package/dist/types/handlers/messages/MESSAGE_CREATE.d.ts +1 -1
  284. package/dist/types/handlers/messages/MESSAGE_CREATE.d.ts.map +1 -1
  285. package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
  286. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
  287. package/dist/types/handlers/messages/MESSAGE_UPDATE.d.ts +1 -1
  288. package/dist/types/handlers/messages/MESSAGE_UPDATE.d.ts.map +1 -1
  289. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts +4 -0
  290. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts.map +1 -0
  291. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts +4 -0
  292. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts.map +1 -0
  293. package/dist/types/handlers/poll/index.d.ts +3 -0
  294. package/dist/types/handlers/poll/index.d.ts.map +1 -0
  295. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts +4 -0
  296. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts.map +1 -0
  297. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts +4 -0
  298. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts.map +1 -0
  299. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts +4 -0
  300. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts.map +1 -0
  301. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts +4 -0
  302. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts.map +1 -0
  303. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts +4 -0
  304. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts.map +1 -0
  305. package/dist/types/handlers/soundboard/index.d.ts +6 -0
  306. package/dist/types/handlers/soundboard/index.d.ts.map +1 -0
  307. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts +4 -0
  308. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts.map +1 -0
  309. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts +4 -0
  310. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts.map +1 -0
  311. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts +4 -0
  312. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts.map +1 -0
  313. package/dist/types/handlers/subscriptions/index.d.ts +4 -0
  314. package/dist/types/handlers/subscriptions/index.d.ts.map +1 -0
  315. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts +4 -0
  316. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts.map +1 -0
  317. package/dist/types/handlers/voice/index.d.ts +1 -0
  318. package/dist/types/handlers/voice/index.d.ts.map +1 -1
  319. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts +1 -1
  320. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts.map +1 -1
  321. package/dist/types/handlers.d.ts +4 -5
  322. package/dist/types/handlers.d.ts.map +1 -1
  323. package/dist/types/helpers.d.ts +139 -126
  324. package/dist/types/helpers.d.ts.map +1 -1
  325. package/dist/types/index.d.ts +2 -2
  326. package/dist/types/index.d.ts.map +1 -1
  327. package/dist/types/transformers/activity.d.ts +3 -33
  328. package/dist/types/transformers/activity.d.ts.map +1 -1
  329. package/dist/types/transformers/application.d.ts +5 -21
  330. package/dist/types/transformers/application.d.ts.map +1 -1
  331. package/dist/types/transformers/applicationCommand.d.ts +2 -16
  332. package/dist/types/transformers/applicationCommand.d.ts.map +1 -1
  333. package/dist/types/transformers/applicationCommandOption.d.ts +2 -33
  334. package/dist/types/transformers/applicationCommandOption.d.ts.map +1 -1
  335. package/dist/types/transformers/applicationCommandOptionChoice.d.ts +2 -7
  336. package/dist/types/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
  337. package/dist/types/transformers/applicationCommandPermission.d.ts +3 -13
  338. package/dist/types/transformers/applicationCommandPermission.d.ts.map +1 -1
  339. package/dist/types/transformers/attachment.d.ts +2 -28
  340. package/dist/types/transformers/attachment.d.ts.map +1 -1
  341. package/dist/types/transformers/auditLogEntry.d.ts +2 -42
  342. package/dist/types/transformers/auditLogEntry.d.ts.map +1 -1
  343. package/dist/types/transformers/automodActionExecution.d.ts +2 -22
  344. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
  345. package/dist/types/transformers/automodRule.d.ts +2 -28
  346. package/dist/types/transformers/automodRule.d.ts.map +1 -1
  347. package/dist/types/transformers/avatarDecorationData.d.ts +3 -0
  348. package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
  349. package/dist/types/transformers/channel.d.ts +6 -102
  350. package/dist/types/transformers/channel.d.ts.map +1 -1
  351. package/dist/types/transformers/component.d.ts +3 -47
  352. package/dist/types/transformers/component.d.ts.map +1 -1
  353. package/dist/types/transformers/embed.d.ts +2 -48
  354. package/dist/types/transformers/embed.d.ts.map +1 -1
  355. package/dist/types/transformers/emoji.d.ts +4 -23
  356. package/dist/types/transformers/emoji.d.ts.map +1 -1
  357. package/dist/types/transformers/entitlement.d.ts +4 -0
  358. package/dist/types/transformers/entitlement.d.ts.map +1 -0
  359. package/dist/types/transformers/gatewayBot.d.ts +1 -11
  360. package/dist/types/transformers/gatewayBot.d.ts.map +1 -1
  361. package/dist/types/transformers/guild.d.ts +4 -114
  362. package/dist/types/transformers/guild.d.ts.map +1 -1
  363. package/dist/types/transformers/index.d.ts +10 -0
  364. package/dist/types/transformers/index.d.ts.map +1 -1
  365. package/dist/types/transformers/integration.d.ts +2 -30
  366. package/dist/types/transformers/integration.d.ts.map +1 -1
  367. package/dist/types/transformers/interaction.d.ts +20 -88
  368. package/dist/types/transformers/interaction.d.ts.map +1 -1
  369. package/dist/types/transformers/invite.d.ts +5 -39
  370. package/dist/types/transformers/invite.d.ts.map +1 -1
  371. package/dist/types/transformers/member.d.ts +2 -37
  372. package/dist/types/transformers/member.d.ts.map +1 -1
  373. package/dist/types/transformers/message.d.ts +12 -132
  374. package/dist/types/transformers/message.d.ts.map +1 -1
  375. package/dist/types/transformers/onboarding.d.ts +6 -0
  376. package/dist/types/transformers/onboarding.d.ts.map +1 -0
  377. package/dist/types/transformers/poll.d.ts +5 -0
  378. package/dist/types/transformers/poll.d.ts.map +1 -0
  379. package/dist/types/transformers/presence.d.ts +3 -12
  380. package/dist/types/transformers/presence.d.ts.map +1 -1
  381. package/dist/types/transformers/reverse/activity.d.ts +2 -3
  382. package/dist/types/transformers/reverse/activity.d.ts.map +1 -1
  383. package/dist/types/transformers/reverse/allowedMentions.d.ts +1 -1
  384. package/dist/types/transformers/reverse/allowedMentions.d.ts.map +1 -1
  385. package/dist/types/transformers/reverse/application.d.ts +2 -3
  386. package/dist/types/transformers/reverse/application.d.ts.map +1 -1
  387. package/dist/types/transformers/reverse/applicationCommand.d.ts +1 -2
  388. package/dist/types/transformers/reverse/applicationCommand.d.ts.map +1 -1
  389. package/dist/types/transformers/reverse/applicationCommandOption.d.ts +1 -2
  390. package/dist/types/transformers/reverse/applicationCommandOption.d.ts.map +1 -1
  391. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts +2 -3
  392. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts.map +1 -1
  393. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts +2 -3
  394. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts.map +1 -1
  395. package/dist/types/transformers/reverse/attachment.d.ts +1 -2
  396. package/dist/types/transformers/reverse/attachment.d.ts.map +1 -1
  397. package/dist/types/transformers/reverse/auditLogEntry.d.ts +1 -2
  398. package/dist/types/transformers/reverse/auditLogEntry.d.ts.map +1 -1
  399. package/dist/types/transformers/reverse/component.d.ts +3 -4
  400. package/dist/types/transformers/reverse/component.d.ts.map +1 -1
  401. package/dist/types/transformers/reverse/createApplicationCommand.d.ts.map +1 -1
  402. package/dist/types/transformers/reverse/embed.d.ts +2 -3
  403. package/dist/types/transformers/reverse/embed.d.ts.map +1 -1
  404. package/dist/types/transformers/reverse/emoji.d.ts +2 -3
  405. package/dist/types/transformers/reverse/emoji.d.ts.map +1 -1
  406. package/dist/types/transformers/reverse/gatewayBot.d.ts +1 -1
  407. package/dist/types/transformers/reverse/gatewayBot.d.ts.map +1 -1
  408. package/dist/types/transformers/reverse/index.d.ts +0 -1
  409. package/dist/types/transformers/reverse/index.d.ts.map +1 -1
  410. package/dist/types/transformers/reverse/member.d.ts +4 -5
  411. package/dist/types/transformers/reverse/member.d.ts.map +1 -1
  412. package/dist/types/transformers/reverse/presence.d.ts +2 -3
  413. package/dist/types/transformers/reverse/presence.d.ts.map +1 -1
  414. package/dist/types/transformers/reverse/team.d.ts +2 -3
  415. package/dist/types/transformers/reverse/team.d.ts.map +1 -1
  416. package/dist/types/transformers/reverse/widgetSettings.d.ts +2 -3
  417. package/dist/types/transformers/reverse/widgetSettings.d.ts.map +1 -1
  418. package/dist/types/transformers/role.d.ts +3 -73
  419. package/dist/types/transformers/role.d.ts.map +1 -1
  420. package/dist/types/transformers/scheduledEvent.d.ts +4 -37
  421. package/dist/types/transformers/scheduledEvent.d.ts.map +1 -1
  422. package/dist/types/transformers/sku.d.ts +4 -0
  423. package/dist/types/transformers/sku.d.ts.map +1 -0
  424. package/dist/types/transformers/soundboardSound.d.ts +4 -0
  425. package/dist/types/transformers/soundboardSound.d.ts.map +1 -0
  426. package/dist/types/transformers/stageInstance.d.ts +2 -14
  427. package/dist/types/transformers/stageInstance.d.ts.map +1 -1
  428. package/dist/types/transformers/stageInviteInstance.d.ts +3 -13
  429. package/dist/types/transformers/stageInviteInstance.d.ts.map +1 -1
  430. package/dist/types/transformers/sticker.d.ts +4 -37
  431. package/dist/types/transformers/sticker.d.ts.map +1 -1
  432. package/dist/types/transformers/subscription.d.ts +4 -0
  433. package/dist/types/transformers/subscription.d.ts.map +1 -0
  434. package/dist/types/transformers/team.d.ts +3 -15
  435. package/dist/types/transformers/team.d.ts.map +1 -1
  436. package/dist/types/transformers/template.d.ts +2 -15
  437. package/dist/types/transformers/template.d.ts.map +1 -1
  438. package/dist/types/transformers/threadMember.d.ts +2 -12
  439. package/dist/types/transformers/threadMember.d.ts.map +1 -1
  440. package/dist/types/transformers/toggles/Permissions.d.ts +4 -4
  441. package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -1
  442. package/dist/types/transformers/toggles/channel.d.ts +3 -0
  443. package/dist/types/transformers/toggles/channel.d.ts.map +1 -1
  444. package/dist/types/transformers/toggles/guild.d.ts +58 -35
  445. package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
  446. package/dist/types/transformers/toggles/member.d.ts +41 -1
  447. package/dist/types/transformers/toggles/member.d.ts.map +1 -1
  448. package/dist/types/transformers/types.d.ts +1603 -0
  449. package/dist/types/transformers/types.d.ts.map +1 -0
  450. package/dist/types/transformers/user.d.ts +3 -43
  451. package/dist/types/transformers/user.d.ts.map +1 -1
  452. package/dist/types/transformers/voiceRegion.d.ts +1 -8
  453. package/dist/types/transformers/voiceRegion.d.ts.map +1 -1
  454. package/dist/types/transformers/voiceState.d.ts +5 -15
  455. package/dist/types/transformers/voiceState.d.ts.map +1 -1
  456. package/dist/types/transformers/webhook.d.ts +3 -29
  457. package/dist/types/transformers/webhook.d.ts.map +1 -1
  458. package/dist/types/transformers/welcomeScreen.d.ts +1 -10
  459. package/dist/types/transformers/welcomeScreen.d.ts.map +1 -1
  460. package/dist/types/transformers/widget.d.ts +1 -20
  461. package/dist/types/transformers/widget.d.ts.map +1 -1
  462. package/dist/types/transformers/widgetSettings.d.ts +1 -5
  463. package/dist/types/transformers/widgetSettings.d.ts.map +1 -1
  464. package/dist/types/transformers.d.ts +182 -435
  465. package/dist/types/transformers.d.ts.map +1 -1
  466. package/package.json +23 -24
  467. package/dist/cjs/optionalize.cjs +0 -7
  468. package/dist/cjs/transformers/reverse/interactionResponse.cjs +0 -34
  469. package/dist/cjs/typings.cjs +0 -37
  470. package/dist/esm/optionalize.js +0 -3
  471. package/dist/esm/transformers/reverse/interactionResponse.js +0 -24
  472. package/dist/esm/typings.js +0 -19
  473. package/dist/types/optionalize.d.ts +0 -47
  474. package/dist/types/optionalize.d.ts.map +0 -1
  475. package/dist/types/transformers/reverse/interactionResponse.d.ts +0 -4
  476. package/dist/types/transformers/reverse/interactionResponse.d.ts.map +0 -1
  477. package/dist/types/typings.d.ts +0 -196
  478. package/dist/types/typings.d.ts.map +0 -1
package/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # Discordeno
2
+
3
+ <img align="right" src="https://raw.githubusercontent.com/discordeno/discordeno/main/website/static/img/logo.png" height="150px" />
4
+
5
+ Discord API library for [Node.JS](https://nodejs.org), [Deno](https://deno.land) & [Bun](https://bun.sh/)
6
+
7
+ [![Discord](https://img.shields.io/discord/785384884197392384?color=7289da&logo=discord&logoColor=dark)](https://discord.com/invite/5vBgXk3UcZ)
8
+ [![codecov](https://codecov.io/gh/discordeno/discordeno/branch/main/graph/badge.svg?token=SQI9OYJ7AK)](https://codecov.io/gh/discordeno/discordeno)
9
+ ![action status](https://github.com/discordeno/discordeno/actions/workflows/lib-check.yml/badge.svg?event=push)
10
+
11
+ Discordeno is actively maintained to guarantee **excellent performance, latest features, and ease of use.**
12
+
13
+ - **Simple, Efficient, and Lightweight**: Discordeno is lightweight, simple to use, and adaptable.
14
+ - By default: No caching.
15
+ - **Functional API**:
16
+ - The functional API eliminates the challenges of extending built-in classes and inheritance while ensuring overall simple but performant code.
17
+ - **Cross Runtime**: Supports the Node.js, Deno, and Bun runtimes.
18
+ - **Standalone components**: Discordeno offers the option to have practically any component of a bot as a separate
19
+ piece, including standalone REST, gateways, custom caches, and more.
20
+ - **Flexibility/Scalability:** Remove any properties, if your bot doesn't need them. For instance, remove `Channel.topic` if your bot doesn't require it. You may save GBs of RAM in this way. A few lines of code are all that are needed to accomplish this for any property on any object.
21
+
22
+ ### Custom Cache
23
+
24
+ Have your cache setup in any way you like. Redis, PGSQL or any cache layer you would like.
25
+
26
+ ## Links
27
+
28
+ - [Website](https://discordeno.js.org/)
29
+ - [Documentation](https://doc.deno.land/https/deno.land/x/discordeno/mod.ts)
30
+ - [Discord](https://discord.com/invite/5vBgXk3UcZ)
package/dist/cjs/bot.cjs CHANGED
@@ -15,14 +15,20 @@ const _handlers = require("./handlers.cjs");
15
15
  const _helpers = require("./helpers.cjs");
16
16
  const _transformers = require("./transformers.cjs");
17
17
  function createBot(options) {
18
+ if (!options.transformers) options.transformers = {};
19
+ if (!options.transformers.desiredProperties) options.transformers.desiredProperties = options.desiredProperties;
18
20
  if (!options.rest) options.rest = {
19
21
  token: options.token,
20
22
  applicationId: options.applicationId
21
23
  };
24
+ if (!options.rest.token) options.rest.token = options.token;
25
+ if (!options.rest.logger && options.loggerFactory) options.rest.logger = options.loggerFactory('REST');
22
26
  if (!options.gateway) options.gateway = {
23
- token: options.token,
24
- events: {}
27
+ token: options.token
25
28
  };
29
+ if (!options.gateway.token) options.gateway.token = options.token;
30
+ if (!options.gateway.events) options.gateway.events = {};
31
+ if (!options.gateway.logger && options.loggerFactory) options.gateway.logger = options.loggerFactory('GATEWAY');
26
32
  if (!options.gateway.events.message) {
27
33
  options.gateway.events.message = async (shard, data)=>{
28
34
  // TRIGGER RAW EVENT
@@ -33,21 +39,18 @@ function createBot(options) {
33
39
  bot.handlers[data.t]?.(bot, data, shard.id);
34
40
  };
35
41
  }
36
- options.rest.token = options.token;
37
42
  options.gateway.intents = options.intents;
38
43
  options.gateway.preferSnakeCase = true;
39
44
  const id = (0, _utils.getBotIdFromToken)(options.token);
40
45
  const bot = {
41
46
  id,
42
47
  applicationId: id,
43
- transformers: (0, _transformers.createTransformers)({}, {
44
- defaultDesiredPropertiesValue: options.defaultDesiredPropertiesValue ?? false
45
- }),
46
- handlers: (0, _handlers.createBotGatewayHandlers)({}),
48
+ transformers: (0, _transformers.createTransformers)(options.transformers),
49
+ handlers: (0, _handlers.createBotGatewayHandlers)(options.handlers ?? {}),
47
50
  rest: (0, _rest.createRestManager)(options.rest),
48
51
  gateway: (0, _gateway.createGatewayManager)(options.gateway),
49
52
  events: options.events ?? {},
50
- logger: (0, _utils.createLogger)({
53
+ logger: options.loggerFactory ? options.loggerFactory('BOT') : (0, _utils.createLogger)({
51
54
  name: 'BOT'
52
55
  }),
53
56
  // Set up helpers below.
@@ -60,6 +63,11 @@ function createBot(options) {
60
63
  if (!options.gateway?.totalShards) bot.gateway.totalShards = bot.gateway.connection.shards;
61
64
  if (!options.gateway?.lastShardId && !options.gateway?.totalShards) bot.gateway.lastShardId = bot.gateway.connection.shards - 1;
62
65
  }
66
+ if (!bot.gateway.resharding.getSessionInfo) {
67
+ bot.gateway.resharding.getSessionInfo = async ()=>{
68
+ return await bot.rest.getGatewayBot();
69
+ };
70
+ }
63
71
  await bot.gateway.spawnShards();
64
72
  },
65
73
  async shutdown () {
@@ -71,4 +79,4 @@ function createBot(options) {
71
79
  return bot;
72
80
  }
73
81
 
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMsIEdhdGV3YXlNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vZ2F0ZXdheSdcbmltcG9ydCB7IFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgY3JlYXRlR2F0ZXdheU1hbmFnZXIgfSBmcm9tICdAZGlzY29yZGVuby9nYXRld2F5J1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsIFJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB7IGNyZWF0ZVJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB0eXBlIHsgQmlnU3RyaW5nLCBEaXNjb3JkRW1vamksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgRGlzY29yZFJlYWR5LCBHYXRld2F5SW50ZW50cyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBnZXRCb3RJZEZyb21Ub2tlbiwgdHlwZSBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVCb3RHYXRld2F5SGFuZGxlcnMgfSBmcm9tICcuL2hhbmRsZXJzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQm90SGVscGVycywgdHlwZSBCb3RIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNmb3JtZXJzLCB0eXBlIFRyYW5zZm9ybWVycyB9IGZyb20gJy4vdHJhbnNmb3JtZXJzLmpzJ1xuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbi5qcydcbmltcG9ydCB0eXBlIHsgQXVkaXRMb2dFbnRyeSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2F1ZGl0TG9nRW50cnkuanMnXG5pbXBvcnQgdHlwZSB7IEF1dG9Nb2RlcmF0aW9uQWN0aW9uRXhlY3V0aW9uIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvYXV0b21vZEFjdGlvbkV4ZWN1dGlvbi5qcydcbmltcG9ydCB0eXBlIHsgQXV0b01vZGVyYXRpb25SdWxlIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvYXV0b21vZFJ1bGUuanMnXG5pbXBvcnQgdHlwZSB7IENoYW5uZWwgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9jaGFubmVsLmpzJ1xuaW1wb3J0IHR5cGUgeyBFbW9qaSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2Vtb2ppLmpzJ1xuaW1wb3J0IHR5cGUgeyBHdWlsZCB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2d1aWxkLmpzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlZ3JhdGlvbiB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2ludGVncmF0aW9uLmpzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlcmFjdGlvbiB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2ludGVyYWN0aW9uLmpzJ1xuaW1wb3J0IHR5cGUgeyBJbnZpdGUgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9pbnZpdGUuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL21lbWJlci5qcydcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL21lc3NhZ2UuanMnXG5pbXBvcnQgdHlwZSB7IFByZXNlbmNlVXBkYXRlIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvcHJlc2VuY2UuanMnXG5pbXBvcnQgdHlwZSB7IFJvbGUgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9yb2xlLmpzJ1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZWRFdmVudCB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3NjaGVkdWxlZEV2ZW50LmpzJ1xuaW1wb3J0IHR5cGUgeyBTdGlja2VyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvc3RpY2tlci5qcydcbmltcG9ydCB0eXBlIHsgVGhyZWFkTWVtYmVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdGhyZWFkTWVtYmVyLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdXNlci5qcydcbmltcG9ydCB0eXBlIHsgVm9pY2VTdGF0ZSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3ZvaWNlU3RhdGUuanMnXG5cbi8qKlxuICogQ3JlYXRlIGEgYm90IG9iamVjdCB0aGF0IHdpbGwgbWFpbnRhaW4gdGhlIHJlc3QgYW5kIGdhdGV3YXkgY29ubmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9ucyBvcHRpb25zIHVzZWQgdG8gbWFuYWdlIHRoaXMgYm90LlxuICogQHJldHVybnMgQm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb3Qob3B0aW9uczogQ3JlYXRlQm90T3B0aW9ucyk6IEJvdCB7XG4gIGlmICghb3B0aW9ucy5yZXN0KSBvcHRpb25zLnJlc3QgPSB7IHRva2VuOiBvcHRpb25zLnRva2VuLCBhcHBsaWNhdGlvbklkOiBvcHRpb25zLmFwcGxpY2F0aW9uSWQgfVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheSkgb3B0aW9ucy5nYXRld2F5ID0geyB0b2tlbjogb3B0aW9ucy50b2tlbiwgZXZlbnRzOiB7fSB9XG4gIGlmICghb3B0aW9ucy5nYXRld2F5LmV2ZW50cy5tZXNzYWdlKSB7XG4gICAgb3B0aW9ucy5nYXRld2F5LmV2ZW50cy5tZXNzYWdlID0gYXN5bmMgKHNoYXJkLCBkYXRhKSA9PiB7XG4gICAgICAvLyBUUklHR0VSIFJBVyBFVkVOVFxuICAgICAgYm90LmV2ZW50cy5yYXc/LihkYXRhLCBzaGFyZC5pZClcblxuICAgICAgaWYgKCFkYXRhLnQpIHJldHVyblxuXG4gICAgICAvLyBSVU4gRElTUEFUQ0ggQ0hFQ0tcbiAgICAgIGF3YWl0IGJvdC5ldmVudHMuZGlzcGF0Y2hSZXF1aXJlbWVudHM/LihkYXRhLCBzaGFyZC5pZClcbiAgICAgIGJvdC5oYW5kbGVyc1tkYXRhLnQgYXMga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzPl0/Lihib3QsIGRhdGEsIHNoYXJkLmlkKVxuICAgIH1cbiAgfVxuXG4gIG9wdGlvbnMucmVzdC50b2tlbiA9IG9wdGlvbnMudG9rZW5cbiAgb3B0aW9ucy5nYXRld2F5LmludGVudHMgPSBvcHRpb25zLmludGVudHNcbiAgb3B0aW9ucy5nYXRld2F5LnByZWZlclNuYWtlQ2FzZSA9IHRydWVcblxuICBjb25zdCBpZCA9IGdldEJvdElkRnJvbVRva2VuKG9wdGlvbnMudG9rZW4pXG5cbiAgY29uc3QgYm90OiBCb3QgPSB7XG4gICAgaWQsXG4gICAgYXBwbGljYXRpb25JZDogaWQsXG4gICAgdHJhbnNmb3JtZXJzOiBjcmVhdGVUcmFuc2Zvcm1lcnMoe30sIHsgZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWU6IG9wdGlvbnMuZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWUgPz8gZmFsc2UgfSksXG4gICAgaGFuZGxlcnM6IGNyZWF0ZUJvdEdhdGV3YXlIYW5kbGVycyh7fSksXG4gICAgcmVzdDogY3JlYXRlUmVzdE1hbmFnZXIob3B0aW9ucy5yZXN0KSxcbiAgICBnYXRld2F5OiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zLmdhdGV3YXkpLFxuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgbG9nZ2VyOiBjcmVhdGVMb2dnZXIoeyBuYW1lOiAnQk9UJyB9KSxcbiAgICAvLyBTZXQgdXAgaGVscGVycyBiZWxvdy5cbiAgICBoZWxwZXJzOiB7fSBhcyBCb3RIZWxwZXJzLFxuICAgIGFzeW5jIHN0YXJ0KCkge1xuICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/LmNvbm5lY3Rpb24pIHtcbiAgICAgICAgYm90LmdhdGV3YXkuY29ubmVjdGlvbiA9IGF3YWl0IGJvdC5yZXN0LmdldFNlc3Npb25JbmZvKClcblxuICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcnJpZGVzIGluIHRoZSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py51cmwpIGJvdC5nYXRld2F5LnVybCA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24udXJsXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/LnRvdGFsU2hhcmRzKSBib3QuZ2F0ZXdheS50b3RhbFNoYXJkcyA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24uc2hhcmRzXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/Lmxhc3RTaGFyZElkICYmICFvcHRpb25zLmdhdGV3YXk/LnRvdGFsU2hhcmRzKSBib3QuZ2F0ZXdheS5sYXN0U2hhcmRJZCA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24uc2hhcmRzIC0gMVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBib3QuZ2F0ZXdheS5zcGF3blNoYXJkcygpXG4gICAgfSxcblxuICAgIGFzeW5jIHNodXRkb3duKCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5nYXRld2F5LnNodXRkb3duKFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5TaHV0ZG93biwgJ1VzZXIgcmVxdWVzdGVkIGJvdCBzdG9wJylcbiAgICB9LFxuICB9XG5cbiAgYm90LmhlbHBlcnMgPSBjcmVhdGVCb3RIZWxwZXJzKGJvdClcbiAgaWYgKG9wdGlvbnMuYXBwbGljYXRpb25JZCkgYm90LmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShvcHRpb25zLmFwcGxpY2F0aW9uSWQpXG5cbiAgcmV0dXJuIGJvdFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUJvdE9wdGlvbnMge1xuICAvKiogVGhlIGJvdCdzIHRva2VuLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBBcHBsaWNhdGlvbiBJZCBvZiB0aGUgYm90IGluY2FzZSBpdCBpcyBhbiBvbGQgYm90IHRva2VuLiAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBUaGUgYm90J3MgaW50ZW50cyB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29ubmVjdGlvbiB3aXRoIGRpc2NvcmRzIGdhdGV3YXkuICovXG4gIGludGVudHM/OiBHYXRld2F5SW50ZW50c1xuICAvKiogQW55IG9wdGlvbnMgeW91IHdpc2ggdG8gcHJvdmlkZSB0byB0aGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0PzogQ3JlYXRlUmVzdE1hbmFnZXJPcHRpb25zXG4gIC8qKiBBbnkgb3B0aW9ucyB5b3Ugd2lzaCB0byBwcm92aWRlIHRvIHRoZSBnYXRld2F5IG1hbmFnZXIuICovXG4gIGdhdGV3YXk/OiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnNcbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzOiBQYXJ0aWFsPEV2ZW50SGFuZGxlcnM+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aCBjYXV0aW9uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSB3aGVuIHRoZSBDTEkgaXMgY29tcGxldGUuIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2Ugd2hhdHNvZXZlci5cbiAgICogQWx0aG91Z2ggaXQgaXMgaGFyZGVyIHRvIGNyZWF0ZSB5b3VyIGJvdCB3aXRob3V0IHRoaXMsIGl0IGlzIHN0aWxsIGhpZ2hseSByZWNvbW1lbmRlZCB0byBkbyBpdCB0aGF0IHdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlZmF1bHREZXNpcmVkUHJvcGVydGllc1ZhbHVlPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdCB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGJvdC4gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBib3QuIFRoaXMgaXMgdXN1YWxseSB0aGUgc2FtZSBhcyBpZCBidXQgaW4gdGhlIGNhc2Ugb2Ygb2xkIGJvdHMgY2FuIGJlIGRpZmZlcmVudC4gKi9cbiAgYXBwbGljYXRpb25JZDogYmlnaW50XG4gIC8qKiBUaGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0OiBSZXN0TWFuYWdlclxuICAvKiogVGhlIGdhdGV3YXkgbWFuYWdlci4gKi9cbiAgZ2F0ZXdheTogR2F0ZXdheU1hbmFnZXJcbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzOiBQYXJ0aWFsPEV2ZW50SGFuZGxlcnM+XG4gIC8qKiBBIGxvZ2dlciB1dGlsaXR5IHRvIG1ha2UgaXQgZWFzeSB0byBsb2cgbmljZSBhbmQgdXNlZnVsIHRoaW5ncyBpbiB0aGUgYm90IGNvZGUuICovXG4gIGxvZ2dlcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlTG9nZ2VyPlxuICAvKiogVGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCB0cmFuc2Zvcm0gZGlzY29yZCBvYmplY3RzIHRvIGRpc2NvcmRlbm8gc2hhcGVkIG9iamVjdHMuICovXG4gIHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJzXG4gIC8qKiBUaGUgaGFuZGxlciBmdW5jdGlvbnMgdGhhdCBzaG91bGQgaGFuZGxlIGluY29taW5nIGRpc2NvcmQgcGF5bG9hZHMgZnJvbSBnYXRld2F5IGFuZCBjYWxsIGFuIGV2ZW50LiAqL1xuICBoYW5kbGVyczogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzPlxuICBoZWxwZXJzOiBCb3RIZWxwZXJzXG4gIC8qKiBTdGFydCB0aGUgYm90IGNvbm5lY3Rpb24gdG8gdGhlIGdhdGV3YXkuICovXG4gIHN0YXJ0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0cyBkb3duIGFsbCB0aGUgYm90IGNvbm5lY3Rpb25zIHRvIHRoZSBnYXRld2F5LiAqL1xuICBzaHV0ZG93bjogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50SGFuZGxlcnMge1xuICBkZWJ1ZzogKHRleHQ6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHVua25vd25cbiAgYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNVcGRhdGU6IChjb21tYW5kOiBBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKSA9PiB1bmtub3duXG4gIGd1aWxkQXVkaXRMb2dFbnRyeUNyZWF0ZTogKGxvZzogQXVkaXRMb2dFbnRyeSwgZ3VpbGRJZDogYmlnaW50KSA9PiB1bmtub3duXG4gIGF1dG9tb2RSdWxlQ3JlYXRlOiAocnVsZTogQXV0b01vZGVyYXRpb25SdWxlKSA9PiB1bmtub3duXG4gIGF1dG9tb2RSdWxlVXBkYXRlOiAocnVsZTogQXV0b01vZGVyYXRpb25SdWxlKSA9PiB1bmtub3duXG4gIGF1dG9tb2RSdWxlRGVsZXRlOiAocnVsZTogQXV0b01vZGVyYXRpb25SdWxlKSA9PiB1bmtub3duXG4gIGF1dG9tb2RBY3Rpb25FeGVjdXRpb246IChwYXlsb2FkOiBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbikgPT4gdW5rbm93blxuICB0aHJlYWRDcmVhdGU6ICh0aHJlYWQ6IENoYW5uZWwpID0+IHVua25vd25cbiAgdGhyZWFkRGVsZXRlOiAodGhyZWFkOiBDaGFubmVsKSA9PiB1bmtub3duXG4gIHRocmVhZExpc3RTeW5jOiAocGF5bG9hZDogeyBndWlsZElkOiBiaWdpbnQ7IGNoYW5uZWxJZHM/OiBiaWdpbnRbXTsgdGhyZWFkczogQ2hhbm5lbFtdOyBtZW1iZXJzOiBUaHJlYWRNZW1iZXJbXSB9KSA9PiB1bmtub3duXG4gIHRocmVhZE1lbWJlclVwZGF0ZTogKHBheWxvYWQ6IHsgaWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50OyBqb2luZWRBdDogbnVtYmVyOyBmbGFnczogbnVtYmVyIH0pID0+IHVua25vd25cbiAgdGhyZWFkTWVtYmVyc1VwZGF0ZTogKHBheWxvYWQ6IHsgaWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50OyBhZGRlZE1lbWJlcnM/OiBUaHJlYWRNZW1iZXJbXTsgcmVtb3ZlZE1lbWJlcklkcz86IGJpZ2ludFtdIH0pID0+IHVua25vd25cbiAgdGhyZWFkVXBkYXRlOiAodGhyZWFkOiBDaGFubmVsKSA9PiB1bmtub3duXG4gIHNjaGVkdWxlZEV2ZW50Q3JlYXRlOiAoZXZlbnQ6IFNjaGVkdWxlZEV2ZW50KSA9PiB1bmtub3duXG4gIHNjaGVkdWxlZEV2ZW50VXBkYXRlOiAoZXZlbnQ6IFNjaGVkdWxlZEV2ZW50KSA9PiB1bmtub3duXG4gIHNjaGVkdWxlZEV2ZW50RGVsZXRlOiAoZXZlbnQ6IFNjaGVkdWxlZEV2ZW50KSA9PiB1bmtub3duXG4gIC8qKiBTZW50IHdoZW4gYSB1c2VyIGhhcyBzdWJzY3JpYmVkIHRvIGEgZ3VpbGQgc2NoZWR1bGVkIGV2ZW50LiBFWFBFUklNRU5UQUwhICovXG4gIHNjaGVkdWxlZEV2ZW50VXNlckFkZDogKHBheWxvYWQ6IHsgZ3VpbGRTY2hlZHVsZWRFdmVudElkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgdXNlcklkOiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICAvKiogU2VudCB3aGVuIGEgdXNlciBoYXMgdW5zdWJzY3JpYmVkIHRvIGEgZ3VpbGQgc2NoZWR1bGVkIGV2ZW50LiBFWFBFUklNRU5UQUwhICovXG4gIHNjaGVkdWxlZEV2ZW50VXNlclJlbW92ZTogKHBheWxvYWQ6IHsgZ3VpbGRTY2hlZHVsZWRFdmVudElkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgdXNlcklkOiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICByZWFkeTogKFxuICAgIHBheWxvYWQ6IHtcbiAgICAgIHNoYXJkSWQ6IG51bWJlclxuICAgICAgdjogbnVtYmVyXG4gICAgICB1c2VyOiBVc2VyXG4gICAgICBndWlsZHM6IGJpZ2ludFtdXG4gICAgICBzZXNzaW9uSWQ6IHN0cmluZ1xuICAgICAgc2hhcmQ/OiBudW1iZXJbXVxuICAgICAgYXBwbGljYXRpb25JZDogYmlnaW50XG4gICAgfSxcbiAgICByYXdQYXlsb2FkOiBEaXNjb3JkUmVhZHksXG4gICkgPT4gdW5rbm93blxuICBpbnRlcmFjdGlvbkNyZWF0ZTogKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4gdW5rbm93blxuICBpbnRlZ3JhdGlvbkNyZWF0ZTogKGludGVncmF0aW9uOiBJbnRlZ3JhdGlvbikgPT4gdW5rbm93blxuICBpbnRlZ3JhdGlvbkRlbGV0ZTogKHBheWxvYWQ6IHsgaWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50OyBhcHBsaWNhdGlvbklkPzogYmlnaW50IH0pID0+IHVua25vd25cbiAgaW50ZWdyYXRpb25VcGRhdGU6IChwYXlsb2FkOiB7IGd1aWxkSWQ6IGJpZ2ludCB9KSA9PiB1bmtub3duXG4gIGludml0ZUNyZWF0ZTogKGludml0ZTogSW52aXRlKSA9PiB1bmtub3duXG4gIGludml0ZURlbGV0ZTogKHBheWxvYWQ6IHsgY2hhbm5lbElkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQ7IGNvZGU6IHN0cmluZyB9KSA9PiB1bmtub3duXG4gIGd1aWxkTWVtYmVyQWRkOiAobWVtYmVyOiBNZW1iZXIsIHVzZXI6IFVzZXIpID0+IHVua25vd25cbiAgZ3VpbGRNZW1iZXJSZW1vdmU6ICh1c2VyOiBVc2VyLCBndWlsZElkOiBiaWdpbnQpID0+IHVua25vd25cbiAgZ3VpbGRNZW1iZXJVcGRhdGU6IChtZW1iZXI6IE1lbWJlciwgdXNlcjogVXNlcikgPT4gdW5rbm93blxuICBndWlsZFN0aWNrZXJzVXBkYXRlOiAoc3RpY2tlcnM6IFN0aWNrZXJbXSkgPT4gdW5rbm93blxuICBtZXNzYWdlQ3JlYXRlOiAobWVzc2FnZTogTWVzc2FnZSkgPT4gdW5rbm93blxuICBtZXNzYWdlRGVsZXRlOiAocGF5bG9hZDogeyBpZDogYmlnaW50OyBjaGFubmVsSWQ6IGJpZ2ludDsgZ3VpbGRJZD86IGJpZ2ludCB9LCBtZXNzYWdlPzogTWVzc2FnZSkgPT4gdW5rbm93blxuICBtZXNzYWdlRGVsZXRlQnVsazogKHBheWxvYWQ6IHsgaWRzOiBiaWdpbnRbXTsgY2hhbm5lbElkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICBtZXNzYWdlVXBkYXRlOiAobWVzc2FnZTogTWVzc2FnZSwgb2xkTWVzc2FnZT86IE1lc3NhZ2UpID0+IHVua25vd25cbiAgcmVhY3Rpb25BZGQ6IChwYXlsb2FkOiB7XG4gICAgdXNlcklkOiBiaWdpbnRcbiAgICBjaGFubmVsSWQ6IGJpZ2ludFxuICAgIG1lc3NhZ2VJZDogYmlnaW50XG4gICAgZ3VpbGRJZD86IGJpZ2ludFxuICAgIG1lbWJlcj86IE1lbWJlclxuICAgIHVzZXI/OiBVc2VyXG4gICAgZW1vamk6IEVtb2ppXG4gICAgbWVzc2FnZUF1dGhvcklkPzogYmlnaW50XG4gIH0pID0+IHVua25vd25cbiAgcmVhY3Rpb25SZW1vdmU6IChwYXlsb2FkOiB7IHVzZXJJZDogYmlnaW50OyBjaGFubmVsSWQ6IGJpZ2ludDsgbWVzc2FnZUlkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQ7IGVtb2ppOiBFbW9qaSB9KSA9PiB1bmtub3duXG4gIHJlYWN0aW9uUmVtb3ZlRW1vamk6IChwYXlsb2FkOiB7IGNoYW5uZWxJZDogYmlnaW50OyBtZXNzYWdlSWQ6IGJpZ2ludDsgZ3VpbGRJZD86IGJpZ2ludDsgZW1vamk6IEVtb2ppIH0pID0+IHVua25vd25cbiAgcmVhY3Rpb25SZW1vdmVBbGw6IChwYXlsb2FkOiB7IGNoYW5uZWxJZDogYmlnaW50OyBtZXNzYWdlSWQ6IGJpZ2ludDsgZ3VpbGRJZD86IGJpZ2ludCB9KSA9PiB1bmtub3duXG4gIHByZXNlbmNlVXBkYXRlOiAocHJlc2VuY2U6IFByZXNlbmNlVXBkYXRlLCBvbGRQcmVzZW5jZT86IFByZXNlbmNlVXBkYXRlKSA9PiB1bmtub3duXG4gIHZvaWNlU2VydmVyVXBkYXRlOiAocGF5bG9hZDogeyB0b2tlbjogc3RyaW5nOyBlbmRwb2ludD86IHN0cmluZzsgZ3VpbGRJZDogYmlnaW50IH0pID0+IHVua25vd25cbiAgdm9pY2VTdGF0ZVVwZGF0ZTogKHZvaWNlU3RhdGU6IFZvaWNlU3RhdGUpID0+IHVua25vd25cbiAgY2hhbm5lbENyZWF0ZTogKGNoYW5uZWw6IENoYW5uZWwpID0+IHVua25vd25cbiAgZGlzcGF0Y2hSZXF1aXJlbWVudHM6IChkYXRhOiBEaXNjb3JkR2F0ZXdheVBheWxvYWQsIHNoYXJkSWQ6IG51bWJlcikgPT4gdW5rbm93blxuICBjaGFubmVsRGVsZXRlOiAoY2hhbm5lbDogQ2hhbm5lbCkgPT4gdW5rbm93blxuICBjaGFubmVsUGluc1VwZGF0ZTogKGRhdGE6IHsgZ3VpbGRJZD86IGJpZ2ludDsgY2hhbm5lbElkOiBiaWdpbnQ7IGxhc3RQaW5UaW1lc3RhbXA/OiBudW1iZXIgfSkgPT4gdW5rbm93blxuICBjaGFubmVsVXBkYXRlOiAoY2hhbm5lbDogQ2hhbm5lbCkgPT4gdW5rbm93blxuICBzdGFnZUluc3RhbmNlQ3JlYXRlOiAoZGF0YTogeyBpZDogYmlnaW50OyBndWlsZElkOiBiaWdpbnQ7IGNoYW5uZWxJZDogYmlnaW50OyB0b3BpYzogc3RyaW5nIH0pID0+IHVua25vd25cbiAgc3RhZ2VJbnN0YW5jZURlbGV0ZTogKGRhdGE6IHsgaWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50OyBjaGFubmVsSWQ6IGJpZ2ludDsgdG9waWM6IHN0cmluZyB9KSA9PiB1bmtub3duXG4gIHN0YWdlSW5zdGFuY2VVcGRhdGU6IChkYXRhOiB7IGlkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgY2hhbm5lbElkOiBiaWdpbnQ7IHRvcGljOiBzdHJpbmcgfSkgPT4gdW5rbm93blxuICBndWlsZEVtb2ppc1VwZGF0ZTogKHBheWxvYWQ6IHsgZ3VpbGRJZDogYmlnaW50OyBlbW9qaXM6IENvbGxlY3Rpb248YmlnaW50LCBEaXNjb3JkRW1vamk+IH0pID0+IHVua25vd25cbiAgZ3VpbGRCYW5BZGQ6ICh1c2VyOiBVc2VyLCBndWlsZElkOiBiaWdpbnQpID0+IHVua25vd25cbiAgZ3VpbGRCYW5SZW1vdmU6ICh1c2VyOiBVc2VyLCBndWlsZElkOiBiaWdpbnQpID0+IHVua25vd25cbiAgZ3VpbGRDcmVhdGU6IChndWlsZDogR3VpbGQpID0+IHVua25vd25cbiAgZ3VpbGREZWxldGU6IChpZDogYmlnaW50LCBzaGFyZElkOiBudW1iZXIpID0+IHVua25vd25cbiAgZ3VpbGRVbmF2YWlsYWJsZTogKGlkOiBiaWdpbnQsIHNoYXJkSWQ6IG51bWJlcikgPT4gdW5rbm93blxuICBndWlsZFVwZGF0ZTogKGd1aWxkOiBHdWlsZCkgPT4gdW5rbm93blxuICByYXc6IChkYXRhOiBEaXNjb3JkR2F0ZXdheVBheWxvYWQsIHNoYXJkSWQ6IG51bWJlcikgPT4gdW5rbm93blxuICByb2xlQ3JlYXRlOiAocm9sZTogUm9sZSkgPT4gdW5rbm93blxuICByb2xlRGVsZXRlOiAocGF5bG9hZDogeyBndWlsZElkOiBiaWdpbnQ7IHJvbGVJZDogYmlnaW50IH0pID0+IHVua25vd25cbiAgcm9sZVVwZGF0ZTogKHJvbGU6IFJvbGUpID0+IHVua25vd25cbiAgd2ViaG9va3NVcGRhdGU6IChwYXlsb2FkOiB7IGNoYW5uZWxJZDogYmlnaW50OyBndWlsZElkOiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICBib3RVcGRhdGU6ICh1c2VyOiBVc2VyKSA9PiB1bmtub3duXG4gIHR5cGluZ1N0YXJ0OiAocGF5bG9hZDogeyBndWlsZElkOiBiaWdpbnQgfCB1bmRlZmluZWQ7IGNoYW5uZWxJZDogYmlnaW50OyB1c2VySWQ6IGJpZ2ludDsgdGltZXN0YW1wOiBudW1iZXI7IG1lbWJlcjogTWVtYmVyIHwgdW5kZWZpbmVkIH0pID0+IHVua25vd25cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVCb3QiLCJvcHRpb25zIiwicmVzdCIsInRva2VuIiwiYXBwbGljYXRpb25JZCIsImdhdGV3YXkiLCJldmVudHMiLCJtZXNzYWdlIiwic2hhcmQiLCJkYXRhIiwiYm90IiwicmF3IiwiaWQiLCJ0IiwiZGlzcGF0Y2hSZXF1aXJlbWVudHMiLCJoYW5kbGVycyIsImludGVudHMiLCJwcmVmZXJTbmFrZUNhc2UiLCJnZXRCb3RJZEZyb21Ub2tlbiIsInRyYW5zZm9ybWVycyIsImNyZWF0ZVRyYW5zZm9ybWVycyIsImRlZmF1bHREZXNpcmVkUHJvcGVydGllc1ZhbHVlIiwiY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzIiwiY3JlYXRlUmVzdE1hbmFnZXIiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsImxvZ2dlciIsImNyZWF0ZUxvZ2dlciIsIm5hbWUiLCJoZWxwZXJzIiwic3RhcnQiLCJjb25uZWN0aW9uIiwiZ2V0U2Vzc2lvbkluZm8iLCJ1cmwiLCJ0b3RhbFNoYXJkcyIsInNoYXJkcyIsImxhc3RTaGFyZElkIiwic3Bhd25TaGFyZHMiLCJzaHV0ZG93biIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNodXRkb3duIiwiY3JlYXRlQm90SGVscGVycyIsInNub3dmbGFrZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFtQ2dCQTs7O2VBQUFBOzs7eUJBbEM0QztzQkFFMUI7dUJBRStCOzBCQUN4Qjt5QkFDUzs4QkFDSTtBQTJCL0MsU0FBU0EsVUFBVUMsT0FBeUI7SUFDakQsSUFBSSxDQUFDQSxRQUFRQyxJQUFJLEVBQUVELFFBQVFDLElBQUksR0FBRztRQUFFQyxPQUFPRixRQUFRRSxLQUFLO1FBQUVDLGVBQWVILFFBQVFHLGFBQWE7SUFBQztJQUMvRixJQUFJLENBQUNILFFBQVFJLE9BQU8sRUFBRUosUUFBUUksT0FBTyxHQUFHO1FBQUVGLE9BQU9GLFFBQVFFLEtBQUs7UUFBRUcsUUFBUSxDQUFDO0lBQUU7SUFDM0UsSUFBSSxDQUFDTCxRQUFRSSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsT0FBTyxFQUFFO1FBQ25DTixRQUFRSSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLE9BQU9DLE9BQU9DO1lBQzdDLG9CQUFvQjtZQUNwQkMsSUFBSUosTUFBTSxDQUFDSyxHQUFHLEdBQUdGLE1BQU1ELE1BQU1JLEVBQUU7WUFFL0IsSUFBSSxDQUFDSCxLQUFLSSxDQUFDLEVBQUU7WUFFYixxQkFBcUI7WUFDckIsTUFBTUgsSUFBSUosTUFBTSxDQUFDUSxvQkFBb0IsR0FBR0wsTUFBTUQsTUFBTUksRUFBRTtZQUN0REYsSUFBSUssUUFBUSxDQUFDTixLQUFLSSxDQUFDLENBQXNELEdBQUdILEtBQUtELE1BQU1ELE1BQU1JLEVBQUU7UUFDakc7SUFDRjtJQUVBWCxRQUFRQyxJQUFJLENBQUNDLEtBQUssR0FBR0YsUUFBUUUsS0FBSztJQUNsQ0YsUUFBUUksT0FBTyxDQUFDVyxPQUFPLEdBQUdmLFFBQVFlLE9BQU87SUFDekNmLFFBQVFJLE9BQU8sQ0FBQ1ksZUFBZSxHQUFHO0lBRWxDLE1BQU1MLEtBQUtNLElBQUFBLHdCQUFpQixFQUFDakIsUUFBUUUsS0FBSztJQUUxQyxNQUFNTyxNQUFXO1FBQ2ZFO1FBQ0FSLGVBQWVRO1FBQ2ZPLGNBQWNDLElBQUFBLGdDQUFrQixFQUFDLENBQUMsR0FBRztZQUFFQywrQkFBK0JwQixRQUFRb0IsNkJBQTZCLElBQUk7UUFBTTtRQUNySE4sVUFBVU8sSUFBQUEsa0NBQXdCLEVBQUMsQ0FBQztRQUNwQ3BCLE1BQU1xQixJQUFBQSx1QkFBaUIsRUFBQ3RCLFFBQVFDLElBQUk7UUFDcENHLFNBQVNtQixJQUFBQSw2QkFBb0IsRUFBQ3ZCLFFBQVFJLE9BQU87UUFDN0NDLFFBQVFMLFFBQVFLLE1BQU0sSUFBSSxDQUFDO1FBQzNCbUIsUUFBUUMsSUFBQUEsbUJBQVksRUFBQztZQUFFQyxNQUFNO1FBQU07UUFDbkMsd0JBQXdCO1FBQ3hCQyxTQUFTLENBQUM7UUFDVixNQUFNQztZQUNKLElBQUksQ0FBQzVCLFFBQVFJLE9BQU8sRUFBRXlCLFlBQVk7Z0JBQ2hDcEIsSUFBSUwsT0FBTyxDQUFDeUIsVUFBVSxHQUFHLE1BQU1wQixJQUFJUixJQUFJLENBQUM2QixjQUFjO2dCQUV0RCwyQ0FBMkM7Z0JBQzNDLElBQUksQ0FBQzlCLFFBQVFJLE9BQU8sRUFBRTJCLEtBQUt0QixJQUFJTCxPQUFPLENBQUMyQixHQUFHLEdBQUd0QixJQUFJTCxPQUFPLENBQUN5QixVQUFVLENBQUNFLEdBQUc7Z0JBRXZFLElBQUksQ0FBQy9CLFFBQVFJLE9BQU8sRUFBRTRCLGFBQWF2QixJQUFJTCxPQUFPLENBQUM0QixXQUFXLEdBQUd2QixJQUFJTCxPQUFPLENBQUN5QixVQUFVLENBQUNJLE1BQU07Z0JBRTFGLElBQUksQ0FBQ2pDLFFBQVFJLE9BQU8sRUFBRThCLGVBQWUsQ0FBQ2xDLFFBQVFJLE9BQU8sRUFBRTRCLGFBQWF2QixJQUFJTCxPQUFPLENBQUM4QixXQUFXLEdBQUd6QixJQUFJTCxPQUFPLENBQUN5QixVQUFVLENBQUNJLE1BQU0sR0FBRztZQUNoSTtZQUVBLE1BQU14QixJQUFJTCxPQUFPLENBQUMrQixXQUFXO1FBQy9CO1FBRUEsTUFBTUM7WUFDSixPQUFPLE1BQU0zQixJQUFJTCxPQUFPLENBQUNnQyxRQUFRLENBQUNDLDhCQUFxQixDQUFDQyxRQUFRLEVBQUU7UUFDcEU7SUFDRjtJQUVBN0IsSUFBSWtCLE9BQU8sR0FBR1ksSUFBQUEseUJBQWdCLEVBQUM5QjtJQUMvQixJQUFJVCxRQUFRRyxhQUFhLEVBQUVNLElBQUlOLGFBQWEsR0FBR00sSUFBSVMsWUFBWSxDQUFDc0IsU0FBUyxDQUFDeEMsUUFBUUcsYUFBYTtJQUUvRixPQUFPTTtBQUNUIn0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMsIEdhdGV3YXlNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vZ2F0ZXdheSdcbmltcG9ydCB7IFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgY3JlYXRlR2F0ZXdheU1hbmFnZXIgfSBmcm9tICdAZGlzY29yZGVuby9nYXRld2F5J1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsIFJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB7IGNyZWF0ZVJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB0eXBlIHsgQmlnU3RyaW5nLCBHYXRld2F5RGlzcGF0Y2hFdmVudE5hbWVzLCBHYXRld2F5SW50ZW50cywgUmVjdXJzaXZlUGFydGlhbCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBnZXRCb3RJZEZyb21Ub2tlbiwgdHlwZSBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB0eXBlIHtcbiAgQ29tcGxldGVEZXNpcmVkUHJvcGVydGllcyxcbiAgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcixcbiAgU2V0dXBEZXNpcmVkUHJvcHMsXG4gIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLFxuICBUcmFuc2Zvcm1lcnNPYmplY3RzLFxufSBmcm9tICcuL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi9ldmVudHMuanMnXG5pbXBvcnQgeyB0eXBlIEJvdEdhdGV3YXlIYW5kbGVyLCB0eXBlIEdhdGV3YXlIYW5kbGVycywgY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzIH0gZnJvbSAnLi9oYW5kbGVycy5qcydcbmltcG9ydCB7IHR5cGUgQm90SGVscGVycywgY3JlYXRlQm90SGVscGVycyB9IGZyb20gJy4vaGVscGVycy5qcydcbmltcG9ydCB7IHR5cGUgVHJhbnNmb3JtZXJzLCBjcmVhdGVUcmFuc2Zvcm1lcnMgfSBmcm9tICcuL3RyYW5zZm9ybWVycy5qcydcblxuLyoqXG4gKiBDcmVhdGUgYSBib3Qgb2JqZWN0IHRoYXQgd2lsbCBtYWludGFpbiB0aGUgcmVzdCBhbmQgZ2F0ZXdheSBjb25uZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb25zIG9wdGlvbnMgdXNlZCB0byBtYW5hZ2UgdGhpcyBib3QuXG4gKiBAcmV0dXJucyBCb3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvdDxcbiAgVFByb3BzIGV4dGVuZHMgUmVjdXJzaXZlUGFydGlhbDxUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcz4sXG4gIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IgPSBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleSxcbj4ob3B0aW9uczogQ3JlYXRlQm90T3B0aW9uczxUUHJvcHMsIFRCZWhhdmlvcj4pOiBCb3Q8Q29tcGxldGVEZXNpcmVkUHJvcGVydGllczxUUHJvcHM+LCBUQmVoYXZpb3I+IHtcbiAgdHlwZSBDb21wbGV0ZVByb3BzID0gQ29tcGxldGVEZXNpcmVkUHJvcGVydGllczxUUHJvcHM+XG4gIHR5cGUgVHlwZWRCb3QgPSBCb3Q8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPlxuXG4gIGlmICghb3B0aW9ucy50cmFuc2Zvcm1lcnMpIG9wdGlvbnMudHJhbnNmb3JtZXJzID0ge31cbiAgaWYgKCFvcHRpb25zLnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcykgb3B0aW9ucy50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMgPSBvcHRpb25zLmRlc2lyZWRQcm9wZXJ0aWVzXG4gIGlmICghb3B0aW9ucy5yZXN0KSBvcHRpb25zLnJlc3QgPSB7IHRva2VuOiBvcHRpb25zLnRva2VuLCBhcHBsaWNhdGlvbklkOiBvcHRpb25zLmFwcGxpY2F0aW9uSWQgfVxuICBpZiAoIW9wdGlvbnMucmVzdC50b2tlbikgb3B0aW9ucy5yZXN0LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMucmVzdC5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLnJlc3QubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdSRVNUJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkpIG9wdGlvbnMuZ2F0ZXdheSA9IHsgdG9rZW46IG9wdGlvbnMudG9rZW4gfVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS50b2tlbikgb3B0aW9ucy5nYXRld2F5LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5ldmVudHMpIG9wdGlvbnMuZ2F0ZXdheS5ldmVudHMgPSB7fVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLmdhdGV3YXkubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdHQVRFV0FZJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UpIHtcbiAgICBvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UgPSBhc3luYyAoc2hhcmQsIGRhdGEpID0+IHtcbiAgICAgIC8vIFRSSUdHRVIgUkFXIEVWRU5UXG4gICAgICBib3QuZXZlbnRzLnJhdz8uKGRhdGEsIHNoYXJkLmlkKVxuXG4gICAgICBpZiAoIWRhdGEudCkgcmV0dXJuXG5cbiAgICAgIC8vIFJVTiBESVNQQVRDSCBDSEVDS1xuICAgICAgYXdhaXQgYm90LmV2ZW50cy5kaXNwYXRjaFJlcXVpcmVtZW50cz8uKGRhdGEsIHNoYXJkLmlkKVxuICAgICAgYm90LmhhbmRsZXJzW2RhdGEudCBhcyBHYXRld2F5RGlzcGF0Y2hFdmVudE5hbWVzXT8uKGJvdCwgZGF0YSwgc2hhcmQuaWQpXG4gICAgfVxuICB9XG5cbiAgb3B0aW9ucy5nYXRld2F5LmludGVudHMgPSBvcHRpb25zLmludGVudHNcbiAgb3B0aW9ucy5nYXRld2F5LnByZWZlclNuYWtlQ2FzZSA9IHRydWVcblxuICBjb25zdCBpZCA9IGdldEJvdElkRnJvbVRva2VuKG9wdGlvbnMudG9rZW4pXG5cbiAgY29uc3QgYm90OiBUeXBlZEJvdCA9IHtcbiAgICBpZCxcbiAgICBhcHBsaWNhdGlvbklkOiBpZCxcbiAgICB0cmFuc2Zvcm1lcnM6IGNyZWF0ZVRyYW5zZm9ybWVycyhvcHRpb25zLnRyYW5zZm9ybWVycykgYXMgVHlwZWRCb3RbJ3RyYW5zZm9ybWVycyddLFxuICAgIGhhbmRsZXJzOiBjcmVhdGVCb3RHYXRld2F5SGFuZGxlcnM8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPihvcHRpb25zLmhhbmRsZXJzID8/IHt9KSxcbiAgICByZXN0OiBjcmVhdGVSZXN0TWFuYWdlcihvcHRpb25zLnJlc3QgYXMgQ3JlYXRlUmVzdE1hbmFnZXJPcHRpb25zKSxcbiAgICBnYXRld2F5OiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zLmdhdGV3YXkgYXMgQ3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zKSxcbiAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzID8/IHt9LFxuICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXJGYWN0b3J5ID8gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdCT1QnKSA6IGNyZWF0ZUxvZ2dlcih7IG5hbWU6ICdCT1QnIH0pLFxuICAgIC8vIFNldCB1cCBoZWxwZXJzIGJlbG93LlxuICAgIGhlbHBlcnM6IHt9IGFzIEJvdEhlbHBlcnM8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPixcbiAgICBhc3luYyBzdGFydCgpIHtcbiAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py5jb25uZWN0aW9uKSB7XG4gICAgICAgIGJvdC5nYXRld2F5LmNvbm5lY3Rpb24gPSBhd2FpdCBib3QucmVzdC5nZXRTZXNzaW9uSW5mbygpXG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJyaWRlcyBpbiB0aGUgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoIW9wdGlvbnMuZ2F0ZXdheT8udXJsKSBib3QuZ2F0ZXdheS51cmwgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnVybFxuXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py50b3RhbFNoYXJkcykgYm90LmdhdGV3YXkudG90YWxTaGFyZHMgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnNoYXJkc1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py5sYXN0U2hhcmRJZCAmJiAhb3B0aW9ucy5nYXRld2F5Py50b3RhbFNoYXJkcykgYm90LmdhdGV3YXkubGFzdFNoYXJkSWQgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnNoYXJkcyAtIDFcbiAgICAgIH1cblxuICAgICAgaWYgKCFib3QuZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKSB7XG4gICAgICAgIGJvdC5nYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEdhdGV3YXlCb3QoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGJvdC5nYXRld2F5LnNwYXduU2hhcmRzKClcbiAgICB9LFxuXG4gICAgYXN5bmMgc2h1dGRvd24oKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LmdhdGV3YXkuc2h1dGRvd24oU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlNodXRkb3duLCAnVXNlciByZXF1ZXN0ZWQgYm90IHN0b3AnKVxuICAgIH0sXG4gIH1cblxuICBib3QuaGVscGVycyA9IGNyZWF0ZUJvdEhlbHBlcnMoYm90KVxuICBpZiAob3B0aW9ucy5hcHBsaWNhdGlvbklkKSBib3QuYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbnMuYXBwbGljYXRpb25JZClcblxuICByZXR1cm4gYm90XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQm90T3B0aW9uczxUUHJvcHMgZXh0ZW5kcyBSZWN1cnNpdmVQYXJ0aWFsPFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzPiwgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4ge1xuICAvKiogVGhlIGJvdCdzIHRva2VuLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBBcHBsaWNhdGlvbiBJZCBvZiB0aGUgYm90IGluY2FzZSBpdCBpcyBhbiBvbGQgYm90IHRva2VuLiAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBUaGUgYm90J3MgaW50ZW50cyB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29ubmVjdGlvbiB3aXRoIGRpc2NvcmRzIGdhdGV3YXkuICovXG4gIGludGVudHM/OiBHYXRld2F5SW50ZW50c1xuICAvKiogQW55IG9wdGlvbnMgeW91IHdpc2ggdG8gcHJvdmlkZSB0byB0aGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0PzogT21pdDxDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsICd0b2tlbic+ICYgUGFydGlhbDxQaWNrPENyZWF0ZVJlc3RNYW5hZ2VyT3B0aW9ucywgJ3Rva2VuJz4+XG4gIC8qKiBBbnkgb3B0aW9ucyB5b3Ugd2lzaCB0byBwcm92aWRlIHRvIHRoZSBnYXRld2F5IG1hbmFnZXIuICovXG4gIGdhdGV3YXk/OiBPbWl0PENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucywgJ3Rva2VuJz4gJiBQYXJ0aWFsPFBpY2s8Q3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zLCAndG9rZW4nPj5cbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzPzogUGFydGlhbDxFdmVudEhhbmRsZXJzPENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8Tm9JbmZlcjxUUHJvcHM+PiwgVEJlaGF2aW9yPj5cbiAgLyoqIFRoZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgdHJhbnNmb3JtIGRpc2NvcmQgb2JqZWN0cyB0byBkaXNjb3JkZW5vIHNoYXBlZCBvYmplY3RzLiAqL1xuICB0cmFuc2Zvcm1lcnM/OiBSZWN1cnNpdmVQYXJ0aWFsPFRyYW5zZm9ybWVyczxDb21wbGV0ZURlc2lyZWRQcm9wZXJ0aWVzPE5vSW5mZXI8VFByb3BzPj4sIFRCZWhhdmlvcj4+XG4gIC8qKiBUaGUgaGFuZGxlciBmdW5jdGlvbnMgdGhhdCBzaG91bGQgaGFuZGxlIGluY29taW5nIGRpc2NvcmQgcGF5bG9hZHMgZnJvbSBnYXRld2F5IGFuZCBjYWxsIGFuIGV2ZW50LiAqL1xuICBoYW5kbGVycz86IFBhcnRpYWw8UmVjb3JkPEdhdGV3YXlEaXNwYXRjaEV2ZW50TmFtZXMsIEJvdEdhdGV3YXlIYW5kbGVyPENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8Tm9JbmZlcjxUUHJvcHM+PiwgVEJlaGF2aW9yPj4+XG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBmb3IgdGhlIGJvdFxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgZGVzaXJlZFByb3BlcnRpZXM/OiBUUHJvcHNcbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIGJlaGF2aW9yIGZvciB1bmRlc2lyZWQgcHJvcGVydGllc1xuICAgKlxuICAgKiBAZGVmYXVsdCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleVxuICAgKi9cbiAgZGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj86IFRCZWhhdmlvclxuICAvKipcbiAgICogVGhpcyBmYWN0b3J5IHdpbGwgYmUgaW52b2tlZCB0byBjcmVhdGUgdGhlIGxvZ2dlciBmb3IgZ2F0ZXdheSwgcmVzdCBhbmQgYm90XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIG5vdCBwcm92aWRlZCB0aGUgZGVmYXVsdCBsb2dnZXIgd2lsbCBiZSB1c2VkIHdpdGggcmVzdCBhbmQgZ2F0ZXdheSBzaGFyaW5nIHRoZSBzYW1lIGxvZ2dlclxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCAzIHRpbWVzLCBvbmUgd2l0aCB0aGUgbmFtZSBvZiBgUkVTVGAsIG9uZSB3aXRoIGBHQVRFV0FZYCBhbmQgdGhlIHRoaXJkIG9uZSB3aXRoIG5hbWUgYEJPVGBcbiAgICovXG4gIGxvZ2dlckZhY3Rvcnk/OiAobmFtZTogJ1JFU1QnIHwgJ0dBVEVXQVknIHwgJ0JPVCcpID0+IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdDxcbiAgVFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgPSBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyxcbiAgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciA9IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IuUmVtb3ZlS2V5LFxuPiB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGJvdC4gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBib3QuIFRoaXMgaXMgdXN1YWxseSB0aGUgc2FtZSBhcyBpZCBidXQgaW4gdGhlIGNhc2Ugb2Ygb2xkIGJvdHMgY2FuIGJlIGRpZmZlcmVudC4gKi9cbiAgYXBwbGljYXRpb25JZDogYmlnaW50XG4gIC8qKiBUaGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0OiBSZXN0TWFuYWdlclxuICAvKiogVGhlIGdhdGV3YXkgbWFuYWdlci4gKi9cbiAgZ2F0ZXdheTogR2F0ZXdheU1hbmFnZXJcbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzOiBQYXJ0aWFsPEV2ZW50SGFuZGxlcnM8VFByb3BzLCBUQmVoYXZpb3I+PlxuICAvKiogQSBsb2dnZXIgdXRpbGl0eSB0byBtYWtlIGl0IGVhc3kgdG8gbG9nIG5pY2UgYW5kIHVzZWZ1bCB0aGluZ3MgaW4gdGhlIGJvdCBjb2RlLiAqL1xuICBsb2dnZXI6IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxuICAvKiogVGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCB0cmFuc2Zvcm0gZGlzY29yZCBvYmplY3RzIHRvIGRpc2NvcmRlbm8gc2hhcGVkIG9iamVjdHMuICovXG4gIHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJzPFRQcm9wcywgVEJlaGF2aW9yPiAmIHtcbiAgICAkaW5mZXJyZWRUeXBlczoge1xuICAgICAgW0sgaW4ga2V5b2YgVHJhbnNmb3JtZXJzT2JqZWN0c106IFNldHVwRGVzaXJlZFByb3BzPFRyYW5zZm9ybWVyc09iamVjdHNbS10sIFRQcm9wcywgVEJlaGF2aW9yPlxuICAgIH1cbiAgfVxuICAvKiogVGhlIGhhbmRsZXIgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhhbmRsZSBpbmNvbWluZyBkaXNjb3JkIHBheWxvYWRzIGZyb20gZ2F0ZXdheSBhbmQgY2FsbCBhbiBldmVudC4gKi9cbiAgaGFuZGxlcnM6IEdhdGV3YXlIYW5kbGVyczxUUHJvcHMsIFRCZWhhdmlvcj5cbiAgaGVscGVyczogQm90SGVscGVyczxUUHJvcHMsIFRCZWhhdmlvcj5cbiAgLyoqIFN0YXJ0IHRoZSBib3QgY29ubmVjdGlvbiB0byB0aGUgZ2F0ZXdheS4gKi9cbiAgc3RhcnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFNodXRzIGRvd24gYWxsIHRoZSBib3QgY29ubmVjdGlvbnMgdG8gdGhlIGdhdGV3YXkuICovXG4gIHNodXRkb3duOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbi8qKiBAaW50ZXJuYWwgVGhpcyBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgd2l0aG91dCBub3RpY2UgKi9cbmV4cG9ydCB0eXBlIEludGVybmFsQm90ID0gQm90PENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8e30sIHRydWU+LCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleT5cbiJdLCJuYW1lcyI6WyJjcmVhdGVCb3QiLCJvcHRpb25zIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJyZXN0IiwidG9rZW4iLCJhcHBsaWNhdGlvbklkIiwibG9nZ2VyIiwibG9nZ2VyRmFjdG9yeSIsImdhdGV3YXkiLCJldmVudHMiLCJtZXNzYWdlIiwic2hhcmQiLCJkYXRhIiwiYm90IiwicmF3IiwiaWQiLCJ0IiwiZGlzcGF0Y2hSZXF1aXJlbWVudHMiLCJoYW5kbGVycyIsImludGVudHMiLCJwcmVmZXJTbmFrZUNhc2UiLCJnZXRCb3RJZEZyb21Ub2tlbiIsImNyZWF0ZVRyYW5zZm9ybWVycyIsImNyZWF0ZUJvdEdhdGV3YXlIYW5kbGVycyIsImNyZWF0ZVJlc3RNYW5hZ2VyIiwiY3JlYXRlR2F0ZXdheU1hbmFnZXIiLCJjcmVhdGVMb2dnZXIiLCJuYW1lIiwiaGVscGVycyIsInN0YXJ0IiwiY29ubmVjdGlvbiIsImdldFNlc3Npb25JbmZvIiwidXJsIiwidG90YWxTaGFyZHMiLCJzaGFyZHMiLCJsYXN0U2hhcmRJZCIsInJlc2hhcmRpbmciLCJnZXRHYXRld2F5Qm90Iiwic3Bhd25TaGFyZHMiLCJzaHV0ZG93biIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNodXRkb3duIiwiY3JlYXRlQm90SGVscGVycyIsInNub3dmbGFrZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF3QmdCQTs7O2VBQUFBOzs7eUJBdkI0QztzQkFFMUI7dUJBRTJCOzBCQVMwQjt5QkFDckM7OEJBQ0k7QUFRL0MsU0FBU0EsVUFHZEMsT0FBNEM7SUFJNUMsSUFBSSxDQUFDQSxRQUFRQyxZQUFZLEVBQUVELFFBQVFDLFlBQVksR0FBRyxDQUFDO0lBQ25ELElBQUksQ0FBQ0QsUUFBUUMsWUFBWSxDQUFDQyxpQkFB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
@@ -48,4 +48,4 @@ function commandOptionsParser(interaction, options) {
48
48
  return args;
49
49
  }
50
50
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kT3B0aW9uc1BhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlcmFjdGlvbiwgSW50ZXJhY3Rpb25EYXRhT3B0aW9uIH0gZnJvbSAnLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1hbmRPcHRpb25zUGFyc2VyKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiwgb3B0aW9ucz86IEludGVyYWN0aW9uRGF0YU9wdGlvbltdKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGlmICghaW50ZXJhY3Rpb24uZGF0YSkgcmV0dXJuIHt9XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IGludGVyYWN0aW9uLmRhdGEub3B0aW9ucyA/PyBbXVxuXG4gIGNvbnN0IGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKG9wdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlN1YkNvbW1hbmRHcm91cDpcbiAgICAgIGNhc2UgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMuU3ViQ29tbWFuZDpcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSBjb21tYW5kT3B0aW9uc1BhcnNlcihpbnRlcmFjdGlvbiwgb3B0aW9uLm9wdGlvbnMpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLkNoYW5uZWw6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8uY2hhbm5lbHM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlJvbGU6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ucm9sZXM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlVzZXI6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSxcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLkF0dGFjaG1lbnQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8uYXR0YWNobWVudHM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLk1lbnRpb25hYmxlOlxuICAgICAgICAvLyBNZW50aW9uYWJsZSBhcmUgcm9sZXMgb3IgdXNlcnNcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSBpbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkPy5yb2xlcz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgPz8ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSxcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IG9wdGlvbi52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmdzXG59XG4iXSwibmFtZXMiOlsiY29tbWFuZE9wdGlvbnNQYXJzZXIiLCJpbnRlcmFjdGlvbiIsIm9wdGlvbnMiLCJkYXRhIiwiYXJncyIsIm9wdGlvbiIsInR5cGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyIsIlN1YkNvbW1hbmRHcm91cCIsIlN1YkNvbW1hbmQiLCJuYW1lIiwiQ2hhbm5lbCIsInJlc29sdmVkIiwiY2hhbm5lbHMiLCJnZXQiLCJCaWdJbnQiLCJ2YWx1ZSIsIlJvbGUiLCJyb2xlcyIsIlVzZXIiLCJ1c2VyIiwidXNlcnMiLCJtZW1iZXIiLCJtZW1iZXJzIiwiQXR0YWNobWVudCIsImF0dGFjaG1lbnRzIiwiTWVudGlvbmFibGUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2dCQTs7O2VBQUFBOzs7dUJBSDhCO0FBR3ZDLFNBQVNBLHFCQUFxQkMsV0FBd0IsRUFBRUMsT0FBaUM7SUFDOUYsSUFBSSxDQUFDRCxZQUFZRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQy9CLElBQUksQ0FBQ0QsU0FBU0EsVUFBVUQsWUFBWUUsSUFBSSxDQUFDRCxPQUFPLElBQUksRUFBRTtJQUV0RCxNQUFNRSxPQUE0QixDQUFDO0lBRW5DLEtBQUssTUFBTUMsVUFBVUgsUUFBUztRQUM1QixPQUFRRyxPQUFPQyxJQUFJO1lBQ2pCLEtBQUtDLG9DQUE2QixDQUFDQyxlQUFlO1lBQ2xELEtBQUtELG9DQUE2QixDQUFDRSxVQUFVO2dCQUMzQ0wsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1YscUJBQXFCQyxhQUFhSSxPQUFPSCxPQUFPO2dCQUNwRTtZQUNGLEtBQUtLLG9DQUE2QixDQUFDSSxPQUFPO2dCQUN4Q1AsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVDLFVBQVVDLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ2hGO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNVLElBQUk7Z0JBQ3JDYixJQUFJLENBQUNDLE9BQU9LLElBQUksQ0FBQyxHQUFHVCxZQUFZRSxJQUFJLENBQUNTLFFBQVEsRUFBRU0sT0FBT0osSUFBSUMsT0FBT1YsT0FBT1csS0FBSztnQkFDN0U7WUFDRixLQUFLVCxvQ0FBNkIsQ0FBQ1ksSUFBSTtnQkFDckNmLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUc7b0JBQ2xCVSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNpQixVQUFVO2dCQUMzQ3BCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFYSxhQUFhWCxJQUFJQyxPQUFPVixPQUFPVyxLQUFLO2dCQUNuRjtZQUNGLEtBQUtULG9DQUE2QixDQUFDbUIsV0FBVztnQkFDNUMsaUNBQWlDO2dCQUNqQ3RCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFTSxPQUFPSixJQUFJQyxPQUFPVixPQUFPVyxLQUFLLE1BQU87b0JBQ2xGSSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0Y7Z0JBQ0VaLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdMLE9BQU9XLEtBQUs7UUFDcEM7SUFDRjtJQUVBLE9BQU9aO0FBQ1QifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kT3B0aW9uc1BhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50LCBDaGFubmVsLCBJbnRlcmFjdGlvbiwgSW50ZXJhY3Rpb25EYXRhT3B0aW9uLCBNZW1iZXIsIFJvbGUsIFVzZXIgfSBmcm9tICcuL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY29tbWFuZE9wdGlvbnNQYXJzZXIoaW50ZXJhY3Rpb246IEludGVyYWN0aW9uLCBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW10pOiBQYXJzZWRJbnRlcmFjdGlvbk9wdGlvbiB7XG4gIGlmICghaW50ZXJhY3Rpb24uZGF0YSkgcmV0dXJuIHt9XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IGludGVyYWN0aW9uLmRhdGEub3B0aW9ucyA/PyBbXVxuXG4gIGNvbnN0IGFyZ3M6IFBhcnNlZEludGVyYWN0aW9uT3B0aW9uID0ge31cblxuICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChvcHRpb24udHlwZSkge1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5TdWJDb21tYW5kR3JvdXA6XG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlN1YkNvbW1hbmQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gY29tbWFuZE9wdGlvbnNQYXJzZXIoaW50ZXJhY3Rpb24sIG9wdGlvbi5vcHRpb25zKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5DaGFubmVsOlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LmNoYW5uZWxzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBJbnRlcmFjdGlvblJlc29sdmVkQ2hhbm5lbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5Sb2xlOlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnJvbGVzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBSb2xlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlVzZXI6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBVc2VyLFxuICAgICAgICAgIG1lbWJlcjogaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ubWVtYmVycz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlcixcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5BdHRhY2htZW50OlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LmF0dGFjaG1lbnRzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBBdHRhY2htZW50XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLk1lbnRpb25hYmxlOlxuICAgICAgICAvLyBNZW50aW9uYWJsZSBhcmUgcm9sZXMgb3IgdXNlcnNcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSAoaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ucm9sZXM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpIGFzIFJvbGUpID8/IHtcbiAgICAgICAgICB1c2VyOiBpbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkPy51c2Vycz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgYXMgVXNlcixcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpIGFzIEludGVyYWN0aW9uUmVzb2x2ZWRNZW1iZXIsXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gb3B0aW9uLnZhbHVlIGFzIFBhcnNlZEludGVyYWN0aW9uT3B0aW9uW3N0cmluZ11cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJnc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEludGVyYWN0aW9uT3B0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IEludGVyYWN0aW9uUmVzb2x2ZWRVc2VyIHwgSW50ZXJhY3Rpb25SZXNvbHZlZENoYW5uZWwgfCBSb2xlIHwgQXR0YWNobWVudCB8IFBhcnNlZEludGVyYWN0aW9uT3B0aW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3Rpb25SZXNvbHZlZFVzZXIge1xuICB1c2VyOiBVc2VyXG4gIG1lbWJlcjogSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlclxufVxuXG5leHBvcnQgdHlwZSBJbnRlcmFjdGlvblJlc29sdmVkQ2hhbm5lbCA9IFBpY2s8Q2hhbm5lbCwgJ2lkJyB8ICduYW1lJyB8ICd0eXBlJyB8ICdwZXJtaXNzaW9ucycgfCAndGhyZWFkTWV0YWRhdGEnIHwgJ3BhcmVudElkJz5cblxuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlciA9IE9taXQ8TWVtYmVyLCAndXNlcicgfCAnZGVhZicgfCAnbXV0ZSc+XG4iXSwibmFtZXMiOlsiY29tbWFuZE9wdGlvbnNQYXJzZXIiLCJpbnRlcmFjdGlvbiIsIm9wdGlvbnMiLCJkYXRhIiwiYXJncyIsIm9wdGlvbiIsInR5cGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyIsIlN1YkNvbW1hbmRHcm91cCIsIlN1YkNvbW1hbmQiLCJuYW1lIiwiQ2hhbm5lbCIsInJlc29sdmVkIiwiY2hhbm5lbHMiLCJnZXQiLCJCaWdJbnQiLCJ2YWx1ZSIsIlJvbGUiLCJyb2xlcyIsIlVzZXIiLCJ1c2VyIiwidXNlcnMiLCJtZW1iZXIiLCJtZW1iZXJzIiwiQXR0YWNobWVudCIsImF0dGFjaG1lbnRzIiwiTWVudGlvbmFibGUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2dCQTs7O2VBQUFBOzs7dUJBSDhCO0FBR3ZDLFNBQVNBLHFCQUFxQkMsV0FBd0IsRUFBRUMsT0FBaUM7SUFDOUYsSUFBSSxDQUFDRCxZQUFZRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQy9CLElBQUksQ0FBQ0QsU0FBU0EsVUFBVUQsWUFBWUUsSUFBSSxDQUFDRCxPQUFPLElBQUksRUFBRTtJQUV0RCxNQUFNRSxPQUFnQyxDQUFDO0lBRXZDLEtBQUssTUFBTUMsVUFBVUgsUUFBUztRQUM1QixPQUFRRyxPQUFPQyxJQUFJO1lBQ2pCLEtBQUtDLG9DQUE2QixDQUFDQyxlQUFlO1lBQ2xELEtBQUtELG9DQUE2QixDQUFDRSxVQUFVO2dCQUMzQ0wsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1YscUJBQXFCQyxhQUFhSSxPQUFPSCxPQUFPO2dCQUNwRTtZQUNGLEtBQUtLLG9DQUE2QixDQUFDSSxPQUFPO2dCQUN4Q1AsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVDLFVBQVVDLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ2hGO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNVLElBQUk7Z0JBQ3JDYixJQUFJLENBQUNDLE9BQU9LLElBQUksQ0FBQyxHQUFHVCxZQUFZRSxJQUFJLENBQUNTLFFBQVEsRUFBRU0sT0FBT0osSUFBSUMsT0FBT1YsT0FBT1csS0FBSztnQkFDN0U7WUFDRixLQUFLVCxvQ0FBNkIsQ0FBQ1ksSUFBSTtnQkFDckNmLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUc7b0JBQ2xCVSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNpQixVQUFVO2dCQUMzQ3BCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFYSxhQUFhWCxJQUFJQyxPQUFPVixPQUFPVyxLQUFLO2dCQUNuRjtZQUNGLEtBQUtULG9DQUE2QixDQUFDbUIsV0FBVztnQkFDNUMsaUNBQWlDO2dCQUNqQ3RCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUcsQUFBQ1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVNLE9BQU9KLElBQUlDLE9BQU9WLE9BQU9XLEtBQUssTUFBZ0I7b0JBQzVGSSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0Y7Z0JBQ0VaLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdMLE9BQU9XLEtBQUs7UUFDcEM7SUFDRjtJQUVBLE9BQU9aO0FBQ1QifQ==