@nlabs/reaktor 1.6.3 → 1.8.0

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 (278) hide show
  1. package/LICENSE +74 -201
  2. package/README.md +48 -16
  3. package/lib/actions/analytics.d.ts +10 -0
  4. package/lib/actions/analytics.js +539 -0
  5. package/lib/actions/apps.js +2 -2
  6. package/lib/actions/connections.js +1 -1
  7. package/lib/actions/content.js +2 -2
  8. package/lib/actions/conversations.js +2 -2
  9. package/lib/actions/crm.d.ts +11 -1
  10. package/lib/actions/crm.js +443 -13
  11. package/lib/actions/crud.js +2 -2
  12. package/lib/actions/dynamodb.d.ts +1 -1
  13. package/lib/actions/dynamodb.js +2 -2
  14. package/lib/actions/email.d.ts +1 -1
  15. package/lib/actions/email.js +2 -2
  16. package/lib/actions/files.js +2 -2
  17. package/lib/actions/flags.d.ts +6 -0
  18. package/lib/actions/flags.js +147 -0
  19. package/lib/actions/groups.js +2 -2
  20. package/lib/actions/images.d.ts +1 -1
  21. package/lib/actions/images.js +2 -2
  22. package/lib/actions/index.d.ts +3 -2
  23. package/lib/actions/index.js +4 -3
  24. package/lib/actions/ios.js +1 -1
  25. package/lib/actions/locations.js +2 -2
  26. package/lib/actions/messages.js +2 -2
  27. package/lib/actions/notifications.d.ts +1 -1
  28. package/lib/actions/notifications.js +2 -2
  29. package/lib/actions/payments.d.ts +3 -3
  30. package/lib/actions/payments.js +144 -189
  31. package/lib/actions/personas.js +1 -1
  32. package/lib/actions/posts.d.ts +0 -4
  33. package/lib/actions/posts.js +2 -4
  34. package/lib/actions/query.js +2 -2
  35. package/lib/actions/reactions.js +2 -2
  36. package/lib/actions/rum.js +148 -45
  37. package/lib/actions/s3.d.ts +1 -1
  38. package/lib/actions/s3.js +2 -2
  39. package/lib/actions/search.js +2 -2
  40. package/lib/actions/sms.js +2 -2
  41. package/lib/actions/statistics.js +2 -2
  42. package/lib/actions/subscriptions.js +2 -2
  43. package/lib/actions/tags.js +2 -2
  44. package/lib/actions/users.d.ts +4 -1
  45. package/lib/actions/users.js +85 -11
  46. package/lib/actions/videos.js +2 -2
  47. package/lib/adapters/arangoAdapter.js +1 -1
  48. package/lib/adapters/contentAdapter.js +2 -2
  49. package/lib/adapters/fileAdapter.js +1 -1
  50. package/lib/adapters/imageAdapter.js +1 -1
  51. package/lib/adapters/index.js +1 -1
  52. package/lib/adapters/messageAdapter.js +1 -1
  53. package/lib/adapters/postAdapter.js +1 -1
  54. package/lib/adapters/reaktorAdapter.js +1 -1
  55. package/lib/adapters/tagAdapter.d.ts +0 -1
  56. package/lib/adapters/tagAdapter.js +1 -2
  57. package/lib/adapters/userAdapter.d.ts +0 -1
  58. package/lib/adapters/userAdapter.js +1 -2
  59. package/lib/config.js +8 -2
  60. package/lib/constants/collections.d.ts +17 -1
  61. package/lib/constants/collections.js +18 -2
  62. package/lib/handlers/graphqlHandler.d.ts +2 -2
  63. package/lib/handlers/graphqlHandler.js +2 -19
  64. package/lib/index.d.ts +4 -2
  65. package/lib/index.js +4 -3
  66. package/lib/lambdas/actions/websockets.js +2 -2
  67. package/lib/lambdas/authorizer.js +2 -2
  68. package/lib/lambdas/connection.js +2 -2
  69. package/lib/lambdas/utils/message.js +2 -2
  70. package/lib/lambdas/utils/websocket.d.ts +1 -1
  71. package/lib/lambdas/utils/websocket.js +2 -2
  72. package/lib/mocks/conversation.js +1 -1
  73. package/lib/mocks/file.js +1 -1
  74. package/lib/mocks/group.js +1 -1
  75. package/lib/mocks/image.js +1 -1
  76. package/lib/mocks/post.js +1 -1
  77. package/lib/mocks/tag.js +1 -1
  78. package/lib/mocks/user.js +1 -1
  79. package/lib/mocks/video.js +1 -1
  80. package/lib/mutations/analytics/analytics.d.ts +1 -0
  81. package/lib/mutations/analytics/analytics.js +35 -0
  82. package/lib/mutations/content/content.js +2 -2
  83. package/lib/mutations/crm/crm.js +57 -11
  84. package/lib/mutations/events/events.js +2 -2
  85. package/lib/mutations/flags/flags.d.ts +1 -0
  86. package/lib/mutations/flags/flags.js +33 -0
  87. package/lib/mutations/groups/groups.js +2 -2
  88. package/lib/mutations/images/images.js +2 -2
  89. package/lib/mutations/index.d.ts +3 -1
  90. package/lib/mutations/index.js +13 -3
  91. package/lib/mutations/locations/locations.js +2 -2
  92. package/lib/mutations/messages/messages.js +2 -2
  93. package/lib/mutations/personas/personas.js +2 -2
  94. package/lib/mutations/posts/posts.js +2 -2
  95. package/lib/mutations/reactions/reactions.js +2 -2
  96. package/lib/mutations/rum/rum.js +2 -2
  97. package/lib/mutations/statistics/statistics.js +2 -2
  98. package/lib/mutations/subscriptions/subscriptions.js +2 -2
  99. package/lib/mutations/tags/tags.js +2 -2
  100. package/lib/mutations/users/users.js +30 -17
  101. package/lib/mutations/videos/videos.js +2 -2
  102. package/lib/objectTypes/analytics.d.ts +8 -0
  103. package/lib/objectTypes/analytics.js +147 -0
  104. package/lib/objectTypes/app.js +2 -2
  105. package/lib/objectTypes/bankAccount.js +2 -2
  106. package/lib/objectTypes/connection.js +2 -2
  107. package/lib/objectTypes/content.js +2 -2
  108. package/lib/objectTypes/conversation.js +2 -2
  109. package/lib/objectTypes/creditCard.js +2 -2
  110. package/lib/objectTypes/crm.d.ts +5 -0
  111. package/lib/objectTypes/crm.js +68 -2
  112. package/lib/objectTypes/document.js +1 -1
  113. package/lib/objectTypes/error.js +2 -2
  114. package/lib/objectTypes/event.js +2 -2
  115. package/lib/objectTypes/external.js +2 -2
  116. package/lib/objectTypes/file.js +2 -2
  117. package/lib/objectTypes/filter.js +2 -2
  118. package/lib/objectTypes/flag.d.ts +1 -0
  119. package/lib/objectTypes/flag.js +35 -0
  120. package/lib/objectTypes/group.js +2 -2
  121. package/lib/objectTypes/iapSubscription.js +2 -2
  122. package/lib/objectTypes/image.d.ts +1 -1
  123. package/lib/objectTypes/image.js +2 -2
  124. package/lib/objectTypes/index.d.ts +2 -0
  125. package/lib/objectTypes/index.js +3 -1
  126. package/lib/objectTypes/location.js +2 -2
  127. package/lib/objectTypes/message.js +2 -2
  128. package/lib/objectTypes/passcode.js +2 -2
  129. package/lib/objectTypes/persona.js +2 -2
  130. package/lib/objectTypes/plan.js +2 -2
  131. package/lib/objectTypes/post.js +2 -2
  132. package/lib/objectTypes/query.js +2 -2
  133. package/lib/objectTypes/reaction.js +2 -2
  134. package/lib/objectTypes/relation.js +2 -2
  135. package/lib/objectTypes/rum.js +4 -4
  136. package/lib/objectTypes/search.js +2 -2
  137. package/lib/objectTypes/statistics.js +2 -2
  138. package/lib/objectTypes/subscription.js +2 -2
  139. package/lib/objectTypes/tag.js +2 -2
  140. package/lib/objectTypes/user.js +10 -2
  141. package/lib/objectTypes/video.d.ts +1 -1
  142. package/lib/objectTypes/video.js +2 -2
  143. package/lib/queries/analytics/analytics.d.ts +1 -0
  144. package/lib/queries/analytics/analytics.js +41 -0
  145. package/lib/queries/content/content.js +2 -2
  146. package/lib/queries/crm/crm.js +52 -13
  147. package/lib/queries/events/events.js +2 -2
  148. package/lib/queries/flags/flags.d.ts +1 -0
  149. package/lib/queries/flags/flags.js +16 -0
  150. package/lib/queries/groups/groups.js +2 -2
  151. package/lib/queries/images/images.js +2 -2
  152. package/lib/queries/index.d.ts +3 -1
  153. package/lib/queries/index.js +13 -3
  154. package/lib/queries/locations/locations.js +2 -2
  155. package/lib/queries/messages/messages.js +1 -1
  156. package/lib/queries/personas/personas.js +2 -2
  157. package/lib/queries/posts/posts.js +2 -2
  158. package/lib/queries/query/query.js +2 -2
  159. package/lib/queries/reactions/reactions.js +2 -2
  160. package/lib/queries/statistics/statistics.js +2 -2
  161. package/lib/queries/subscriptions/subscriptions.js +1 -1
  162. package/lib/queries/tags/tags.js +2 -2
  163. package/lib/queries/users/users.js +2 -2
  164. package/lib/queries/videos/videos.js +2 -2
  165. package/lib/templates/email/layout.js +1 -1
  166. package/lib/templates/email/passwordForgot.js +1 -1
  167. package/lib/templates/email/passwordRecovery.js +1 -1
  168. package/lib/templates/email/verifyEmail.js +1 -1
  169. package/lib/templates/email/welcome.js +1 -1
  170. package/lib/templates/sms/passwordForgot.js +1 -1
  171. package/lib/templates/sms/passwordRecovery.js +1 -1
  172. package/lib/templates/sms/verifyEmail.js +1 -1
  173. package/lib/templates/sms/verifyPhone.js +1 -1
  174. package/lib/templates/sms/welcome.js +1 -1
  175. package/lib/types/analytics.types.d.ts +92 -0
  176. package/lib/types/analytics.types.js +6 -0
  177. package/lib/types/apps.types.d.ts +1 -1
  178. package/lib/types/apps.types.js +2 -2
  179. package/lib/types/arangodb.types.d.ts +2 -2
  180. package/lib/types/arangodb.types.js +2 -2
  181. package/lib/types/auth.types.d.ts +4 -1
  182. package/lib/types/auth.types.js +2 -2
  183. package/lib/types/connections.types.d.ts +1 -1
  184. package/lib/types/connections.types.js +2 -2
  185. package/lib/types/content.types.d.ts +1 -1
  186. package/lib/types/content.types.js +2 -2
  187. package/lib/types/conversations.types.d.ts +1 -1
  188. package/lib/types/conversations.types.js +2 -2
  189. package/lib/types/crm.types.d.ts +58 -2
  190. package/lib/types/crm.types.js +2 -2
  191. package/lib/types/email.types.d.ts +1 -1
  192. package/lib/types/email.types.js +2 -2
  193. package/lib/types/error.types.js +1 -1
  194. package/lib/types/files.types.d.ts +1 -1
  195. package/lib/types/files.types.js +2 -2
  196. package/lib/types/flags.types.d.ts +28 -0
  197. package/lib/types/flags.types.js +3 -0
  198. package/lib/types/google.types.d.ts +1 -1
  199. package/lib/types/google.types.js +2 -2
  200. package/lib/types/groups.types.d.ts +1 -1
  201. package/lib/types/groups.types.js +2 -2
  202. package/lib/types/images.types.d.ts +1 -1
  203. package/lib/types/images.types.js +2 -2
  204. package/lib/types/index.d.ts +3 -1
  205. package/lib/types/index.js +4 -2
  206. package/lib/types/locations.types.d.ts +1 -1
  207. package/lib/types/locations.types.js +2 -2
  208. package/lib/types/messages.types.d.ts +1 -1
  209. package/lib/types/messages.types.js +2 -2
  210. package/lib/types/notifications.types.d.ts +1 -1
  211. package/lib/types/notifications.types.js +2 -2
  212. package/lib/types/payments.types.d.ts +4 -1
  213. package/lib/types/payments.types.js +2 -2
  214. package/lib/types/personas.types.js +1 -1
  215. package/lib/types/posts.types.d.ts +1 -1
  216. package/lib/types/posts.types.js +2 -2
  217. package/lib/types/rum.types.d.ts +3 -3
  218. package/lib/types/rum.types.js +2 -2
  219. package/lib/types/statistics.types.js +1 -1
  220. package/lib/types/tags.types.d.ts +1 -1
  221. package/lib/types/tags.types.js +2 -2
  222. package/lib/types/users.types.d.ts +2 -1
  223. package/lib/types/users.types.js +2 -2
  224. package/lib/types/videos.types.d.ts +1 -1
  225. package/lib/types/videos.types.js +2 -2
  226. package/lib/types/websockets.types.d.ts +1 -1
  227. package/lib/types/websockets.types.js +2 -2
  228. package/lib/upload.js +4 -9
  229. package/lib/utils/adapterUtils.d.ts +1 -1
  230. package/lib/utils/adapterUtils.js +2 -2
  231. package/lib/utils/analyticsUtils.d.ts +1 -1
  232. package/lib/utils/analyticsUtils.js +2 -2
  233. package/lib/utils/appContext.d.ts +2 -0
  234. package/lib/utils/appContext.js +10 -0
  235. package/lib/utils/aqlHelpers.d.ts +1 -1
  236. package/lib/utils/aqlHelpers.js +2 -2
  237. package/lib/utils/arangodbUtils.d.ts +9 -1
  238. package/lib/utils/arangodbUtils.js +10 -2
  239. package/lib/utils/authUtils.js +2 -2
  240. package/lib/utils/awsUtils.js +2 -2
  241. package/lib/utils/collectionRegistry.d.ts +1 -1
  242. package/lib/utils/collectionRegistry.js +17 -2
  243. package/lib/utils/contextUtils.d.ts +2 -2
  244. package/lib/utils/contextUtils.js +2 -2
  245. package/lib/utils/dbI18n.example.d.ts +1 -1
  246. package/lib/utils/dbI18n.example.js +2 -2
  247. package/lib/utils/dbI18n.js +2 -2
  248. package/lib/utils/googleTranslate.d.ts +1 -1
  249. package/lib/utils/googleTranslate.js +2 -2
  250. package/lib/utils/graphqlUtils.d.ts +2 -0
  251. package/lib/utils/graphqlUtils.js +1 -1
  252. package/lib/utils/imageUtils.js +1 -1
  253. package/lib/utils/index.d.ts +1 -1
  254. package/lib/utils/index.js +2 -2
  255. package/lib/utils/languageDetection.js +1 -1
  256. package/lib/utils/localeUtils.d.ts +1 -1
  257. package/lib/utils/localeUtils.example.d.ts +1 -1
  258. package/lib/utils/localeUtils.example.js +2 -2
  259. package/lib/utils/localeUtils.js +2 -2
  260. package/lib/utils/middlewareUtils.js +1 -1
  261. package/lib/utils/queryBuilder.d.ts +1 -1
  262. package/lib/utils/queryBuilder.js +2 -2
  263. package/lib/utils/schemaUtils.js +1 -1
  264. package/lib/utils/sessionUtils.d.ts +4 -0
  265. package/lib/utils/sessionUtils.js +2 -2
  266. package/lib/utils/stripeUtils.d.ts +1 -1
  267. package/lib/utils/stripeUtils.js +2 -2
  268. package/lib/utils/templateUtils.js +1 -1
  269. package/lib/utils/testUtils.js +2 -2
  270. package/lib/utils/translationQueue.d.ts +1 -1
  271. package/lib/utils/translationQueue.example.d.ts +1 -1
  272. package/lib/utils/translationQueue.example.js +2 -2
  273. package/lib/utils/translationQueue.js +2 -2
  274. package/lib/videoProcessing.js +1 -1
  275. package/package.json +49 -86
  276. package/lib/actions/websockets.d.ts +0 -20
  277. package/lib/actions/websockets.js +0 -164
  278. package/lib/mocks/nlabs.png +0 -0
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import jwt from 'jsonwebtoken';
5
5
  export const setSession = (session)=>jwt.sign(session, process.env.SESSION_SECRET);
6
6
  export const getSession = (token)=>{
@@ -25,4 +25,4 @@ export const ADMIN_ACCESS_LEVEL = -1;
25
25
  export const isAdminUser = (subject)=>subject?.userAccess === ADMIN_ACCESS_LEVEL;
26
26
  export const hasAccessLevel = (subject, accessLevel)=>isAdminUser(subject) || Number(subject?.userAccess || 0) >= accessLevel;
27
27
 
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3Nlc3Npb25VdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uID0ge1xuICByZWFkb25seSBlcnJvcnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZXhwPzogbnVtYmVyO1xuICByZWFkb25seSBpYXQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHBlcnNvbmFJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJBY2Nlc3M/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWNjZXNzU3ViamVjdCA9IHtcbiAgcmVhZG9ubHkgdXNlckFjY2Vzcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlc3Npb25Ub2tlbiA9IHtcbiAgcmVhZG9ubHkgZXhwaXJlczogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgcGVyc29uYUlkPzogc3RyaW5nO1xuICByZWFkb25seSB0b2tlbjogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHNlc3Npb246IFNlc3Npb24pOiBzdHJpbmcgPT4gand0LnNpZ24oc2Vzc2lvbiwgcHJvY2Vzcy5lbnYuU0VTU0lPTl9TRUNSRVQpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2Vzc2lvbiA9ICh0b2tlbjogc3RyaW5nKTogU2Vzc2lvbiA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LlNFU1NJT05fU0VDUkVUKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHN3aXRjaChlcnJvci5tZXNzYWdlKSB7XG4gICAgICBjYXNlICdqd3QgZXhwaXJlZCc6IHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdleHBpcmVkX3Nlc3Npb24nKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgQURNSU5fQUNDRVNTX0xFVkVMID0gLTE7XG5cbmV4cG9ydCBjb25zdCBpc0FkbWluVXNlciA9IChzdWJqZWN0PzogQWNjZXNzU3ViamVjdCk6IGJvb2xlYW4gPT4gc3ViamVjdD8udXNlckFjY2VzcyA9PT0gQURNSU5fQUNDRVNTX0xFVkVMO1xuZXhwb3J0IGNvbnN0IGhhc0FjY2Vzc0xldmVsID0gKHN1YmplY3Q6IEFjY2Vzc1N1YmplY3QgfCB1bmRlZmluZWQsIGFjY2Vzc0xldmVsOiBudW1iZXIpOiBib29sZWFuID0+IChcbiAgaXNBZG1pblVzZXIoc3ViamVjdCkgfHwgTnVtYmVyKHN1YmplY3Q/LnVzZXJBY2Nlc3MgfHwgMCkgPj0gYWNjZXNzTGV2ZWxcbik7XG4iXSwibmFtZXMiOlsiand0Iiwic2V0U2Vzc2lvbiIsInNlc3Npb24iLCJzaWduIiwicHJvY2VzcyIsImVudiIsIlNFU1NJT05fU0VDUkVUIiwiZ2V0U2Vzc2lvbiIsInRva2VuIiwidmVyaWZ5IiwiZXJyb3IiLCJtZXNzYWdlIiwiZXJyIiwiRXJyb3IiLCJBRE1JTl9BQ0NFU1NfTEVWRUwiLCJpc0FkbWluVXNlciIsInN1YmplY3QiLCJ1c2VyQWNjZXNzIiwiaGFzQWNjZXNzTGV2ZWwiLCJhY2Nlc3NMZXZlbCIsIk51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsU0FBUyxlQUFlO0FBeUIvQixPQUFPLE1BQU1DLGFBQWEsQ0FBQ0MsVUFBNkJGLElBQUlHLElBQUksQ0FBQ0QsU0FBU0UsUUFBUUMsR0FBRyxDQUFDQyxjQUFjLEVBQUU7QUFFdEcsT0FBTyxNQUFNQyxhQUFhLENBQUNDO0lBQ3pCLElBQUk7UUFDRixPQUFPUixJQUFJUyxNQUFNLENBQUNELE9BQU9KLFFBQVFDLEdBQUcsQ0FBQ0MsY0FBYztJQUNyRCxFQUFFLE9BQU1JLE9BQU87UUFDYixPQUFPQSxNQUFNQyxPQUFPO1lBQ2xCLEtBQUs7Z0JBQWU7b0JBQ2xCLE1BQU1DLE1BQU0sSUFBSUMsTUFBTTtvQkFDdEIsTUFBTUQ7Z0JBQ1I7WUFDQTtnQkFBUztvQkFDUCxNQUFNQSxNQUFNLElBQUlDLE1BQU07b0JBQ3RCLE1BQU1EO2dCQUNSO1FBQ0Y7SUFDRjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1FLHFCQUFxQixDQUFDLEVBQUU7QUFFckMsT0FBTyxNQUFNQyxjQUFjLENBQUNDLFVBQXFDQSxTQUFTQyxlQUFlSCxtQkFBbUI7QUFDNUcsT0FBTyxNQUFNSSxpQkFBaUIsQ0FBQ0YsU0FBb0NHLGNBQ2pFSixZQUFZQyxZQUFZSSxPQUFPSixTQUFTQyxjQUFjLE1BQU1FLFlBQzVEIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy9zZXNzaW9uVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCBqd3QgZnJvbSAnanNvbndlYnRva2VuJztcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbiA9IHtcbiAgcmVhZG9ubHkgZXJyb3JzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGV4cD86IG51bWJlcjtcbiAgcmVhZG9ubHkgZmlyc3ROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBpYXQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGxhc3ROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwZXJzb25hSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VyQWNjZXNzPzogbnVtYmVyO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFjY2Vzc1N1YmplY3QgPSB7XG4gIHJlYWRvbmx5IHVzZXJBY2Nlc3M/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uVG9rZW4gPSB7XG4gIHJlYWRvbmx5IGV4cGlyZXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZmlyc3ROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBpc3N1ZWQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgbGFzdE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBlcnNvbmFJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdG9rZW46IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9IChzZXNzaW9uOiBTZXNzaW9uKTogc3RyaW5nID0+IGp3dC5zaWduKHNlc3Npb24sIHByb2Nlc3MuZW52LlNFU1NJT05fU0VDUkVUKTtcblxuZXhwb3J0IGNvbnN0IGdldFNlc3Npb24gPSAodG9rZW46IHN0cmluZyk6IFNlc3Npb24gPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBqd3QudmVyaWZ5KHRva2VuLCBwcm9jZXNzLmVudi5TRVNTSU9OX1NFQ1JFVCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBzd2l0Y2goZXJyb3IubWVzc2FnZSkge1xuICAgICAgY2FzZSAnand0IGV4cGlyZWQnOiB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdpbnZhbGlkX3Nlc3Npb24nKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEFETUlOX0FDQ0VTU19MRVZFTCA9IC0xO1xuXG5leHBvcnQgY29uc3QgaXNBZG1pblVzZXIgPSAoc3ViamVjdD86IEFjY2Vzc1N1YmplY3QpOiBib29sZWFuID0+IHN1YmplY3Q/LnVzZXJBY2Nlc3MgPT09IEFETUlOX0FDQ0VTU19MRVZFTDtcbmV4cG9ydCBjb25zdCBoYXNBY2Nlc3NMZXZlbCA9IChzdWJqZWN0OiBBY2Nlc3NTdWJqZWN0IHwgdW5kZWZpbmVkLCBhY2Nlc3NMZXZlbDogbnVtYmVyKTogYm9vbGVhbiA9PiAoXG4gIGlzQWRtaW5Vc2VyKHN1YmplY3QpIHx8IE51bWJlcihzdWJqZWN0Py51c2VyQWNjZXNzIHx8IDApID49IGFjY2Vzc0xldmVsXG4pO1xuIl0sIm5hbWVzIjpbImp3dCIsInNldFNlc3Npb24iLCJzZXNzaW9uIiwic2lnbiIsInByb2Nlc3MiLCJlbnYiLCJTRVNTSU9OX1NFQ1JFVCIsImdldFNlc3Npb24iLCJ0b2tlbiIsInZlcmlmeSIsImVycm9yIiwibWVzc2FnZSIsImVyciIsIkVycm9yIiwiQURNSU5fQUNDRVNTX0xFVkVMIiwiaXNBZG1pblVzZXIiLCJzdWJqZWN0IiwidXNlckFjY2VzcyIsImhhc0FjY2Vzc0xldmVsIiwiYWNjZXNzTGV2ZWwiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLFNBQVMsZUFBZTtBQTZCL0IsT0FBTyxNQUFNQyxhQUFhLENBQUNDLFVBQTZCRixJQUFJRyxJQUFJLENBQUNELFNBQVNFLFFBQVFDLEdBQUcsQ0FBQ0MsY0FBYyxFQUFFO0FBRXRHLE9BQU8sTUFBTUMsYUFBYSxDQUFDQztJQUN6QixJQUFJO1FBQ0YsT0FBT1IsSUFBSVMsTUFBTSxDQUFDRCxPQUFPSixRQUFRQyxHQUFHLENBQUNDLGNBQWM7SUFDckQsRUFBRSxPQUFNSSxPQUFPO1FBQ2IsT0FBT0EsTUFBTUMsT0FBTztZQUNsQixLQUFLO2dCQUFlO29CQUNsQixNQUFNQyxNQUFNLElBQUlDLE1BQU07b0JBQ3RCLE1BQU1EO2dCQUNSO1lBQ0E7Z0JBQVM7b0JBQ1AsTUFBTUEsTUFBTSxJQUFJQyxNQUFNO29CQUN0QixNQUFNRDtnQkFDUjtRQUNGO0lBQ0Y7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNRSxxQkFBcUIsQ0FBQyxFQUFFO0FBRXJDLE9BQU8sTUFBTUMsY0FBYyxDQUFDQyxVQUFxQ0EsU0FBU0MsZUFBZUgsbUJBQW1CO0FBQzVHLE9BQU8sTUFBTUksaUJBQWlCLENBQUNGLFNBQW9DRyxjQUNqRUosWUFBWUMsWUFBWUksT0FBT0osU0FBU0MsY0FBYyxNQUFNRSxZQUM1RCJ9
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */
5
5
  import stripe from 'stripe';
6
6
  export declare const stripeApiVersion = "2026-07-29.dahlia";
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import stripe from 'stripe';
5
5
  import { Config } from '../config.js';
6
6
  export const stripeApiVersion = '2026-07-29.dahlia';
@@ -9,4 +9,4 @@ export const getStripeClient = ()=>new stripe(Config.get('stripe.token'), {
9
9
  typescript: true
10
10
  });
11
11
 
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3N0cmlwZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgc3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuXG5leHBvcnQgY29uc3Qgc3RyaXBlQXBpVmVyc2lvbiA9ICcyMDI2LTA3LTI5LmRhaGxpYSc7XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJpcGVDbGllbnQgPSAoKSA9PiBuZXcgc3RyaXBlKENvbmZpZy5nZXQoJ3N0cmlwZS50b2tlbicpLCB7YXBpVmVyc2lvbjogc3RyaXBlQXBpVmVyc2lvbiwgdHlwZXNjcmlwdDogdHJ1ZX0pO1xuIl0sIm5hbWVzIjpbInN0cmlwZSIsIkNvbmZpZyIsInN0cmlwZUFwaVZlcnNpb24iLCJnZXRTdHJpcGVDbGllbnQiLCJnZXQiLCJhcGlWZXJzaW9uIiwidHlwZXNjcmlwdCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsWUFBWSxTQUFTO0FBRTVCLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBRXBDLE9BQU8sTUFBTUMsbUJBQW1CLG9CQUFvQjtBQUVwRCxPQUFPLE1BQU1DLGtCQUFrQixJQUFNLElBQUlILE9BQU9DLE9BQU9HLEdBQUcsQ0FBQyxpQkFBaUI7UUFBQ0MsWUFBWUg7UUFBa0JJLFlBQVk7SUFBSSxHQUFHIn0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy9zdHJpcGVVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHN0cmlwZSBmcm9tICdzdHJpcGUnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuZXhwb3J0IGNvbnN0IHN0cmlwZUFwaVZlcnNpb24gPSAnMjAyNi0wNy0yOS5kYWhsaWEnO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RyaXBlQ2xpZW50ID0gKCkgPT4gbmV3IHN0cmlwZShDb25maWcuZ2V0KCdzdHJpcGUudG9rZW4nKSwge2FwaVZlcnNpb246IHN0cmlwZUFwaVZlcnNpb24sIHR5cGVzY3JpcHQ6IHRydWV9KTtcbiJdLCJuYW1lcyI6WyJzdHJpcGUiLCJDb25maWciLCJzdHJpcGVBcGlWZXJzaW9uIiwiZ2V0U3RyaXBlQ2xpZW50IiwiZ2V0IiwiYXBpVmVyc2lvbiIsInR5cGVzY3JpcHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLFlBQVksU0FBUztBQUU1QixTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxPQUFPLE1BQU1DLG1CQUFtQixvQkFBb0I7QUFFcEQsT0FBTyxNQUFNQyxrQkFBa0IsSUFBTSxJQUFJSCxPQUFPQyxPQUFPRyxHQUFHLENBQUMsaUJBQWlCO1FBQUNDLFlBQVlIO1FBQWtCSSxZQUFZO0lBQUksR0FBRyJ9
@@ -8,4 +8,4 @@ export const parseTemplate = (template, params)=>{
8
8
  };
9
9
  export const createTemplate = (templateString, params)=>parseTemplate(templateString, params);
10
10
 
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3RlbXBsYXRlVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVGVtcGxhdGVQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5leHBvcnQgY29uc3QgcGFyc2VUZW1wbGF0ZSA9ICh0ZW1wbGF0ZTogc3RyaW5nLCBwYXJhbXM6IFRlbXBsYXRlUGFyYW1zKTogc3RyaW5nID0+IHtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlO1xuXG4gIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcWyR7a2V5fVxcXFxdYCwgJ2cnKTtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgcGFyYW1zW2tleV0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRlbXBsYXRlID0gPFQgZXh0ZW5kcyBUZW1wbGF0ZVBhcmFtcz4odGVtcGxhdGVTdHJpbmc6IHN0cmluZywgcGFyYW1zOiBUKTogc3RyaW5nID0+XG4gIHBhcnNlVGVtcGxhdGUodGVtcGxhdGVTdHJpbmcsIHBhcmFtcyk7Il0sIm5hbWVzIjpbInBhcnNlVGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsInBhcmFtcyIsInJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwicmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwiY3JlYXRlVGVtcGxhdGUiLCJ0ZW1wbGF0ZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxNQUFNQSxnQkFBZ0IsQ0FBQ0MsVUFBa0JDO0lBQzlDLElBQUlDLFNBQVNGO0lBRWJHLE9BQU9DLElBQUksQ0FBQ0gsUUFBUUksT0FBTyxDQUFDLENBQUNDO1FBQzNCLE1BQU1DLFFBQVEsSUFBSUMsT0FBTyxDQUFDLEdBQUcsRUFBRUYsSUFBSSxHQUFHLENBQUMsRUFBRTtRQUN6Q0osU0FBU0EsT0FBT08sT0FBTyxDQUFDRixPQUFPTixNQUFNLENBQUNLLElBQUk7SUFDNUM7SUFFQSxPQUFPSjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1RLGlCQUFpQixDQUEyQkMsZ0JBQXdCVixTQUMvRUYsY0FBY1ksZ0JBQWdCVixRQUFRIn0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy90ZW1wbGF0ZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFRlbXBsYXRlUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVGVtcGxhdGUgPSAodGVtcGxhdGU6IHN0cmluZywgcGFyYW1zOiBUZW1wbGF0ZVBhcmFtcyk6IHN0cmluZyA9PiB7XG4gIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcblxuICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFske2tleX1cXFxcXWAsICdnJyk7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnZXgsIHBhcmFtc1trZXldKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUZW1wbGF0ZSA9IDxUIGV4dGVuZHMgVGVtcGxhdGVQYXJhbXM+KHRlbXBsYXRlU3RyaW5nOiBzdHJpbmcsIHBhcmFtczogVCk6IHN0cmluZyA9PlxuICBwYXJzZVRlbXBsYXRlKHRlbXBsYXRlU3RyaW5nLCBwYXJhbXMpO1xuIl0sIm5hbWVzIjpbInBhcnNlVGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsInBhcmFtcyIsInJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwicmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwiY3JlYXRlVGVtcGxhdGUiLCJ0ZW1wbGF0ZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxNQUFNQSxnQkFBZ0IsQ0FBQ0MsVUFBa0JDO0lBQzlDLElBQUlDLFNBQVNGO0lBRWJHLE9BQU9DLElBQUksQ0FBQ0gsUUFBUUksT0FBTyxDQUFDLENBQUNDO1FBQzNCLE1BQU1DLFFBQVEsSUFBSUMsT0FBTyxDQUFDLEdBQUcsRUFBRUYsSUFBSSxHQUFHLENBQUMsRUFBRTtRQUN6Q0osU0FBU0EsT0FBT08sT0FBTyxDQUFDRixPQUFPTixNQUFNLENBQUNLLElBQUk7SUFDNUM7SUFFQSxPQUFPSjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1RLGlCQUFpQixDQUEyQkMsZ0JBQXdCVixTQUMvRUYsY0FBY1ksZ0JBQWdCVixRQUFRIn0=
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { beforeAll, describe, expect, it, vi } from 'vitest';
5
5
  const jest = Object.assign(vi, {
6
6
  isolateModulesAsync: async (fn)=>{
@@ -297,4 +297,4 @@ export const createUtilsTestSuite = (name, utilsPath, testCases)=>{
297
297
  });
298
298
  };
299
299
 
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3Rlc3RVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtiZWZvcmVBbGwsIGRlc2NyaWJlLCBleHBlY3QsIGl0LCB2aX0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHtNb2NrfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHR5cGUge0dyYXBoUUxSZXNvbHZlSW5mb30gZnJvbSAnZ3JhcGhxbCc7XG5cbmNvbnN0IGplc3QgPSBPYmplY3QuYXNzaWduKHZpIGFzIGFueSwge1xuICBpc29sYXRlTW9kdWxlc0FzeW5jOiBhc3luYyAoZm46ICgpID0+IFByb21pc2U8dm9pZD4pID0+IHtcbiAgICB2aS5yZXNldE1vZHVsZXMoKTtcbiAgICBhd2FpdCBmbigpO1xuICB9LFxuICByZXF1aXJlQWN0dWFsOiB2aS5pbXBvcnRBY3R1YWwsXG4gIHVuc3RhYmxlX21vY2tNb2R1bGU6IHZpLmRvTW9ja1xufSkgYXMgYW55O1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5cbi8vIERlZmluZSBwcm9wZXIgdHlwZXMgZm9yIHRlc3QgdXRpbGl0aWVzXG50eXBlIE1vY2tPdmVycmlkZXMgPSBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbnR5cGUgVGVzdENvbnRleHQgPSBQYXJ0aWFsPEFwaUNvbnRleHQ+ICYge3Nlc3Npb24/OiBQYXJ0aWFsPHt1c2VySWQ6IHN0cmluZzsgdXNlcm5hbWU6IHN0cmluZzsgdXNlckFjY2VzczogbnVtYmVyfT59O1xudHlwZSBUZXN0QXJncyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xudHlwZSBUZXN0UmV0dXJuVmFsdWUgPSB1bmtub3duO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja0NvbnRleHQgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pOiBBcGlDb250ZXh0ID0+IHtcbiAgY29uc3QgZGVmYXVsdFNlc3Npb24gPSB7XG4gICAgdXNlckFjY2VzczogMSxcbiAgICB1c2VySWQ6ICd1c2VyMScsXG4gICAgdXNlcm5hbWU6ICd0ZXN0dXNlcidcbiAgfTtcbiAgY29uc3Qgb3ZlcnJpZGVTZXNzaW9uOiBQYXJ0aWFsPHR5cGVvZiBkZWZhdWx0U2Vzc2lvbj4gPSBvdmVycmlkZXMuc2Vzc2lvbiB8fCB7fTtcbiAgY29uc3QgY29udGV4dDogVGVzdENvbnRleHQgPSB7XG4gICAgZGF0YWJhc2VOYW1lOiAob3ZlcnJpZGVzLmRhdGFiYXNlTmFtZSBhcyBzdHJpbmcpID8/ICd0ZXN0JyxcbiAgICAuLi5vdmVycmlkZXNcbiAgfTtcbiAgZGVsZXRlIGNvbnRleHQuc2Vzc2lvbjtcbiAgY29udGV4dC5zZXNzaW9uID0ge1xuICAgIHVzZXJBY2Nlc3M6IG92ZXJyaWRlU2Vzc2lvbi51c2VyQWNjZXNzICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZVNlc3Npb24udXNlckFjY2VzcyA6IGRlZmF1bHRTZXNzaW9uLnVzZXJBY2Nlc3MsXG4gICAgdXNlcklkOiBvdmVycmlkZVNlc3Npb24udXNlcklkICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZVNlc3Npb24udXNlcklkIDogZGVmYXVsdFNlc3Npb24udXNlcklkLFxuICAgIHVzZXJuYW1lOiBvdmVycmlkZVNlc3Npb24udXNlcm5hbWUgIT09IHVuZGVmaW5lZCA/IG92ZXJyaWRlU2Vzc2lvbi51c2VybmFtZSA6IGRlZmF1bHRTZXNzaW9uLnVzZXJuYW1lXG4gIH07XG4gIHJldHVybiBjb250ZXh0IGFzIEFwaUNvbnRleHQ7XG59O1xuXG4vLyBDb21tb24gbW9jayByZXNvbHZlIGluZm8gZm9yIEdyYXBoUUwgcmVzb2x2ZXJzXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1Jlc29sdmVJbmZvID0gKGZpZWxkTmFtZTogc3RyaW5nID0gJ3Rlc3QnKTogR3JhcGhRTFJlc29sdmVJbmZvID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCBvcGVyYXRpb24gPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ29wZXJhdGlvbiddO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IHBhcmVudFR5cGUgPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ3BhcmVudFR5cGUnXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCByZXR1cm5UeXBlID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydyZXR1cm5UeXBlJ107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgY29uc3Qgc2NoZW1hID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydzY2hlbWEnXTtcblxuICByZXR1cm4ge1xuICAgIGZpZWxkTmFtZSxcbiAgICBmaWVsZE5vZGVzOiBbXSxcbiAgICBmcmFnbWVudHM6IHt9LFxuICAgIG9wZXJhdGlvbixcbiAgICBwYXJlbnRUeXBlLFxuICAgIHBhdGg6IHtrZXk6IGZpZWxkTmFtZSwgcHJldjogdW5kZWZpbmVkLCB0eXBlbmFtZTogJ1Rlc3QnfSxcbiAgICByZXR1cm5UeXBlLFxuICAgIHJvb3RWYWx1ZToge30sXG4gICAgc2NoZW1hLFxuICAgIHZhcmlhYmxlVmFsdWVzOiB7fVxuICB9O1xufTtcblxuLy8gVXRpbGl0eSB0byBtb2NrIGFjdGlvbnMgbW9kdWxlXG5leHBvcnQgY29uc3QgbW9ja0FjdGlvbnNNb2R1bGUgPSBhc3luYyAobW9kdWxlUGF0aDogc3RyaW5nLCBtb2NrQWN0aW9uczogUmVjb3JkPHN0cmluZywgTW9jaz4pID0+IHtcbiAgY29uc3QgbW9ja3MgPSBPYmplY3QuZW50cmllcyhtb2NrQWN0aW9ucykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGFjY1trZXldID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbih2YWx1ZSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgTW9jaz4pO1xuXG4gIGF3YWl0IGplc3QuaXNvbGF0ZU1vZHVsZXNBc3luYyhhc3luYyAoKSA9PiB7XG4gICAgamVzdC51bnN0YWJsZV9tb2NrTW9kdWxlKG1vZHVsZVBhdGgsICgpID0+ICh7XG4gICAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgICAgLi4ubW9ja3MsXG4gICAgICBkZWZhdWx0OiBtb2Nrc1xuICAgIH0pKTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIG1vY2sgb2JqZWN0IHR5cGVzXG5leHBvcnQgY29uc3QgbW9ja09iamVjdFR5cGUgPSBhc3luYyAobW9kdWxlUGF0aDogc3RyaW5nLCB0eXBlTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG1vY2sgPSB7XG4gICAgX19lc01vZHVsZTogdHJ1ZSxcbiAgICBbdHlwZU5hbWVdOiB7XG4gICAgICBnZXRGaWVsZDogamVzdC5mbigoKSA9PiAoe3Jlc29sdmU6IGplc3QuZm4oKX0pKSxcbiAgICAgIGdldEZpZWxkczogamVzdC5mbigoKSA9PiAoe30pKVxuICAgIH0sXG4gICAgZGVmYXVsdDoge1xuICAgICAgW3R5cGVOYW1lXToge1xuICAgICAgICBnZXRGaWVsZDogamVzdC5mbigoKSA9PiAoe3Jlc29sdmU6IGplc3QuZm4oKX0pKSxcbiAgICAgICAgZ2V0RmllbGRzOiBqZXN0LmZuKCgpID0+ICh7fSkpXG4gICAgICB9XG4gICAgfVxuICB9O1xuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZShtb2R1bGVQYXRoLCAoKSA9PiBtb2NrKTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIHF1ZXJ5IHJlc29sdmVyc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5VGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBtb2NrUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICBlcnJvckNhc2U/OiBib29sZWFuO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IFF1ZXJpZXNgLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcbiAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG5cbiAgICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgICAgYWN0aW9ucyA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtuYW1lOiB0ZXN0TmFtZSwgYWN0aW9uTmFtZSwgYXJncywgZXhwZWN0ZWRDYWxsLCBtb2NrUmV0dXJuVmFsdWUsIGVycm9yQ2FzZSA9IGZhbHNlfSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBjYWxsICR7YWN0aW9uTmFtZX0gYWN0aW9uIHdpdGggY29ycmVjdCBwYXJhbWV0ZXJzYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShtb2NrUmV0dXJuVmFsdWUpKTtcbiAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwobW9ja1JldHVyblZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZihlcnJvckNhc2UpIHtcbiAgICAgICAgaXQoYHNob3VsZCBoYW5kbGUgJHthY3Rpb25OYW1lfSB3aGVuIG5vIGRhdGEgZm91bmRgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xuICAgICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICAgIGV4cGVjdChtb2NrRm4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG1vY2tDb250ZXh0LCBleHBlY3RlZENhbGwobW9ja0NvbnRleHQsIGFyZ3MpKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlTnVsbCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIG11dGF0aW9uIHJlc29sdmVyc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU11dGF0aW9uVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBtb2NrUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICByZXF1aXJlc0F1dGg/OiBib29sZWFuO1xuICAgIGF1dGhVc2VySWQ/OiBzdHJpbmc7XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUoYCR7bmFtZX0gTXV0YXRpb25zYCwgKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgICAgYWN0aW9ucyA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtcbiAgICAgIGFjdGlvbk5hbWUsXG4gICAgICBhcmdzLFxuICAgICAgZXhwZWN0ZWRDYWxsLFxuICAgICAgbW9ja1JldHVyblZhbHVlLFxuICAgICAgcmVxdWlyZXNBdXRoID0gZmFsc2UsXG4gICAgICBhdXRoVXNlcklkXG4gICAgfSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBjYWxsICR7YWN0aW9uTmFtZX0gYWN0aW9uIHdpdGggY29ycmVjdCBwYXJhbWV0ZXJzYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgIGlmKHJlcXVpcmVzQXV0aCAmJiBhdXRoVXNlcklkKSB7XG4gICAgICAgICAgKG1vY2tDb250ZXh0LnNlc3Npb24gYXMge3VzZXJJZDogc3RyaW5nfSkudXNlcklkID0gYXV0aFVzZXJJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKG1vY2tSZXR1cm5WYWx1ZSkpO1xuICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vY2tGbihtb2NrQ29udGV4dCwgYXJncyk7XG4gICAgICAgIGV4cGVjdChtb2NrRm4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG1vY2tDb250ZXh0LCBleHBlY3RlZENhbGwobW9ja0NvbnRleHQsIGFyZ3MpKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChtb2NrUmV0dXJuVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgaW50ZWdyYXRpb24gdGVzdCBzdWl0ZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUludGVncmF0aW9uVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIG9iamVjdFR5cGVQYXRoOiBzdHJpbmcsXG4gIHR5cGVOYW1lOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBzdWNjZXNzUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICBlcnJvclJldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgdGVzdEVycm9yQ2FzZTogYm9vbGVhbjtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShgJHtuYW1lfSBJbnRlZ3JhdGlvbmAsICgpID0+IHtcbiAgICBsZXQgYWN0aW9uczogYW55O1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7XG4gICAgICBuYW1lOiB0ZXN0TmFtZSxcbiAgICAgIGFjdGlvbk5hbWUsXG4gICAgICBhcmdzLFxuICAgICAgZXhwZWN0ZWRDYWxsLFxuICAgICAgc3VjY2Vzc1JldHVyblZhbHVlLFxuICAgICAgZXJyb3JSZXR1cm5WYWx1ZSxcbiAgICAgIHRlc3RFcnJvckNhc2VcbiAgICB9KSA9PiB7XG4gICAgICBkZXNjcmliZSh0ZXN0TmFtZSwgKCkgPT4ge1xuICAgICAgICBpdChgc2hvdWxkIHJldHVybiBkYXRhIHdoZW4gJHthY3Rpb25OYW1lfSBzdWNjZWVkc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUoc3VjY2Vzc1JldHVyblZhbHVlKSk7XG4gICAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vY2tGbihtb2NrQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChzdWNjZXNzUmV0dXJuVmFsdWUgfHwge30pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZih0ZXN0RXJyb3JDYXNlKSB7XG4gICAgICAgICAgaXQoYHNob3VsZCBoYW5kbGUgJHthY3Rpb25OYW1lfSB3aGVuIG5vIGRhdGEgZm91bmRgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShlcnJvclJldHVyblZhbHVlKSk7XG4gICAgICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGVycm9yUmV0dXJuVmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBDb21tb24gbW9jayBkYXRhIGdlbmVyYXRvcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrVXNlciA9IChvdmVycmlkZXM6IE1vY2tPdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgZW1haWw6ICd0ZXN0QGV4YW1wbGUuY29tJyxcbiAgZmlyc3ROYW1lOiAnVGVzdCcsXG4gIGxhc3ROYW1lOiAnVXNlcicsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgdXNlcm5hbWU6ICd0ZXN0dXNlcicsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrUG9zdCA9IChvdmVycmlkZXM6IE1vY2tPdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgY29udGVudDogJ1Rlc3QgcG9zdCBjb250ZW50JyxcbiAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIHBvc3RJZDogJ3Bvc3QxJyxcbiAgdXNlcklkOiAndXNlcjEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja01lc3NhZ2UgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNvbnRlbnQ6ICdUZXN0IG1lc3NhZ2UnLFxuICBjb252ZXJzYXRpb25JZDogJ2NvbnYxJyxcbiAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIG1lc3NhZ2VJZDogJ21zZzEnLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrUmVhY3Rpb24gPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBwb3N0SWQ6ICdwb3N0MScsXG4gIHJlYWN0aW9uSWQ6ICdyZWFjdDEnLFxuICB0eXBlOiAnbGlrZScsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tUYWcgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGRlc2NyaXB0aW9uOiAnVGVzdCB0YWcgZGVzY3JpcHRpb24nLFxuICBuYW1lOiAndGVzdC10YWcnLFxuICB0YWdJZDogJ3RhZzEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG4vLyBVdGlsaXR5IHRvIHNldCB1cCBjb21tb24gbW9ja3NcbmV4cG9ydCBjb25zdCBzZXR1cENvbW1vbk1vY2tzID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBtb2NrID0ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgdXNlRGI6IGplc3QuZm4oKSxcbiAgICBnZXRMaW1pdDogamVzdC5mbigpLFxuICAgIGdldERvY0lkOiBqZXN0LmZuKCksXG4gICAgc29ydElkczogamVzdC5mbigpLFxuICAgIGdldEdxbEZpZWxkczogamVzdC5mbigpLFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHVzZURiOiBqZXN0LmZuKCksXG4gICAgICBnZXRMaW1pdDogamVzdC5mbigpLFxuICAgICAgZ2V0RG9jSWQ6IGplc3QuZm4oKSxcbiAgICAgIHNvcnRJZHM6IGplc3QuZm4oKSxcbiAgICAgIGdldEdxbEZpZWxkczogamVzdC5mbigpXG4gICAgfVxuICB9O1xuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZSgnLi9hcmFuZ29kYlV0aWxzLmpzJywgKCkgPT4gbW9jayk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjbGVhciBhbGwgbW9ja3NcbmV4cG9ydCBjb25zdCBjbGVhckFsbE1vY2tzID0gKCkgPT4ge1xuICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY3JlYXRlIGEgdGVzdCBzdWl0ZSBmb3IgYWN0aW9uIGZ1bmN0aW9uc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIG1vY2tRdWVyeTogTW9jaztcbiAgICBleHBlY3RlZFJlc3VsdDogVGVzdFJldHVyblZhbHVlO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IGFjdGlvbnNgLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcblxuICAgIGJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gICAgICBhY3Rpb25zID0gYXdhaXQgaW1wb3J0KGFjdGlvbnNQYXRoKTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGFjdGlvbk5hbWUsIGFyZ3MsIG1vY2tRdWVyeSwgZXhwZWN0ZWRSZXN1bHR9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGV4ZWN1dGUgJHthY3Rpb25OYW1lfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICBjb25zdCBtb2NrRGIgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICBxdWVyeTogbW9ja1F1ZXJ5XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhY3R1YWwgPSBqZXN0LnJlcXVpcmVBY3R1YWwoJy4vYXJhbmdvZGJVdGlscy5qcycpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBqZXN0LmRvTW9jaygnLi9hcmFuZ29kYlV0aWxzLmpzJywgKCkgPT4gKHtcbiAgICAgICAgICB1c2VEYjogbW9ja0RiLFxuICAgICAgICAgIC4uLmFjdHVhbFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGFjdGlvbnNbYWN0aW9uTmFtZV0gYXMgTW9jaykobW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBZGFwdGVyVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFkYXB0ZXJQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogYW55W11cbikgPT4ge1xuICBkZXNjcmliZShuYW1lLCAoKSA9PiB7XG4gICAgbGV0IGFkYXB0ZXI6IGFueTtcblxuICAgIGJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gICAgICBhZGFwdGVyID0gYXdhaXQgaW1wb3J0KGFkYXB0ZXJQYXRoKTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGlucHV0LCBleHBlY3RlZE91dHB1dH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgJHt0ZXN0TmFtZX1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChhZGFwdGVyIGFzIHtwYXJzZVRhZzogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkucGFyc2VUYWcoaW5wdXQpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkT3V0cHV0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVVdGlsc1Rlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICB1dGlsc1BhdGg6IHN0cmluZyxcbiAgdGVzdENhc2VzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlucHV0OiBUZXN0QXJncztcbiAgICBleHBlY3RlZE91dHB1dDogVGVzdFJldHVyblZhbHVlO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKG5hbWUsICgpID0+IHtcbiAgICBsZXQgdXRpbHM6IGFueTtcblxuICAgIGJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gICAgICB1dGlscyA9IGF3YWl0IGltcG9ydCh1dGlsc1BhdGgpO1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtuYW1lOiB0ZXN0TmFtZSwgaW5wdXQsIGV4cGVjdGVkT3V0cHV0fSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCAke3Rlc3ROYW1lfWAsICgpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYoKHV0aWxzIGFzIHtsb2dJbmZvPzogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkubG9nSW5mbykge1xuICAgICAgICAgIHJlc3VsdCA9ICh1dGlscyBhcyB7bG9nSW5mbzogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkubG9nSW5mbyhpbnB1dCk7XG4gICAgICAgIH0gZWxzZSBpZigodXRpbHMgYXMge3JlbW92ZUVtcHR5S2V5cz86IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLnJlbW92ZUVtcHR5S2V5cykge1xuICAgICAgICAgIHJlc3VsdCA9ICh1dGlscyBhcyB7cmVtb3ZlRW1wdHlLZXlzOiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5yZW1vdmVFbXB0eUtleXMoaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VpdGFibGUgZnVuY3Rpb24gZm91bmQgaW4gJHt1dGlsc1BhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImJlZm9yZUFsbCIsImRlc2NyaWJlIiwiZXhwZWN0IiwiaXQiLCJ2aSIsImplc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJpc29sYXRlTW9kdWxlc0FzeW5jIiwiZm4iLCJyZXNldE1vZHVsZXMiLCJyZXF1aXJlQWN0dWFsIiwiaW1wb3J0QWN0dWFsIiwidW5zdGFibGVfbW9ja01vZHVsZSIsImRvTW9jayIsImNyZWF0ZU1vY2tDb250ZXh0Iiwib3ZlcnJpZGVzIiwiZGVmYXVsdFNlc3Npb24iLCJ1c2VyQWNjZXNzIiwidXNlcklkIiwidXNlcm5hbWUiLCJvdmVycmlkZVNlc3Npb24iLCJzZXNzaW9uIiwiY29udGV4dCIsImRhdGFiYXNlTmFtZSIsInVuZGVmaW5lZCIsImNyZWF0ZU1vY2tSZXNvbHZlSW5mbyIsImZpZWxkTmFtZSIsIm9wZXJhdGlvbiIsInBhcmVudFR5cGUiLCJyZXR1cm5UeXBlIiwic2NoZW1hIiwiZmllbGROb2RlcyIsImZyYWdtZW50cyIsInBhdGgiLCJrZXkiLCJwcmV2IiwidHlwZW5hbWUiLCJyb290VmFsdWUiLCJ2YXJpYWJsZVZhbHVlcyIsIm1vY2tBY3Rpb25zTW9kdWxlIiwibW9kdWxlUGF0aCIsIm1vY2tBY3Rpb25zIiwibW9ja3MiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm1vY2tPYmplY3RUeXBlIiwidHlwZU5hbWUiLCJtb2NrIiwiZ2V0RmllbGQiLCJyZXNvbHZlIiwiZ2V0RmllbGRzIiwiY3JlYXRlUXVlcnlUZXN0U3VpdGUiLCJuYW1lIiwiYWN0aW9uc1BhdGgiLCJ0ZXN0Q2FzZXMiLCJhY3Rpb25zIiwibW9ja0NvbnRleHQiLCJmb3JFYWNoIiwidGVzdE5hbWUiLCJhY3Rpb25OYW1lIiwiYXJncyIsImV4cGVjdGVkQ2FsbCIsIm1vY2tSZXR1cm5WYWx1ZSIsImVycm9yQ2FzZSIsIm1vY2tGbiIsIlByb21pc2UiLCJyZXN1bHQiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInRvRXF1YWwiLCJ0b0JlTnVsbCIsImNyZWF0ZU11dGF0aW9uVGVzdFN1aXRlIiwicmVxdWlyZXNBdXRoIiwiYXV0aFVzZXJJZCIsImNyZWF0ZUludGVncmF0aW9uVGVzdFN1aXRlIiwib2JqZWN0VHlwZVBhdGgiLCJzdWNjZXNzUmV0dXJuVmFsdWUiLCJlcnJvclJldHVyblZhbHVlIiwidGVzdEVycm9yQ2FzZSIsImNyZWF0ZU1vY2tVc2VyIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNyZWF0ZU1vY2tQb3N0IiwiY29udGVudCIsImNyZWF0ZWRBdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInBvc3RJZCIsImNyZWF0ZU1vY2tNZXNzYWdlIiwiY29udmVyc2F0aW9uSWQiLCJtZXNzYWdlSWQiLCJjcmVhdGVNb2NrUmVhY3Rpb24iLCJyZWFjdGlvbklkIiwidHlwZSIsImNyZWF0ZU1vY2tUYWciLCJkZXNjcmlwdGlvbiIsInRhZ0lkIiwic2V0dXBDb21tb25Nb2NrcyIsInVzZURiIiwiZ2V0TGltaXQiLCJnZXREb2NJZCIsInNvcnRJZHMiLCJnZXRHcWxGaWVsZHMiLCJjbGVhckFsbE1vY2tzIiwiY3JlYXRlQWN0aW9uVGVzdFN1aXRlIiwibW9ja1F1ZXJ5IiwiZXhwZWN0ZWRSZXN1bHQiLCJtb2NrRGIiLCJxdWVyeSIsImFjdHVhbCIsImNyZWF0ZUFkYXB0ZXJUZXN0U3VpdGUiLCJhZGFwdGVyUGF0aCIsImFkYXB0ZXIiLCJpbnB1dCIsImV4cGVjdGVkT3V0cHV0IiwicGFyc2VUYWciLCJjcmVhdGVVdGlsc1Rlc3RTdWl0ZSIsInV0aWxzUGF0aCIsInV0aWxzIiwibG9nSW5mbyIsInJlbW92ZUVtcHR5S2V5cyIsIkVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxTQUFTLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsUUFBTyxTQUFTO0FBSTNELE1BQU1DLE9BQU9DLE9BQU9DLE1BQU0sQ0FBQ0gsSUFBVztJQUNwQ0kscUJBQXFCLE9BQU9DO1FBQzFCTCxHQUFHTSxZQUFZO1FBQ2YsTUFBTUQ7SUFDUjtJQUNBRSxlQUFlUCxHQUFHUSxZQUFZO0lBQzlCQyxxQkFBcUJULEdBQUdVLE1BQU07QUFDaEM7QUFVQSxPQUFPLE1BQU1DLG9CQUFvQixDQUFDQyxZQUEyQixDQUFDLENBQUM7SUFDN0QsTUFBTUMsaUJBQWlCO1FBQ3JCQyxZQUFZO1FBQ1pDLFFBQVE7UUFDUkMsVUFBVTtJQUNaO0lBQ0EsTUFBTUMsa0JBQWtETCxVQUFVTSxPQUFPLElBQUksQ0FBQztJQUM5RSxNQUFNQyxVQUF1QjtRQUMzQkMsY0FBYyxBQUFDUixVQUFVUSxZQUFZLElBQWU7UUFDcEQsR0FBR1IsU0FBUztJQUNkO0lBQ0EsT0FBT08sUUFBUUQsT0FBTztJQUN0QkMsUUFBUUQsT0FBTyxHQUFHO1FBQ2hCSixZQUFZRyxnQkFBZ0JILFVBQVUsS0FBS08sWUFBWUosZ0JBQWdCSCxVQUFVLEdBQUdELGVBQWVDLFVBQVU7UUFDN0dDLFFBQVFFLGdCQUFnQkYsTUFBTSxLQUFLTSxZQUFZSixnQkFBZ0JGLE1BQU0sR0FBR0YsZUFBZUUsTUFBTTtRQUM3RkMsVUFBVUMsZ0JBQWdCRCxRQUFRLEtBQUtLLFlBQVlKLGdCQUFn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
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy90ZXN0VXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7YmVmb3JlQWxsLCBkZXNjcmliZSwgZXhwZWN0LCBpdCwgdml9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgdHlwZSB7TW9ja30gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHtHcmFwaFFMUmVzb2x2ZUluZm99IGZyb20gJ2dyYXBocWwnO1xuXG5jb25zdCBqZXN0ID0gT2JqZWN0LmFzc2lnbih2aSBhcyBhbnksIHtcbiAgaXNvbGF0ZU1vZHVsZXNBc3luYzogYXN5bmMgKGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSA9PiB7XG4gICAgdmkucmVzZXRNb2R1bGVzKCk7XG4gICAgYXdhaXQgZm4oKTtcbiAgfSxcbiAgcmVxdWlyZUFjdHVhbDogdmkuaW1wb3J0QWN0dWFsLFxuICB1bnN0YWJsZV9tb2NrTW9kdWxlOiB2aS5kb01vY2tcbn0pIGFzIGFueTtcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuXG4vLyBEZWZpbmUgcHJvcGVyIHR5cGVzIGZvciB0ZXN0IHV0aWxpdGllc1xudHlwZSBNb2NrT3ZlcnJpZGVzID0gUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG50eXBlIFRlc3RDb250ZXh0ID0gUGFydGlhbDxBcGlDb250ZXh0PiAmIHtzZXNzaW9uPzogUGFydGlhbDx7dXNlcklkOiBzdHJpbmc7IHVzZXJuYW1lOiBzdHJpbmc7IHVzZXJBY2Nlc3M6IG51bWJlcn0+fTtcbnR5cGUgVGVzdEFyZ3MgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbnR5cGUgVGVzdFJldHVyblZhbHVlID0gdW5rbm93bjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tDb250ZXh0ID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KTogQXBpQ29udGV4dCA9PiB7XG4gIGNvbnN0IGRlZmF1bHRTZXNzaW9uID0ge1xuICAgIHVzZXJBY2Nlc3M6IDEsXG4gICAgdXNlcklkOiAndXNlcjEnLFxuICAgIHVzZXJuYW1lOiAndGVzdHVzZXInXG4gIH07XG4gIGNvbnN0IG92ZXJyaWRlU2Vzc2lvbjogUGFydGlhbDx0eXBlb2YgZGVmYXVsdFNlc3Npb24+ID0gb3ZlcnJpZGVzLnNlc3Npb24gfHwge307XG4gIGNvbnN0IGNvbnRleHQ6IFRlc3RDb250ZXh0ID0ge1xuICAgIGRhdGFiYXNlTmFtZTogKG92ZXJyaWRlcy5kYXRhYmFzZU5hbWUgYXMgc3RyaW5nKSA/PyAndGVzdCcsXG4gICAgLi4ub3ZlcnJpZGVzXG4gIH07XG4gIGRlbGV0ZSBjb250ZXh0LnNlc3Npb247XG4gIGNvbnRleHQuc2Vzc2lvbiA9IHtcbiAgICB1c2VyQWNjZXNzOiBvdmVycmlkZVNlc3Npb24udXNlckFjY2VzcyAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGVTZXNzaW9uLnVzZXJBY2Nlc3MgOiBkZWZhdWx0U2Vzc2lvbi51c2VyQWNjZXNzLFxuICAgIHVzZXJJZDogb3ZlcnJpZGVTZXNzaW9uLnVzZXJJZCAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGVTZXNzaW9uLnVzZXJJZCA6IGRlZmF1bHRTZXNzaW9uLnVzZXJJZCxcbiAgICB1c2VybmFtZTogb3ZlcnJpZGVTZXNzaW9uLnVzZXJuYW1lICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZVNlc3Npb24udXNlcm5hbWUgOiBkZWZhdWx0U2Vzc2lvbi51c2VybmFtZVxuICB9O1xuICByZXR1cm4gY29udGV4dCBhcyBBcGlDb250ZXh0O1xufTtcblxuLy8gQ29tbW9uIG1vY2sgcmVzb2x2ZSBpbmZvIGZvciBHcmFwaFFMIHJlc29sdmVyc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tSZXNvbHZlSW5mbyA9IChmaWVsZE5hbWU6IHN0cmluZyA9ICd0ZXN0Jyk6IEdyYXBoUUxSZXNvbHZlSW5mbyA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgY29uc3Qgb3BlcmF0aW9uID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydvcGVyYXRpb24nXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCBwYXJlbnRUeXBlID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydwYXJlbnRUeXBlJ107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgY29uc3QgcmV0dXJuVHlwZSA9IHt9IGFzIEdyYXBoUUxSZXNvbHZlSW5mb1sncmV0dXJuVHlwZSddO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IHNjaGVtYSA9IHt9IGFzIEdyYXBoUUxSZXNvbHZlSW5mb1snc2NoZW1hJ107XG5cbiAgcmV0dXJuIHtcbiAgICBmaWVsZE5hbWUsXG4gICAgZmllbGROb2RlczogW10sXG4gICAgZnJhZ21lbnRzOiB7fSxcbiAgICBvcGVyYXRpb24sXG4gICAgcGFyZW50VHlwZSxcbiAgICBwYXRoOiB7a2V5OiBmaWVsZE5hbWUsIHByZXY6IHVuZGVmaW5lZCwgdHlwZW5hbWU6ICdUZXN0J30sXG4gICAgcmV0dXJuVHlwZSxcbiAgICByb290VmFsdWU6IHt9LFxuICAgIHNjaGVtYSxcbiAgICB2YXJpYWJsZVZhbHVlczoge31cbiAgfTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gbW9jayBhY3Rpb25zIG1vZHVsZVxuZXhwb3J0IGNvbnN0IG1vY2tBY3Rpb25zTW9kdWxlID0gYXN5bmMgKG1vZHVsZVBhdGg6IHN0cmluZywgbW9ja0FjdGlvbnM6IFJlY29yZDxzdHJpbmcsIE1vY2s+KSA9PiB7XG4gIGNvbnN0IG1vY2tzID0gT2JqZWN0LmVudHJpZXMobW9ja0FjdGlvbnMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBhY2Nba2V5XSA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24odmFsdWUpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIE1vY2s+KTtcblxuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZShtb2R1bGVQYXRoLCAoKSA9PiAoe1xuICAgICAgX19lc01vZHVsZTogdHJ1ZSxcbiAgICAgIC4uLm1vY2tzLFxuICAgICAgZGVmYXVsdDogbW9ja3NcbiAgICB9KSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBtb2NrIG9iamVjdCB0eXBlc1xuZXhwb3J0IGNvbnN0IG1vY2tPYmplY3RUeXBlID0gYXN5bmMgKG1vZHVsZVBhdGg6IHN0cmluZywgdHlwZU5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBtb2NrID0ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgW3R5cGVOYW1lXToge1xuICAgICAgZ2V0RmllbGQ6IGplc3QuZm4oKCkgPT4gKHtyZXNvbHZlOiBqZXN0LmZuKCl9KSksXG4gICAgICBnZXRGaWVsZHM6IGplc3QuZm4oKCkgPT4gKHt9KSlcbiAgICB9LFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIFt0eXBlTmFtZV06IHtcbiAgICAgICAgZ2V0RmllbGQ6IGplc3QuZm4oKCkgPT4gKHtyZXNvbHZlOiBqZXN0LmZuKCl9KSksXG4gICAgICAgIGdldEZpZWxkczogamVzdC5mbigoKSA9PiAoe30pKVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgYXdhaXQgamVzdC5pc29sYXRlTW9kdWxlc0FzeW5jKGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnVuc3RhYmxlX21vY2tNb2R1bGUobW9kdWxlUGF0aCwgKCkgPT4gbW9jayk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGZvciBxdWVyeSByZXNvbHZlcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVRdWVyeVRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgbW9ja1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgZXJyb3JDYXNlPzogYm9vbGVhbjtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShgJHtuYW1lfSBRdWVyaWVzYCwgKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBhbnk7XG4gICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGFjdGlvbk5hbWUsIGFyZ3MsIGV4cGVjdGVkQ2FsbCwgbW9ja1JldHVyblZhbHVlLCBlcnJvckNhc2UgPSBmYWxzZX0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY2FsbCAke2FjdGlvbk5hbWV9IGFjdGlvbiB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUobW9ja1JldHVyblZhbHVlKSk7XG4gICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tSZXR1cm5WYWx1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYoZXJyb3JDYXNlKSB7XG4gICAgICAgIGl0KGBzaG91bGQgaGFuZGxlICR7YWN0aW9uTmFtZX0gd2hlbiBubyBkYXRhIGZvdW5kYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtcbiAgICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGZvciBtdXRhdGlvbiByZXNvbHZlcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVNdXRhdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgbW9ja1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgcmVxdWlyZXNBdXRoPzogYm9vbGVhbjtcbiAgICBhdXRoVXNlcklkPzogc3RyaW5nO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IE11dGF0aW9uc2AsICgpID0+IHtcbiAgICBsZXQgYWN0aW9uczogYW55O1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7XG4gICAgICBhY3Rpb25OYW1lLFxuICAgICAgYXJncyxcbiAgICAgIGV4cGVjdGVkQ2FsbCxcbiAgICAgIG1vY2tSZXR1cm5WYWx1ZSxcbiAgICAgIHJlcXVpcmVzQXV0aCA9IGZhbHNlLFxuICAgICAgYXV0aFVzZXJJZFxuICAgIH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY2FsbCAke2FjdGlvbk5hbWV9IGFjdGlvbiB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICBpZihyZXF1aXJlc0F1dGggJiYgYXV0aFVzZXJJZCkge1xuICAgICAgICAgIChtb2NrQ29udGV4dC5zZXNzaW9uIGFzIHt1c2VySWQ6IHN0cmluZ30pLnVzZXJJZCA9IGF1dGhVc2VySWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShtb2NrUmV0dXJuVmFsdWUpKTtcbiAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwobW9ja1JldHVyblZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY3JlYXRlIGludGVncmF0aW9uIHRlc3Qgc3VpdGVcbmV4cG9ydCBjb25zdCBjcmVhdGVJbnRlZ3JhdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICBvYmplY3RUeXBlUGF0aDogc3RyaW5nLFxuICB0eXBlTmFtZTogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgc3VjY2Vzc1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgZXJyb3JSZXR1cm5WYWx1ZTogVGVzdFJldHVyblZhbHVlO1xuICAgIHRlc3RFcnJvckNhc2U6IGJvb2xlYW47XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUoYCR7bmFtZX0gSW50ZWdyYXRpb25gLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcblxuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICBhY3Rpb25zID0ge307XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe1xuICAgICAgbmFtZTogdGVzdE5hbWUsXG4gICAgICBhY3Rpb25OYW1lLFxuICAgICAgYXJncyxcbiAgICAgIGV4cGVjdGVkQ2FsbCxcbiAgICAgIHN1Y2Nlc3NSZXR1cm5WYWx1ZSxcbiAgICAgIGVycm9yUmV0dXJuVmFsdWUsXG4gICAgICB0ZXN0RXJyb3JDYXNlXG4gICAgfSkgPT4ge1xuICAgICAgZGVzY3JpYmUodGVzdE5hbWUsICgpID0+IHtcbiAgICAgICAgaXQoYHNob3VsZCByZXR1cm4gZGF0YSB3aGVuICR7YWN0aW9uTmFtZX0gc3VjY2VlZHNgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHN1Y2Nlc3NSZXR1cm5WYWx1ZSkpO1xuICAgICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoc3VjY2Vzc1JldHVyblZhbHVlIHx8IHt9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYodGVzdEVycm9yQ2FzZSkge1xuICAgICAgICAgIGl0KGBzaG91bGQgaGFuZGxlICR7YWN0aW9uTmFtZX0gd2hlbiBubyBkYXRhIGZvdW5kYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZXJyb3JSZXR1cm5WYWx1ZSkpO1xuICAgICAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChlcnJvclJldHVyblZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gQ29tbW9uIG1vY2sgZGF0YSBnZW5lcmF0b3JzXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1VzZXIgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGVtYWlsOiAndGVzdEBleGFtcGxlLmNvbScsXG4gIGZpcnN0TmFtZTogJ1Rlc3QnLFxuICBsYXN0TmFtZTogJ1VzZXInLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIHVzZXJuYW1lOiAndGVzdHVzZXInLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1Bvc3QgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNvbnRlbnQ6ICdUZXN0IHBvc3QgY29udGVudCcsXG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBwb3N0SWQ6ICdwb3N0MScsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tNZXNzYWdlID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBjb250ZW50OiAnVGVzdCBtZXNzYWdlJyxcbiAgY29udmVyc2F0aW9uSWQ6ICdjb252MScsXG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBtZXNzYWdlSWQ6ICdtc2cxJyxcbiAgdXNlcklkOiAndXNlcjEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1JlYWN0aW9uID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgcG9zdElkOiAncG9zdDEnLFxuICByZWFjdGlvbklkOiAncmVhY3QxJyxcbiAgdHlwZTogJ2xpa2UnLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrVGFnID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBkZXNjcmlwdGlvbjogJ1Rlc3QgdGFnIGRlc2NyaXB0aW9uJyxcbiAgbmFtZTogJ3Rlc3QtdGFnJyxcbiAgdGFnSWQ6ICd0YWcxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuLy8gVXRpbGl0eSB0byBzZXQgdXAgY29tbW9uIG1vY2tzXG5leHBvcnQgY29uc3Qgc2V0dXBDb21tb25Nb2NrcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgbW9jayA9IHtcbiAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgIHVzZURiOiBqZXN0LmZuKCksXG4gICAgZ2V0TGltaXQ6IGplc3QuZm4oKSxcbiAgICBnZXREb2NJZDogamVzdC5mbigpLFxuICAgIHNvcnRJZHM6IGplc3QuZm4oKSxcbiAgICBnZXRHcWxGaWVsZHM6IGplc3QuZm4oKSxcbiAgICBkZWZhdWx0OiB7XG4gICAgICB1c2VEYjogamVzdC5mbigpLFxuICAgICAgZ2V0TGltaXQ6IGplc3QuZm4oKSxcbiAgICAgIGdldERvY0lkOiBqZXN0LmZuKCksXG4gICAgICBzb3J0SWRzOiBqZXN0LmZuKCksXG4gICAgICBnZXRHcWxGaWVsZHM6IGplc3QuZm4oKVxuICAgIH1cbiAgfTtcbiAgYXdhaXQgamVzdC5pc29sYXRlTW9kdWxlc0FzeW5jKGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnVuc3RhYmxlX21vY2tNb2R1bGUoJy4vYXJhbmdvZGJVdGlscy5qcycsICgpID0+IG1vY2spO1xuICB9KTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY2xlYXIgYWxsIG1vY2tzXG5leHBvcnQgY29uc3QgY2xlYXJBbGxNb2NrcyA9ICgpID0+IHtcbiAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIGFjdGlvbiBmdW5jdGlvbnNcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3Rpb25UZXN0U3VpdGUgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgYWN0aW9uc1BhdGg6IHN0cmluZyxcbiAgdGVzdENhc2VzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgICBhcmdzOiBUZXN0QXJncztcbiAgICBtb2NrUXVlcnk6IE1vY2s7XG4gICAgZXhwZWN0ZWRSZXN1bHQ6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShgJHtuYW1lfSBhY3Rpb25zYCwgKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgYWN0aW9ucyA9IGF3YWl0IGltcG9ydChhY3Rpb25zUGF0aCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe25hbWU6IHRlc3ROYW1lLCBhY3Rpb25OYW1lLCBhcmdzLCBtb2NrUXVlcnksIGV4cGVjdGVkUmVzdWx0fSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBleGVjdXRlICR7YWN0aW9uTmFtZX1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQoKTtcbiAgICAgICAgY29uc3QgbW9ja0RiID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgICAgcXVlcnk6IG1vY2tRdWVyeVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gamVzdC5yZXF1aXJlQWN0dWFsKCcuL2FyYW5nb2RiVXRpbHMuanMnKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgamVzdC5kb01vY2soJy4vYXJhbmdvZGJVdGlscy5qcycsICgpID0+ICh7XG4gICAgICAgICAgdXNlRGI6IG1vY2tEYixcbiAgICAgICAgICAuLi5hY3R1YWxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IChhY3Rpb25zW2FjdGlvbk5hbWVdIGFzIE1vY2spKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWRhcHRlclRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhZGFwdGVyUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IGFueVtdXG4pID0+IHtcbiAgZGVzY3JpYmUobmFtZSwgKCkgPT4ge1xuICAgIGxldCBhZGFwdGVyOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgYWRhcHRlciA9IGF3YWl0IGltcG9ydChhZGFwdGVyUGF0aCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe25hbWU6IHRlc3ROYW1lLCBpbnB1dCwgZXhwZWN0ZWRPdXRwdXR9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkICR7dGVzdE5hbWV9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYWRhcHRlciBhcyB7cGFyc2VUYWc6IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLnBhcnNlVGFnKGlucHV0KTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVXRpbHNUZXN0U3VpdGUgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgdXRpbHNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dDogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRPdXRwdXQ6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShuYW1lLCAoKSA9PiB7XG4gICAgbGV0IHV0aWxzOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgdXRpbHMgPSBhd2FpdCBpbXBvcnQodXRpbHNQYXRoKTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGlucHV0LCBleHBlY3RlZE91dHB1dH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgJHt0ZXN0TmFtZX1gLCAoKSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmKCh1dGlscyBhcyB7bG9nSW5mbz86IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLmxvZ0luZm8pIHtcbiAgICAgICAgICByZXN1bHQgPSAodXRpbHMgYXMge2xvZ0luZm86IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLmxvZ0luZm8oaW5wdXQpO1xuICAgICAgICB9IGVsc2UgaWYoKHV0aWxzIGFzIHtyZW1vdmVFbXB0eUtleXM/OiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5yZW1vdmVFbXB0eUtleXMpIHtcbiAgICAgICAgICByZXN1bHQgPSAodXRpbHMgYXMge3JlbW92ZUVtcHR5S2V5czogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkucmVtb3ZlRW1wdHlLZXlzKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGZ1bmN0aW9uIGZvdW5kIGluICR7dXRpbHNQYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcbiJdLCJuYW1lcyI6WyJiZWZvcmVBbGwiLCJkZXNjcmliZSIsImV4cGVjdCIsIml0IiwidmkiLCJqZXN0IiwiT2JqZWN0IiwiYXNzaWduIiwiaXNvbGF0ZU1vZHVsZXNBc3luYyIsImZuIiwicmVzZXRNb2R1bGVzIiwicmVxdWlyZUFjdHVhbCIsImltcG9ydEFjdHVhbCIsInVuc3RhYmxlX21vY2tNb2R1bGUiLCJkb01vY2siLCJjcmVhdGVNb2NrQ29udGV4dCIsIm92ZXJyaWRlcyIsImRlZmF1bHRTZXNzaW9uIiwidXNlckFjY2VzcyIsInVzZXJJZCIsInVzZXJuYW1lIiwib3ZlcnJpZGVTZXNzaW9uIiwic2Vzc2lvbiIsImNvbnRleHQiLCJkYXRhYmFzZU5hbWUiLCJ1bmRlZmluZWQiLCJjcmVhdGVNb2NrUmVzb2x2ZUluZm8iLCJmaWVsZE5hbWUiLCJvcGVyYXRpb24iLCJwYXJlbnRUeXBlIiwicmV0dXJuVHlwZSIsInNjaGVtYSIsImZpZWxkTm9kZXMiLCJmcmFnbWVudHMiLCJwYXRoIiwia2V5IiwicHJldiIsInR5cGVuYW1lIiwicm9vdFZhbHVlIiwidmFyaWFibGVWYWx1ZXMiLCJtb2NrQWN0aW9uc01vZHVsZSIsIm1vZHVsZVBhdGgiLCJtb2NrQWN0aW9ucyIsIm1vY2tzIiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInZhbHVlIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJtb2NrT2JqZWN0VHlwZSIsInR5cGVOYW1lIiwibW9jayIsImdldEZpZWxkIiwicmVzb2x2ZSIsImdldEZpZWxkcyIsImNyZWF0ZVF1ZXJ5VGVzdFN1aXRlIiwibmFtZSIsImFjdGlvbnNQYXRoIiwidGVzdENhc2VzIiwiYWN0aW9ucyIsIm1vY2tDb250ZXh0IiwiZm9yRWFjaCIsInRlc3ROYW1lIiwiYWN0aW9uTmFtZSIsImFyZ3MiLCJleHBlY3RlZENhbGwiLCJtb2NrUmV0dXJuVmFsdWUiLCJlcnJvckNhc2UiLCJtb2NrRm4iLCJQcm9taXNlIiwicmVzdWx0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJ0b0VxdWFsIiwidG9CZU51bGwiLCJjcmVhdGVNdXRhdGlvblRlc3RTdWl0ZSIsInJlcXVpcmVzQXV0aCIsImF1dGhVc2VySWQiLCJjcmVhdGVJbnRlZ3JhdGlvblRlc3RTdWl0ZSIsIm9iamVjdFR5cGVQYXRoIiwic3VjY2Vzc1JldHVyblZhbHVlIiwiZXJyb3JSZXR1cm5WYWx1ZSIsInRlc3RFcnJvckNhc2UiLCJjcmVhdGVNb2NrVXNlciIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjcmVhdGVNb2NrUG9zdCIsImNvbnRlbnQiLCJjcmVhdGVkQXQiLCJEYXRlIiwidG9JU09TdHJpbmciLCJwb3N0SWQiLCJjcmVhdGVNb2NrTWVzc2FnZSIsImNvbnZlcnNhdGlvbklkIiwibWVzc2FnZUlkIiwiY3JlYXRlTW9ja1JlYWN0aW9uIiwicmVhY3Rpb25JZCIsInR5cGUiLCJjcmVhdGVNb2NrVGFnIiwiZGVzY3JpcHRpb24iLCJ0YWdJZCIsInNldHVwQ29tbW9uTW9ja3MiLCJ1c2VEYiIsImdldExpbWl0IiwiZ2V0RG9jSWQiLCJzb3J0SWRzIiwiZ2V0R3FsRmllbGRzIiwiY2xlYXJBbGxNb2NrcyIsImNyZWF0ZUFjdGlvblRlc3RTdWl0ZSIsIm1vY2tRdWVyeSIsImV4cGVjdGVkUmVzdWx0IiwibW9ja0RiIiwicXVlcnkiLCJhY3R1YWwiLCJjcmVhdGVBZGFwdGVyVGVzdFN1aXRlIiwiYWRhcHRlclBhdGgiLCJhZGFwdGVyIiwiaW5wdXQiLCJleHBlY3RlZE91dHB1dCIsInBhcnNlVGFnIiwiY3JlYXRlVXRpbHNUZXN0U3VpdGUiLCJ1dGlsc1BhdGgiLCJ1dGlscyIsImxvZ0luZm8iLCJyZW1vdmVFbXB0eUtleXMiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsRUFBRSxFQUFFQyxFQUFFLFFBQU8sU0FBUztBQUkzRCxNQUFNQyxPQUFPQyxPQUFPQyxNQUFNLENBQUNILElBQVc7SUFDcENJLHFCQUFxQixPQUFPQztRQUMxQkwsR0FBR00sWUFBWTtRQUNmLE1BQU1EO0lBQ1I7SUFDQUUsZUFBZVAsR0FBR1EsWUFBWTtJQUM5QkMscUJBQXFCVCxHQUFHVSxNQUFNO0FBQ2hDO0FBVUEsT0FBTyxNQUFNQyxvQkFBb0IsQ0FBQ0MsWUFBMkIsQ0FBQyxDQUFDO0lBQzdELE1BQU1DLGlCQUFpQjtRQUNyQkMsWUFBWTtRQUNaQyxRQUFRO1FBQ1JDLFVBQVU7SUFDWjtJQUNBLE1BQU1DLGtCQUFrREwsVUFBVU0sT0FBTyxJQUFJLENBQUM7SUFDOUUsTUFBTUMsVUFBdUI7UUFDM0JDLGNBQWMsQUFBQ1IsVUFBVVEsWUFBWSxJQUFlO1FBQ3BELEdBQUdSLFNBQVM7SUFDZDtJQUNBLE9BQU9PLFFBQVFELE9BQU87SUFDdEJDLFFBQVFELE9BQU8sR0FBRztRQUNoQkosWUFBWUcsZ0JBQWdCSCxVQUFVLEtBQUtPLFlBQVlKLGdCQUFnQkgsVUFBVSxHQUFHRCxlQUFlQyxVQUFVO1FBQzdHQyxRQUFRRSxnQkFBZ0JGLE1BQU0sS0FBS00sWUFBWUosZ0JBQWdCRixNQUFNLEdBQUdGLGVBQWVFLE1BQU07UUFDN0ZDLFVBQVVDLGdCQUFnQkQsUUFBUSxLQUFLSyxZQUFZSixn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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */
5
5
  import type { ApiContext } from '../types/auth.types.js';
6
6
  import type { Locale } from '../types/content.types.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  *
5
5
  * Example usage of the translation queue system with Google Translate integration
6
6
  *
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  *
5
5
  * Example usage of the translation queue system with Google Translate integration
6
6
  *
@@ -337,4 +337,4 @@ export async function ensureAllTranslationsProcessed() {
337
337
  // // Force flush
338
338
  // await ensureAllTranslationsProcessed();
339
339
 
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUuZXhhbXBsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlIG9mIHRoZSB0cmFuc2xhdGlvbiBxdWV1ZSBzeXN0ZW0gd2l0aCBHb29nbGUgVHJhbnNsYXRlIGludGVncmF0aW9uXG4gKlxuICogVGhpcyBkZW1vbnN0cmF0ZXMgaG93IHRvIHVzZSB0aGUgbmV3IHRyYW5zbGF0aW9uIHF1ZXVlIHRoYXQgYXV0b21hdGljYWxseVxuICogdHJhbnNsYXRlcyBjb250ZW50IHVzaW5nIEdvb2dsZSBUcmFuc2xhdGUgQVBJIHdoZW4gbmVlZGVkLlxuICovXG5cbmltcG9ydCB7Zmx1c2gsIGkxOG4sIHR5cGUgVHJhbnNsYXRpb25PYmplY3R9IGZyb20gJy4vdHJhbnNsYXRpb25RdWV1ZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuXG4vLyBFeGFtcGxlIDE6IEJhc2ljIHRyYW5zbGF0aW9ucyAtIHdpbGwgdXNlIGRhdGFiYXNlIG9yIHRyYW5zbGF0ZSBhcyBuZWVkZWRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXZWxjb21lTWVzc2FnZXMoY29udGV4dDogQXBpQ29udGV4dCwgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6ICd3ZWxjb21lLnRpdGxlJyxcbiAgICAgIGZhbGxiYWNrOiAnV2VsY29tZSB0byBUb3JjaE9uZSEnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd3ZWxjb21lLnN1YnRpdGxlJyxcbiAgICAgIGZhbGxiYWNrOiAnWW91ciBwZXJzb25hbCBBSSBhc3Npc3RhbnQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd3ZWxjb21lLmRlc2NyaXB0aW9uJyxcbiAgICAgIGZhbGxiYWNrOiAnR2V0IHN0YXJ0ZWQgYnkgZXhwbG9yaW5nIG91ciBmZWF0dXJlcydcbiAgICB9XG4gIF07XG5cbiAgLy8gVGhpcyB3aWxsOlxuICAvLyAxLiBDaGVjayBkYXRhYmFzZSBmb3IgZXhpc3RpbmcgdHJhbnNsYXRpb25zXG4gIC8vIDIuIElmIG5vdCBmb3VuZCBhbmQgbG9jYWxlIGlzIGRlZmF1bHQgKGVuKSwgc2F2ZSBmYWxsYmFjayB0byBEQlxuICAvLyAzLiBJZiBub3QgZm91bmQgYW5kIGxvY2FsZSBpcyBkaWZmZXJlbnQsIHRyYW5zbGF0ZSBmcm9tIGRlZmF1bHQgbG9jYWxlXG4gIC8vIDQuIFNhdmUgdHJhbnNsYXRlZCBjb250ZW50IHRvIERCIGZvciBmdXR1cmUgdXNlXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4gKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICByZXR1cm4gcmVzdWx0O1xuICAvLyBSZXR1cm5zOiB7XG4gIC8vICAgJ3dlbGNvbWUudGl0bGUnOiAnV2VsY29tZSB0byBUb3JjaE9uZSEnIChvciB0cmFuc2xhdGVkIHZlcnNpb24pLFxuICAvLyAgICd3ZWxjb21lLnN1YnRpdGxlJzogJ1lvdXIgcGVyc29uYWwgQUkgYXNzaXN0YW50JyAob3IgdHJhbnNsYXRlZCB2ZXJzaW9uKSxcbiAgLy8gICAnd2VsY29tZS5kZXNjcmlwdGlvbic6ICdHZXQgc3RhcnRlZCBieSBleHBsb3Jpbmcgb3VyIGZlYXR1cmVzJyAob3IgdHJhbnNsYXRlZCB2ZXJzaW9uKVxuICAvLyB9XG59XG5cbi8vIEV4YW1wbGUgMjogVHJhbnNsYXRpb25zIHdpdGggaW50ZXJwb2xhdGlvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFBlcnNvbmFsaXplZE1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJuYW1lOiBzdHJpbmcsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAndXNlci53ZWxjb21lJyxcbiAgICAgIGZhbGxiYWNrOiAnV2VsY29tZSBiYWNrLCB7e3VzZXJuYW1lfX0hJyxcbiAgICAgIHBhcmFtczoge3VzZXJuYW1lfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndXNlci5ub3RpZmljYXRpb25zJyxcbiAgICAgIGZhbGxiYWNrOiAnWW91IGhhdmUge3tjb3VudH19IG5ldyBub3RpZmljYXRpb25zJyxcbiAgICAgIHBhcmFtczoge2NvdW50OiA1fVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndXNlci5sYXN0TG9naW4nLFxuICAgICAgZmFsbGJhY2s6ICdMYXN0IGxvZ2luOiB7e2RhdGV9fScsXG4gICAgICBwYXJhbXM6IHtkYXRlOiBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfVxuICAgIH1cbiAgXTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICByZXR1cm4gcmVzdWx0O1xuICAvLyBSZXR1cm5zOiB7XG4gIC8vICAgJ3VzZXIud2VsY29tZSc6ICdXZWxjb21lIGJhY2ssIEFsaWNlIScgKG9yIHRyYW5zbGF0ZWQgd2l0aCBpbnRlcnBvbGF0aW9uKSxcbiAgLy8gICAndXNlci5ub3RpZmljYXRpb25zJzogJ1lvdSBoYXZlIDUgbmV3IG5vdGlmaWNhdGlvbnMnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbiksXG4gIC8vICAgJ3VzZXIubGFzdExvZ2luJzogJ0xhc3QgbG9naW46IDEvMTUvMjAyNScgKG9yIHRyYW5zbGF0ZWQgd2l0aCBpbnRlcnBvbGF0aW9uKVxuICAvLyB9XG59XG5cbi8vIEV4YW1wbGUgMzogTXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE11bHRpTGFuZ3VhZ2VDb250ZW50KGNvbnRleHQ6IEFwaUNvbnRleHQpIHtcbiAgLy8gR2V0IGNvbnRlbnQgaW4gbXVsdGlwbGUgbGFuZ3VhZ2VzXG4gIGNvbnN0IGxhbmd1YWdlczogTG9jYWxlW10gPSBbJ2VuJywgJ2VzJywgJ2ZyJ107XG4gIGNvbnN0IHJlc3VsdHM6IFJlY29yZDxMb2NhbGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge30gYXMgYW55O1xuXG4gIGZvcihjb25zdCBsb2NhbGUgb2YgbGFuZ3VhZ2VzKSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6ICdhcHAubmFtZScsXG4gICAgICAgIGZhbGxiYWNrOiAnVG9yY2hPbmUnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdhcHAudGFnbGluZScsXG4gICAgICAgIGZhbGxiYWNrOiAnWW91ciBBSSBBc3Npc3RhbnQnXG4gICAgICB9XG4gICAgXTtcblxuICAgIHJlc3VsdHNbbG9jYWxlXSA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG4gIC8vIFJldHVybnM6IHtcbiAgLy8gICBlbjogeyAnYXBwLm5hbWUnOiAnVG9yY2hPbmUnLCAnYXBwLnRhZ2xpbmUnOiAnWW91ciBBSSBBc3Npc3RhbnQnIH0sXG4gIC8vICAgZXM6IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1R1IEFzaXN0ZW50ZSBkZSBJQScgfSxcbiAgLy8gICBmcjogeyAnYXBwLm5hbWUnOiAnVG9yY2hPbmUnLCAnYXBwLnRhZ2xpbmUnOiAnVm90cmUgQXNzaXN0YW50IElBJyB9XG4gIC8vIH1cbn1cblxuLy8gRXhhbXBsZSA0OiBFcnJvciBoYW5kbGluZyBhbmQgZmFsbGJhY2tzXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Um9idXN0VHJhbnNsYXRpb25zKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnZXJyb3Iubm90Rm91bmQnLFxuICAgICAgZmFsbGJhY2s6ICdDb250ZW50IG5vdCBmb3VuZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLnNlcnZlckVycm9yJyxcbiAgICAgIGZhbGxiYWNrOiAnU2VydmVyIGVycm9yIG9jY3VycmVkJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnc3VjY2Vzcy5zYXZlZCcsXG4gICAgICBmYWxsYmFjazogJ0NvbnRlbnQgc2F2ZWQgc3VjY2Vzc2Z1bGx5J1xuICAgIH1cbiAgXTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdUcmFuc2xhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgLy8gUmV0dXJuIGZhbGxiYWNrcyBpZiB0cmFuc2xhdGlvbiBmYWlsc1xuICAgIHJldHVybiB0cmFuc2xhdGlvbnMucmVkdWNlKChhY2MsIHQpID0+IHtcbiAgICAgIGFjY1t0LmtleV0gPSB0LmZhbGxiYWNrIHx8ICcnO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgfVxufVxuXG4vLyBFeGFtcGxlIDU6IEJhdGNoIHByb2Nlc3Npbmcgd2l0aCBmbHVzaFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NMYXJnZVRyYW5zbGF0aW9uQmF0Y2goY29udGV4dDogQXBpQ29udGV4dCwgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIC8vIENyZWF0ZSBhIGxhcmdlIGJhdGNoIG9mIHRyYW5zbGF0aW9uc1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXTtcblxuICBmb3IobGV0IGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7XG4gICAgdHJhbnNsYXRpb25zLnB1c2goe1xuICAgICAga2V5OiBgaXRlbS4ke2l9LnRpdGxlYCxcbiAgICAgIGZhbGxiYWNrOiBgSXRlbSAke2l9IFRpdGxlYCxcbiAgICAgIHBhcmFtczoge251bWJlcjogaX1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgdGhlIGJhdGNoXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIC8vIEVuc3VyZSBhbGwgcGVuZGluZyB0cmFuc2xhdGlvbnMgYXJlIHByb2Nlc3NlZFxuICBhd2FpdCBmbHVzaCgpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEV4YW1wbGUgNjogRXJyb3IgaGFuZGxpbmcgd2l0aCBmYWxsYmFja3NcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGVycm9yQ29kZTogc3RyaW5nLCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogYGVycm9yLiR7ZXJyb3JDb2RlfWAsXG4gICAgICBmYWxsYmFjazogYEFuIGVycm9yIG9jY3VycmVkOiAke2Vycm9yQ29kZX1gLFxuICAgICAgcGFyYW1zOiB7ZXJyb3JDb2RlfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZXJyb3IuY29udGFjdFN1cHBvcnQnLFxuICAgICAgZmFsbGJhY2s6ICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGlmIHRoaXMgcHJvYmxlbSBwZXJzaXN0cy4nLFxuICAgICAgcGFyYW1zOiB7fVxuICAgIH1cbiAgXTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICAvLyBJZiBkYXRhYmFzZSBpcyB1bmF2YWlsYWJsZSwgd2lsbCByZXR1cm4gZmFsbGJhY2tzOlxuICAvLyB7XG4gIC8vICAgJ2Vycm9yLklOVkFMSURfRU1BSUwnOiAnQW4gZXJyb3Igb2NjdXJyZWQ6IElOVkFMSURfRU1BSUwnLFxuICAvLyAgICdlcnJvci5jb250YWN0U3VwcG9ydCc6ICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGlmIHRoaXMgcHJvYmxlbSBwZXJzaXN0cy4nXG4gIC8vIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBFeGFtcGxlIDc6IENvbXBsZXggZW1haWwgdGVtcGxhdGUgd2l0aCBtdWx0aXBsZSBpbnRlcnBvbGF0aW9uc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWxUZW1wbGF0ZShcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlckRhdGE6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBpdGVtczogbnVtYmVyO1xuICB9LFxuICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbikge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnZW1haWwub3JkZXJDb25maXJtYXRpb24uc3ViamVjdCcsXG4gICAgICBmYWxsYmFjazogJ09yZGVyIHt7b3JkZXJJZH19IENvbmZpcm1lZCcsXG4gICAgICBwYXJhbXM6IHtvcmRlcklkOiB1c2VyRGF0YS5vcmRlcklkfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1haWwub3JkZXJDb25maXJtYXRpb24uZ3JlZXRpbmcnLFxuICAgICAgZmFsbGJhY2s6ICdIZWxsbyB7e25hbWV9fSwnLFxuICAgICAgcGFyYW1zOiB7bmFtZTogdXNlckRhdGEubmFtZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmJvZHknLFxuICAgICAgZmFsbGJhY2s6ICdZb3VyIG9yZGVyIHt7b3JkZXJJZH19IGhhcyBiZWVuIGNvbmZpcm1lZC4gVG90YWw6ICR7e3RvdGFsfX0gZm9yIHt7aXRlbXN9fSBpdGVtcy4nLFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG9yZGVySWQ6IHVzZXJEYXRhLm9yZGVySWQsXG4gICAgICAgIHRvdGFsOiB1c2VyRGF0YS50b3RhbCxcbiAgICAgICAgaXRlbXM6IHVzZXJEYXRhLml0ZW1zXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5mb290ZXInLFxuICAgICAgZmFsbGJhY2s6ICdUaGFuayB5b3UgZm9yIHlvdXIgcHVyY2hhc2UhJ1xuICAgIH1cbiAgXTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICByZXR1cm4ge1xuICAgIHN1YmplY3Q6IHJlc3VsdFsnZW1haWwub3JkZXJDb25maXJtYXRpb24uc3ViamVjdCddLFxuICAgIGdyZWV0aW5nOiByZXN1bHRbJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmdyZWV0aW5nJ10sXG4gICAgYm9keTogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ib2R5J10sXG4gICAgZm9vdGVyOiByZXN1bHRbJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmZvb3RlciddXG4gIH07XG59XG5cbi8vIEV4YW1wbGUgODogTm90aWZpY2F0aW9uIG1lc3NhZ2VzIGZvciBkaWZmZXJlbnQgc2NlbmFyaW9zXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uTWVzc2FnZXMoY29udGV4dDogQXBpQ29udGV4dCwgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ud2VsY29tZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLnZlcmlmaWNhdGlvbicsXG4gICAgICBmYWxsYmFjazogJ1BsZWFzZSB2ZXJpZnkgeW91ciBhY2NvdW50LidcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGlmaWNhdGlvbi5wYXNzd29yZFJlc2V0JyxcbiAgICAgIGZhbGxiYWNrOiAnWW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ucGVyc29uYVVwZGF0ZScsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGVyc29uYSBoYXMgYmVlbiB1cGRhdGVkLidcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGlmaWNhdGlvbi5uZXdNZXNzYWdlJyxcbiAgICAgIGZhbGxiYWNrOiAnWW91IGhhdmUgYSBuZXcgbWVzc2FnZSBmcm9tIHt7c2VuZGVyfX0uJyxcbiAgICAgIHBhcmFtczoge3NlbmRlcjogJ0pvaG4gRG9lJ31cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRXhhbXBsZSA5OiBQZXJmb3JtYW5jZSBjb21wYXJpc29uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybWFuY2VDb21wYXJpc29uKGNvbnRleHQ6IEFwaUNvbnRleHQpIHtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAnd2VsY29tZScsICd2ZXJpZmljYXRpb24nLCAncGFzc3dvcmRSZXNldCcsICdwZXJzb25hVXBkYXRlJyxcbiAgICAnZW1haWwuc3ViamVjdCcsICdlbWFpbC5ib2R5JywgJ3Ntcy53ZWxjb21lJywgJ3Ntcy52ZXJpZmljYXRpb24nXG4gIF07XG5cbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0ga2V5cy5tYXAoKGtleSkgPT4gKHtcbiAgICBrZXksXG4gICAgZmFsbGJhY2s6IGBGYWxsYmFjayBmb3IgJHtrZXl9YFxuICB9KSk7XG5cbiAgY29uc29sZS50aW1lKCdCYXRjaCB0cmFuc2xhdGlvbicpO1xuICBjb25zdCBiYXRjaFJlc3VsdHMgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgJ2VuJyk7XG4gIGNvbnNvbGUudGltZUVuZCgnQmF0Y2ggdHJhbnNsYXRpb24nKTtcblxuICByZXR1cm4gYmF0Y2hSZXN1bHRzO1xufVxuXG4vLyBFeGFtcGxlIDEwOiBEeW5hbWljIGNvbnRlbnQgYmFzZWQgb24gdXNlciBwcmVmZXJlbmNlc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFVzZXJHcmVldGluZyhcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlckxvY2FsZT86IHN0cmluZyxcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbikge1xuICBjb25zdCBsb2NhbGU6IExvY2FsZSA9ICh1c2VyTG9jYWxlIGFzIExvY2FsZSkgfHwgJ2VuJztcblxuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnZ3JlZXRpbmcubW9ybmluZycsXG4gICAgICBmYWxsYmFjazogJ0dvb2QgbW9ybmluZyEnLFxuICAgICAgcGFyYW1zOiB1c2VybmFtZSA/IHt1c2VybmFtZX0gOiB7fVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ3JlZXRpbmcuYWZ0ZXJub29uJyxcbiAgICAgIGZhbGxiYWNrOiAnR29vZCBhZnRlcm5vb24hJyxcbiAgICAgIHBhcmFtczogdXNlcm5hbWUgPyB7dXNlcm5hbWV9IDoge31cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLmV2ZW5pbmcnLFxuICAgICAgZmFsbGJhY2s6ICdHb29kIGV2ZW5pbmchJyxcbiAgICAgIHBhcmFtczogdXNlcm5hbWUgPyB7dXNlcm5hbWV9IDoge31cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgLy8gUmV0dXJuIGFwcHJvcHJpYXRlIGdyZWV0aW5nIGJhc2VkIG9uIHRpbWUgb2YgZGF5XG4gIGNvbnN0IGhvdXIgPSBuZXcgRGF0ZSgpLmdldEhvdXJzKCk7XG4gIGlmKGhvdXIgPCAxMikge1xuICAgIHJldHVybiByZXN1bHRbJ2dyZWV0aW5nLm1vcm5pbmcnXTtcbiAgfVxuICBpZihob3VyIDwgMTgpIHtcbiAgICByZXR1cm4gcmVzdWx0WydncmVldGluZy5hZnRlcm5vb24nXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0WydncmVldGluZy5ldmVuaW5nJ107XG59XG5cbi8vIEV4YW1wbGUgMTE6IEZvcmNlIGZsdXNoIHBlbmRpbmcgdHJhbnNsYXRpb25zXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWxsVHJhbnNsYXRpb25zUHJvY2Vzc2VkKCkge1xuICAvLyBGb3JjZSBwcm9jZXNzIGFueSBwZW5kaW5nIHRyYW5zbGF0aW9uIGJhdGNoZXNcbiAgYXdhaXQgZmx1c2goKTtcbiAgY29uc29sZS5sb2coJ0FsbCB0cmFuc2xhdGlvbiBiYXRjaGVzIHByb2Nlc3NlZCcpO1xufVxuXG4vLyBVc2FnZSBleGFtcGxlczpcbi8vIGNvbnN0IGNvbnRleHQgPSB7IGRhdGFiYXNlTmFtZTogJ3RvcmNob25lLWRldicsIHNlc3Npb246IHsgdXNlcklkOiAndXNlcjEyMycgfSB9O1xuLy9cbi8vIC8vIEJhc2ljIHVzYWdlXG4vLyBjb25zdCB3ZWxjb21lTWVzc2FnZXMgPSBhd2FpdCBnZXRXZWxjb21lTWVzc2FnZXMoY29udGV4dCwgJ2VuJyk7XG4vL1xuLy8gLy8gV2l0aCBpbnRlcnBvbGF0aW9uXG4vLyBjb25zdCBwZXJzb25hbGl6ZWRNZXNzYWdlcyA9IGF3YWl0IGdldFBlcnNvbmFsaXplZE1lc3NhZ2VzKGNvbnRleHQsICdKb2huJywgJ2VzJyk7XG4vL1xuLy8gLy8gTXVsdGktbGFuZ3VhZ2UgY29udGVudFxuLy8gY29uc3QgbXVsdGlMYW5ndWFnZUNvbnRlbnQgPSBhd2FpdCBnZXRNdWx0aUxhbmd1YWdlQ29udGVudChjb250ZXh0KTtcbi8vXG4vLyAvLyBFcnJvciBoYW5kbGluZ1xuLy8gY29uc3QgZXJyb3JNZXNzYWdlcyA9IGF3YWl0IGdldFJvYnVzdFRyYW5zbGF0aW9ucyhjb250ZXh0LCAnZGUnKTtcbi8vXG4vLyAvLyBDb21wbGV4IHRlbXBsYXRlXG4vLyBjb25zdCBlbWFpbFRlbXBsYXRlID0gYXdhaXQgZ2VuZXJhdGVFbWFpbFRlbXBsYXRlKGNvbnRleHQsIHtcbi8vICAgbmFtZTogJ01hcmlhJyxcbi8vICAgZW1haWw6ICdtYXJpYUBleGFtcGxlLmNvbScsXG4vLyAgIG9yZGVySWQ6ICdPUkQtMTIzJyxcbi8vICAgdG90YWw6IDk5Ljk5LFxuLy8gICBpdGVtczogM1xuLy8gfSwgJ3B0Jyk7XG4vL1xuLy8gLy8gTm90aWZpY2F0aW9uc1xuLy8gY29uc3Qgbm90aWZpY2F0aW9ucyA9IGF3YWl0IGdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzKGNvbnRleHQsICdmcicpO1xuLy9cbi8vIC8vIFBlcmZvcm1hbmNlIHRlc3Rcbi8vIGNvbnN0IHBlcmYgPSBhd2FpdCBwZXJmb3JtYW5jZUNvbXBhcmlzb24oY29udGV4dCk7XG4vL1xuLy8gLy8gRHluYW1pYyBncmVldGluZ1xuLy8gY29uc3QgZ3JlZXRpbmcgPSBhd2FpdCBnZXRVc2VyR3JlZXRpbmcoY29udGV4dCwgJ2VuJywgJ0pvaG4nKTtcbi8vXG4vLyAvLyBGb3JjZSBmbHVzaFxuLy8gYXdhaXQgZW5zdXJlQWxsVHJhbnNsYXRpb25zUHJvY2Vzc2VkKCk7XG4iXSwibmFtZXMiOlsiZmx1c2giLCJpMThuIiwiZ2V0V2VsY29tZU1lc3NhZ2VzIiwiY29udGV4dCIsImxvY2FsZSIsInRyYW5zbGF0aW9ucyIsImtleSIsImZhbGxiYWNrIiwicmVzdWx0IiwiZ2V0UGVyc29uYWxpemVkTWVzc2FnZXMiLCJ1c2VybmFtZSIsInBhcmFtcyIsImNvdW50IiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJnZXRNdWx0aUxhbmd1YWdlQ29udGVudCIsImxhbmd1YWdlcyIsInJlc3VsdHMiLCJnZXRSb2J1c3RUcmFuc2xhdGlvbnMiLCJlcnJvciIsImNvbnNvbGUiLCJyZWR1Y2UiLCJhY2MiLCJ0IiwicHJvY2Vzc0xhcmdlVHJhbnNsYXRpb25CYXRjaCIsImkiLCJwdXNoIiwibnVtYmVyIiwiZ2V0RXJyb3JNZXNzYWdlcyIsImVycm9yQ29kZSIsImdlbmVyYXRlRW1haWxUZW1wbGF0ZSIsInVzZXJEYXRhIiwib3JkZXJJZCIsIm5hbWUiLCJ0b3RhbCIsIml0ZW1zIiwic3ViamVjdCIsImdyZWV0aW5nIiwiYm9keSIsImZvb3RlciIsImdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzIiwic2VuZGVyIiwicGVyZm9ybWFuY2VDb21wYXJpc29uIiwia2V5cyIsIm1hcCIsInRpbWUiLCJiYXRjaFJlc3VsdHMiLCJ0aW1lRW5kIiwiZ2V0VXNlckdyZWV0aW5nIiwidXNlckxvY2FsZSIsImhvdXIiLCJnZXRIb3VycyIsImVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCIsImxvZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0NBUUMsR0FFRCxTQUFRQSxLQUFLLEVBQUVDLElBQUksUUFBK0Isd0JBQXdCO0FBSzFFLDJFQUEyRTtBQUMzRSxP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
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy90cmFuc2xhdGlvblF1ZXVlLmV4YW1wbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKlxuICogRXhhbXBsZSB1c2FnZSBvZiB0aGUgdHJhbnNsYXRpb24gcXVldWUgc3lzdGVtIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSBpbnRlZ3JhdGlvblxuICpcbiAqIFRoaXMgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIG5ldyB0cmFuc2xhdGlvbiBxdWV1ZSB0aGF0IGF1dG9tYXRpY2FsbHlcbiAqIHRyYW5zbGF0ZXMgY29udGVudCB1c2luZyBHb29nbGUgVHJhbnNsYXRlIEFQSSB3aGVuIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQge2ZsdXNoLCBpMThuLCB0eXBlIFRyYW5zbGF0aW9uT2JqZWN0fSBmcm9tICcuL3RyYW5zbGF0aW9uUXVldWUuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7TG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzLmpzJztcblxuLy8gRXhhbXBsZSAxOiBCYXNpYyB0cmFuc2xhdGlvbnMgLSB3aWxsIHVzZSBkYXRhYmFzZSBvciB0cmFuc2xhdGUgYXMgbmVlZGVkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS50aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5zdWJ0aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGVyc29uYWwgQUkgYXNzaXN0YW50J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5kZXNjcmlwdGlvbicsXG4gICAgICBmYWxsYmFjazogJ0dldCBzdGFydGVkIGJ5IGV4cGxvcmluZyBvdXIgZmVhdHVyZXMnXG4gICAgfVxuICBdO1xuXG4gIC8vIFRoaXMgd2lsbDpcbiAgLy8gMS4gQ2hlY2sgZGF0YWJhc2UgZm9yIGV4aXN0aW5nIHRyYW5zbGF0aW9uc1xuICAvLyAyLiBJZiBub3QgZm91bmQgYW5kIGxvY2FsZSBpcyBkZWZhdWx0IChlbiksIHNhdmUgZmFsbGJhY2sgdG8gREJcbiAgLy8gMy4gSWYgbm90IGZvdW5kIGFuZCBsb2NhbGUgaXMgZGlmZmVyZW50LCB0cmFuc2xhdGUgZnJvbSBkZWZhdWx0IGxvY2FsZVxuICAvLyA0LiBTYXZlIHRyYW5zbGF0ZWQgY29udGVudCB0byBEQiBmb3IgZnV0dXJlIHVzZVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuIChjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd3ZWxjb21lLnRpdGxlJzogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJyAob3IgdHJhbnNsYXRlZCB2ZXJzaW9uKSxcbiAgLy8gICAnd2VsY29tZS5zdWJ0aXRsZSc6ICdZb3VyIHBlcnNvbmFsIEFJIGFzc2lzdGFudCcgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbiksXG4gIC8vICAgJ3dlbGNvbWUuZGVzY3JpcHRpb24nOiAnR2V0IHN0YXJ0ZWQgYnkgZXhwbG9yaW5nIG91ciBmZWF0dXJlcycgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDI6IFRyYW5zbGF0aW9ucyB3aXRoIGludGVycG9sYXRpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VybmFtZTogc3RyaW5nLCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ3VzZXIud2VsY29tZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgYmFjaywge3t1c2VybmFtZX19IScsXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubm90aWZpY2F0aW9ucycsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIHt7Y291bnR9fSBuZXcgbm90aWZpY2F0aW9ucycsXG4gICAgICBwYXJhbXM6IHtjb3VudDogNX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubGFzdExvZ2luJyxcbiAgICAgIGZhbGxiYWNrOiAnTGFzdCBsb2dpbjoge3tkYXRlfX0nLFxuICAgICAgcGFyYW1zOiB7ZGF0ZTogbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX1cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd1c2VyLndlbGNvbWUnOiAnV2VsY29tZSBiYWNrLCBBbGljZSEnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbiksXG4gIC8vICAgJ3VzZXIubm90aWZpY2F0aW9ucyc6ICdZb3UgaGF2ZSA1IG5ldyBub3RpZmljYXRpb25zJyAob3IgdHJhbnNsYXRlZCB3aXRoIGludGVycG9sYXRpb24pLFxuICAvLyAgICd1c2VyLmxhc3RMb2dpbic6ICdMYXN0IGxvZ2luOiAxLzE1LzIwMjUnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDM6IE11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRNdWx0aUxhbmd1YWdlQ29udGVudChjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIC8vIEdldCBjb250ZW50IGluIG11bHRpcGxlIGxhbmd1YWdlc1xuICBjb25zdCBsYW5ndWFnZXM6IExvY2FsZVtdID0gWydlbicsICdlcycsICdmciddO1xuICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8TG9jYWxlLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9IGFzIGFueTtcblxuICBmb3IoY29uc3QgbG9jYWxlIG9mIGxhbmd1YWdlcykge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLm5hbWUnLFxuICAgICAgICBmYWxsYmFjazogJ1RvcmNoT25lJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLnRhZ2xpbmUnLFxuICAgICAgICBmYWxsYmFjazogJ1lvdXIgQUkgQXNzaXN0YW50J1xuICAgICAgfVxuICAgIF07XG5cbiAgICByZXN1bHRzW2xvY2FsZV0gPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xuICAvLyBSZXR1cm5zOiB7XG4gIC8vICAgZW46IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1lvdXIgQUkgQXNzaXN0YW50JyB9LFxuICAvLyAgIGVzOiB7ICdhcHAubmFtZSc6ICdUb3JjaE9uZScsICdhcHAudGFnbGluZSc6ICdUdSBBc2lzdGVudGUgZGUgSUEnIH0sXG4gIC8vICAgZnI6IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1ZvdHJlIEFzc2lzdGFudCBJQScgfVxuICAvLyB9XG59XG5cbi8vIEV4YW1wbGUgNDogRXJyb3IgaGFuZGxpbmcgYW5kIGZhbGxiYWNrc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvYnVzdFRyYW5zbGF0aW9ucyhjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLm5vdEZvdW5kJyxcbiAgICAgIGZhbGxiYWNrOiAnQ29udGVudCBub3QgZm91bmQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlcnJvci5zZXJ2ZXJFcnJvcicsXG4gICAgICBmYWxsYmFjazogJ1NlcnZlciBlcnJvciBvY2N1cnJlZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N1Y2Nlc3Muc2F2ZWQnLFxuICAgICAgZmFsbGJhY2s6ICdDb250ZW50IHNhdmVkIHN1Y2Nlc3NmdWxseSdcbiAgICB9XG4gIF07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVHJhbnNsYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgIC8vIFJldHVybiBmYWxsYmFja3MgaWYgdHJhbnNsYXRpb24gZmFpbHNcbiAgICByZXR1cm4gdHJhbnNsYXRpb25zLnJlZHVjZSgoYWNjLCB0KSA9PiB7XG4gICAgICBhY2NbdC5rZXldID0gdC5mYWxsYmFjayB8fCAnJztcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gIH1cbn1cblxuLy8gRXhhbXBsZSA1OiBCYXRjaCBwcm9jZXNzaW5nIHdpdGggZmx1c2hcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTGFyZ2VUcmFuc2xhdGlvbkJhdGNoKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICAvLyBDcmVhdGUgYSBsYXJnZSBiYXRjaCBvZiB0cmFuc2xhdGlvbnNcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW107XG5cbiAgZm9yKGxldCBpID0gMTsgaSA8PSAxMDA7IGkrKykge1xuICAgIHRyYW5zbGF0aW9ucy5wdXNoKHtcbiAgICAgIGtleTogYGl0ZW0uJHtpfS50aXRsZWAsXG4gICAgICBmYWxsYmFjazogYEl0ZW0gJHtpfSBUaXRsZWAsXG4gICAgICBwYXJhbXM6IHtudW1iZXI6IGl9XG4gICAgfSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIHRoZSBiYXRjaFxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICAvLyBFbnN1cmUgYWxsIHBlbmRpbmcgdHJhbnNsYXRpb25zIGFyZSBwcm9jZXNzZWRcbiAgYXdhaXQgZmx1c2goKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBFeGFtcGxlIDY6IEVycm9yIGhhbmRsaW5nIHdpdGggZmFsbGJhY2tzXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCBlcnJvckNvZGU6IHN0cmluZywgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IGBlcnJvci4ke2Vycm9yQ29kZX1gLFxuICAgICAgZmFsbGJhY2s6IGBBbiBlcnJvciBvY2N1cnJlZDogJHtlcnJvckNvZGV9YCxcbiAgICAgIHBhcmFtczoge2Vycm9yQ29kZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLmNvbnRhY3RTdXBwb3J0JyxcbiAgICAgIGZhbGxiYWNrOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJyxcbiAgICAgIHBhcmFtczoge31cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgLy8gSWYgZGF0YWJhc2UgaXMgdW5hdmFpbGFibGUsIHdpbGwgcmV0dXJuIGZhbGxiYWNrczpcbiAgLy8ge1xuICAvLyAgICdlcnJvci5JTlZBTElEX0VNQUlMJzogJ0FuIGVycm9yIG9jY3VycmVkOiBJTlZBTElEX0VNQUlMJyxcbiAgLy8gICAnZXJyb3IuY29udGFjdFN1cHBvcnQnOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJ1xuICAvLyB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRXhhbXBsZSA3OiBDb21wbGV4IGVtYWlsIHRlbXBsYXRlIHdpdGggbXVsdGlwbGUgaW50ZXJwb2xhdGlvbnNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsVGVtcGxhdGUoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJEYXRhOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgaXRlbXM6IG51bWJlcjtcbiAgfSxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnLFxuICAgICAgZmFsbGJhY2s6ICdPcmRlciB7e29yZGVySWR9fSBDb25maXJtZWQnLFxuICAgICAgcGFyYW1zOiB7b3JkZXJJZDogdXNlckRhdGEub3JkZXJJZH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmdyZWV0aW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnSGVsbG8ge3tuYW1lfX0sJyxcbiAgICAgIHBhcmFtczoge25hbWU6IHVzZXJEYXRhLm5hbWV9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ib2R5JyxcbiAgICAgIGZhbGxiYWNrOiAnWW91ciBvcmRlciB7e29yZGVySWR9fSBoYXMgYmVlbiBjb25maXJtZWQuIFRvdGFsOiAke3t0b3RhbH19IGZvciB7e2l0ZW1zfX0gaXRlbXMuJyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBvcmRlcklkOiB1c2VyRGF0YS5vcmRlcklkLFxuICAgICAgICB0b3RhbDogdXNlckRhdGEudG90YWwsXG4gICAgICAgIGl0ZW1zOiB1c2VyRGF0YS5pdGVtc1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1haWwub3JkZXJDb25maXJtYXRpb24uZm9vdGVyJyxcbiAgICAgIGZhbGxiYWNrOiAnVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlISdcbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiByZXN1bHRbJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnXSxcbiAgICBncmVldGluZzogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ncmVldGluZyddLFxuICAgIGJvZHk6IHJlc3VsdFsnZW1haWwub3JkZXJDb25maXJtYXRpb24uYm9keSddLFxuICAgIGZvb3RlcjogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5mb290ZXInXVxuICB9O1xufVxuXG4vLyBFeGFtcGxlIDg6IE5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgZGlmZmVyZW50IHNjZW5hcmlvc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLndlbGNvbWUnLFxuICAgICAgZmFsbGJhY2s6ICdXZWxjb21lIHRvIFRvcmNoT25lISdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGlmaWNhdGlvbi52ZXJpZmljYXRpb24nLFxuICAgICAgZmFsbGJhY2s6ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ucGFzc3dvcmRSZXNldCcsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQuJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLnBlcnNvbmFVcGRhdGUnLFxuICAgICAgZmFsbGJhY2s6ICdZb3VyIHBlcnNvbmEgaGFzIGJlZW4gdXBkYXRlZC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ubmV3TWVzc2FnZScsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIGEgbmV3IG1lc3NhZ2UgZnJvbSB7e3NlbmRlcn19LicsXG4gICAgICBwYXJhbXM6IHtzZW5kZXI6ICdKb2huIERvZSd9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEV4YW1wbGUgOTogUGVyZm9ybWFuY2UgY29tcGFyaXNvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1hbmNlQ29tcGFyaXNvbihjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ3dlbGNvbWUnLCAndmVyaWZpY2F0aW9uJywgJ3Bhc3N3b3JkUmVzZXQnLCAncGVyc29uYVVwZGF0ZScsXG4gICAgJ2VtYWlsLnN1YmplY3QnLCAnZW1haWwuYm9keScsICdzbXMud2VsY29tZScsICdzbXMudmVyaWZpY2F0aW9uJ1xuICBdO1xuXG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IGtleXMubWFwKChrZXkpID0+ICh7XG4gICAga2V5LFxuICAgIGZhbGxiYWNrOiBgRmFsbGJhY2sgZm9yICR7a2V5fWBcbiAgfSkpO1xuXG4gIGNvbnNvbGUudGltZSgnQmF0Y2ggdHJhbnNsYXRpb24nKTtcbiAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsICdlbicpO1xuICBjb25zb2xlLnRpbWVFbmQoJ0JhdGNoIHRyYW5zbGF0aW9uJyk7XG5cbiAgcmV0dXJuIGJhdGNoUmVzdWx0cztcbn1cblxuLy8gRXhhbXBsZSAxMDogRHluYW1pYyBjb250ZW50IGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRVc2VyR3JlZXRpbmcoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJMb2NhbGU/OiBzdHJpbmcsXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4pIHtcbiAgY29uc3QgbG9jYWxlOiBMb2NhbGUgPSAodXNlckxvY2FsZSBhcyBMb2NhbGUpIHx8ICdlbic7XG5cbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLm1vcm5pbmcnLFxuICAgICAgZmFsbGJhY2s6ICdHb29kIG1vcm5pbmchJyxcbiAgICAgIHBhcmFtczogdXNlcm5hbWUgPyB7dXNlcm5hbWV9IDoge31cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLmFmdGVybm9vbicsXG4gICAgICBmYWxsYmFjazogJ0dvb2QgYWZ0ZXJub29uIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdncmVldGluZy5ldmVuaW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnR29vZCBldmVuaW5nIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIC8vIFJldHVybiBhcHByb3ByaWF0ZSBncmVldGluZyBiYXNlZCBvbiB0aW1lIG9mIGRheVxuICBjb25zdCBob3VyID0gbmV3IERhdGUoKS5nZXRIb3VycygpO1xuICBpZihob3VyIDwgMTIpIHtcbiAgICByZXR1cm4gcmVzdWx0WydncmVldGluZy5tb3JuaW5nJ107XG4gIH1cbiAgaWYoaG91ciA8IDE4KSB7XG4gICAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuYWZ0ZXJub29uJ107XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuZXZlbmluZyddO1xufVxuXG4vLyBFeGFtcGxlIDExOiBGb3JjZSBmbHVzaCBwZW5kaW5nIHRyYW5zbGF0aW9uc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpIHtcbiAgLy8gRm9yY2UgcHJvY2VzcyBhbnkgcGVuZGluZyB0cmFuc2xhdGlvbiBiYXRjaGVzXG4gIGF3YWl0IGZsdXNoKCk7XG4gIGNvbnNvbGUubG9nKCdBbGwgdHJhbnNsYXRpb24gYmF0Y2hlcyBwcm9jZXNzZWQnKTtcbn1cblxuLy8gVXNhZ2UgZXhhbXBsZXM6XG4vLyBjb25zdCBjb250ZXh0ID0geyBkYXRhYmFzZU5hbWU6ICd0b3JjaG9uZS1kZXYnLCBzZXNzaW9uOiB7IHVzZXJJZDogJ3VzZXIxMjMnIH0gfTtcbi8vXG4vLyAvLyBCYXNpYyB1c2FnZVxuLy8gY29uc3Qgd2VsY29tZU1lc3NhZ2VzID0gYXdhaXQgZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQsICdlbicpO1xuLy9cbi8vIC8vIFdpdGggaW50ZXJwb2xhdGlvblxuLy8gY29uc3QgcGVyc29uYWxpemVkTWVzc2FnZXMgPSBhd2FpdCBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0LCAnSm9obicsICdlcycpO1xuLy9cbi8vIC8vIE11bHRpLWxhbmd1YWdlIGNvbnRlbnRcbi8vIGNvbnN0IG11bHRpTGFuZ3VhZ2VDb250ZW50ID0gYXdhaXQgZ2V0TXVsdGlMYW5ndWFnZUNvbnRlbnQoY29udGV4dCk7XG4vL1xuLy8gLy8gRXJyb3IgaGFuZGxpbmdcbi8vIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBhd2FpdCBnZXRSb2J1c3RUcmFuc2xhdGlvbnMoY29udGV4dCwgJ2RlJyk7XG4vL1xuLy8gLy8gQ29tcGxleCB0ZW1wbGF0ZVxuLy8gY29uc3QgZW1haWxUZW1wbGF0ZSA9IGF3YWl0IGdlbmVyYXRlRW1haWxUZW1wbGF0ZShjb250ZXh0LCB7XG4vLyAgIG5hbWU6ICdNYXJpYScsXG4vLyAgIGVtYWlsOiAnbWFyaWFAZXhhbXBsZS5jb20nLFxuLy8gICBvcmRlcklkOiAnT1JELTEyMycsXG4vLyAgIHRvdGFsOiA5OS45OSxcbi8vICAgaXRlbXM6IDNcbi8vIH0sICdwdCcpO1xuLy9cbi8vIC8vIE5vdGlmaWNhdGlvbnNcbi8vIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBhd2FpdCBnZXROb3RpZmljYXRpb25NZXNzYWdlcyhjb250ZXh0LCAnZnInKTtcbi8vXG4vLyAvLyBQZXJmb3JtYW5jZSB0ZXN0XG4vLyBjb25zdCBwZXJmID0gYXdhaXQgcGVyZm9ybWFuY2VDb21wYXJpc29uKGNvbnRleHQpO1xuLy9cbi8vIC8vIER5bmFtaWMgZ3JlZXRpbmdcbi8vIGNvbnN0IGdyZWV0aW5nID0gYXdhaXQgZ2V0VXNlckdyZWV0aW5nKGNvbnRleHQsICdlbicsICdKb2huJyk7XG4vL1xuLy8gLy8gRm9yY2UgZmx1c2hcbi8vIGF3YWl0IGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpO1xuIl0sIm5hbWVzIjpbImZsdXNoIiwiaTE4biIsImdldFdlbGNvbWVNZXNzYWdlcyIsImNvbnRleHQiLCJsb2NhbGUiLCJ0cmFuc2xhdGlvbnMiLCJrZXkiLCJmYWxsYmFjayIsInJlc3VsdCIsImdldFBlcnNvbmFsaXplZE1lc3NhZ2VzIiwidXNlcm5hbWUiLCJwYXJhbXMiLCJjb3VudCIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiZ2V0TXVsdGlMYW5ndWFnZUNvbnRlbnQiLCJsYW5ndWFnZXMiLCJyZXN1bHRzIiwiZ2V0Um9idXN0VHJhbnNsYXRpb25zIiwiZXJyb3IiLCJjb25zb2xlIiwicmVkdWNlIiwiYWNjIiwidCIsInByb2Nlc3NMYXJnZVRyYW5zbGF0aW9uQmF0Y2giLCJpIiwicHVzaCIsIm51bWJlciIsImdldEVycm9yTWVzc2FnZXMiLCJlcnJvckNvZGUiLCJnZW5lcmF0ZUVtYWlsVGVtcGxhdGUiLCJ1c2VyRGF0YSIsIm9yZGVySWQiLCJuYW1lIiwidG90YWwiLCJpdGVtcyIsInN1YmplY3QiLCJncmVldGluZyIsImJvZHkiLCJmb290ZXIiLCJnZXROb3RpZmljYXRpb25NZXNzYWdlcyIsInNlbmRlciIsInBlcmZvcm1hbmNlQ29tcGFyaXNvbiIsImtleXMiLCJtYXAiLCJ0aW1lIiwiYmF0Y2hSZXN1bHRzIiwidGltZUVuZCIsImdldFVzZXJHcmVldGluZyIsInVzZXJMb2NhbGUiLCJob3VyIiwiZ2V0SG91cnMiLCJlbnN1cmVBbGxUcmFuc2xhdGlvbnNQcm9jZXNzZWQiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztDQVFDLEdBRUQsU0FBUUEsS0FBSyxFQUFFQyxJQUFJLFFBQStCLHdCQUF3QjtBQUsxRSwyRUFBMkU7QUFD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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { getContentWithFallback } from '../actions/content.js';
5
5
  class TranslationQueue {
6
6
  batches = new Map();
@@ -110,4 +110,4 @@ export const flush = ()=>translationQueue.flush();
110
110
  export const clear = ()=>translationQueue.clear();
111
111
  export { translationQueue };
112
112
 
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IHtnZXRDb250ZW50V2l0aEZhbGxiYWNrfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRlbnQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7TG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzLmpzJztcblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uUmVxdWVzdCB7XG4gIGtleTogc3RyaW5nO1xuICBmYWxsYmFjazogc3RyaW5nO1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBsb2NhbGU6IExvY2FsZTtcbiAgcmVzb2x2ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlamVjdDogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uQmF0Y2gge1xuICBjb250ZXh0OiBBcGlDb250ZXh0O1xuICByZXF1ZXN0czogVHJhbnNsYXRpb25SZXF1ZXN0W107XG4gIHRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0O1xufVxuXG5pbnRlcmZhY2UgVHJhbnNsYXRpb25PYmplY3Qge1xuICBrZXk6IHN0cmluZztcbiAgZmFsbGJhY2s/OiBzdHJpbmc7XG4gIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmNsYXNzIFRyYW5zbGF0aW9uUXVldWUge1xuICBwcml2YXRlIGJhdGNoZXM6IE1hcDxzdHJpbmcsIFRyYW5zbGF0aW9uQmF0Y2g+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGJhdGNoVGltZW91dCA9IDUwO1xuICBwcml2YXRlIG1heEJhdGNoU2l6ZSA9IDIwO1xuXG4gIGFzeW5jIHRyYW5zbGF0ZShcbiAgICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICAgIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSxcbiAgICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgaWYodHJhbnNsYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzID0gdHJhbnNsYXRpb25zLm1hcCgoe2tleSwgZmFsbGJhY2sgPSAnJywgcGFyYW1zID0ge319KSA9PlxuICAgICAgdGhpcy5nZXRUcmFuc2xhdGlvbihjb250ZXh0LCBrZXksIGZhbGxiYWNrLCBwYXJhbXMsIGxvY2FsZSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgIGNvbnN0IHJlc3VsdE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIHRyYW5zbGF0aW9ucy5mb3JFYWNoKCh7a2V5fSwgaW5kZXgpID0+IHtcbiAgICAgIHJlc3VsdE1hcFtrZXldID0gcmVzdWx0c1tpbmRleF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0TWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcmFuc2xhdGlvbihcbiAgICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZhbGxiYWNrOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGJhdGNoS2V5ID0gdGhpcy5nZXRCYXRjaEtleShjb250ZXh0LCBsb2NhbGUpO1xuICAgICAgY29uc3QgcmVxdWVzdDogVHJhbnNsYXRpb25SZXF1ZXN0ID0ge2tleSwgZmFsbGJhY2ssIHBhcmFtcywgbG9jYWxlLCByZXNvbHZlLCByZWplY3R9O1xuXG4gICAgICBpZighdGhpcy5iYXRjaGVzLmhhcyhiYXRjaEtleSkpIHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0JhdGNoKGJhdGNoS2V5KTtcbiAgICAgICAgfSwgdGhpcy5iYXRjaFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuYmF0Y2hlcy5zZXQoYmF0Y2hLZXksIHtcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHJlcXVlc3RzOiBbcmVxdWVzdF0sXG4gICAgICAgICAgdGltZW91dFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGJhdGNoID0gdGhpcy5iYXRjaGVzLmdldChiYXRjaEtleSkhO1xuICAgICAgICBiYXRjaC5yZXF1ZXN0cy5wdXNoKHJlcXVlc3QpO1xuXG4gICAgICAgIGlmKGJhdGNoLnJlcXVlc3RzLmxlbmd0aCA+PSB0aGlzLm1heEJhdGNoU2l6ZSkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChiYXRjaC50aW1lb3V0KTtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NCYXRjaChiYXRjaEtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJhdGNoS2V5cyA9IEFycmF5LmZyb20odGhpcy5iYXRjaGVzLmtleXMoKSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYmF0Y2hLZXlzLm1hcCgoa2V5KSA9PiB0aGlzLnByb2Nlc3NCYXRjaChrZXkpKSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMuZm9yRWFjaCgoYmF0Y2gpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChiYXRjaC50aW1lb3V0KTtcbiAgICAgIGJhdGNoLnJlcXVlc3RzLmZvckVhY2goKHJlcXVlc3QpID0+IHtcbiAgICAgICAgcmVxdWVzdC5yZWplY3QobmV3IEVycm9yKCdUcmFuc2xhdGlvbiBxdWV1ZSBjbGVhcmVkJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5iYXRjaGVzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJhdGNoS2V5KGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Y29udGV4dC5kYXRhYmFzZU5hbWV9OiR7bG9jYWxlfWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NCYXRjaChiYXRjaEtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmF0Y2ggPSB0aGlzLmJhdGNoZXMuZ2V0KGJhdGNoS2V5KTtcbiAgICBpZighYmF0Y2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJhdGNoZXMuZGVsZXRlKGJhdGNoS2V5KTtcbiAgICBjbGVhclRpbWVvdXQoYmF0Y2gudGltZW91dCk7XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IGJhdGNoLnJlcXVlc3RzLm1hcChhc3luYyAocmVxdWVzdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGdldENvbnRlbnRXaXRoRmFsbGJhY2soXG4gICAgICAgICAgYmF0Y2guY29udGV4dCxcbiAgICAgICAgICByZXF1ZXN0LmtleSxcbiAgICAgICAgICByZXF1ZXN0LmZhbGxiYWNrLFxuICAgICAgICAgIHJlcXVlc3QubG9jYWxlXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQ29udGVudCA9IHRoaXMuaW50ZXJwb2xhdGUoY29udGVudCwgcmVxdWVzdC5wYXJhbXMpO1xuICAgICAgICByZXR1cm4ge3JlcXVlc3QsIHJlc3VsdDogaW50ZXJwb2xhdGVkQ29udGVudH07XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZEZhbGxiYWNrID0gdGhpcy5pbnRlcnBvbGF0ZShyZXF1ZXN0LmZhbGxiYWNrLCByZXF1ZXN0LnBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7cmVxdWVzdCwgcmVzdWx0OiBpbnRlcnBvbGF0ZWRGYWxsYmFja307XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHByb21pc2VzKTtcblxuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICBpZihyZXN1bHQuc3RhdHVzID09PSAnZnVsZmlsbGVkJykge1xuICAgICAgICByZXN1bHQudmFsdWUucmVxdWVzdC5yZXNvbHZlKHJlc3VsdC52YWx1ZS5yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qge3JlcXVlc3R9ID0gcmVzdWx0LnJlYXNvbjtcbiAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkRmFsbGJhY2sgPSB0aGlzLmludGVycG9sYXRlKHJlcXVlc3QuZmFsbGJhY2ssIHJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgcmVxdWVzdC5yZXNvbHZlKGludGVycG9sYXRlZEZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJwb2xhdGUoY29udGVudDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXFx7XFx7KFxcdyspXFx9XFx9L2csIChtYXRjaCwga2V5KSA9PiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCA/IFN0cmluZyhwYXJhbXNba2V5XSkgOiBtYXRjaCkpO1xuICB9XG59XG5cbmNvbnN0IHRyYW5zbGF0aW9uUXVldWUgPSBuZXcgVHJhbnNsYXRpb25RdWV1ZSgpO1xuXG5leHBvcnQgY29uc3QgaTE4biA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdLFxuICBsb2NhbGU/OiBMb2NhbGVcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4gdHJhbnNsYXRpb25RdWV1ZS50cmFuc2xhdGUoY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG5leHBvcnQgY29uc3QgZmx1c2ggPSAoKTogUHJvbWlzZTx2b2lkPiA9PiB0cmFuc2xhdGlvblF1ZXVlLmZsdXNoKCk7XG5leHBvcnQgY29uc3QgY2xlYXIgPSAoKTogdm9pZCA9PiB0cmFuc2xhdGlvblF1ZXVlLmNsZWFyKCk7XG5cbmV4cG9ydCB0eXBlIHtUcmFuc2xhdGlvbk9iamVjdH07XG5cbiAgZXhwb3J0IHt0cmFuc2xhdGlvblF1ZXVlfTtcbiJdLCJuYW1lcyI6WyJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwiVHJhbnNsYXRpb25RdWV1ZSIsImJhdGNoZXMiLCJNYXAiLCJiYXRjaFRpbWVvdXQiLCJtYXhCYXRjaFNpemUiLCJ0cmFuc2xhdGUiLCJjb250ZXh0IiwidHJhbnNsYXRpb25zIiwibG9jYWxlIiwibGVuZ3RoIiwicHJvbWlzZXMiLCJtYXAiLCJrZXkiLCJmYWxsYmFjayIsInBhcmFtcyIsImdldFRyYW5zbGF0aW9uIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJyZXN1bHRNYXAiLCJmb3JFYWNoIiwiaW5kZXgiLCJyZXNvbHZlIiwicmVqZWN0IiwiYmF0Y2hLZXkiLCJnZXRCYXRjaEtleSIsInJlcXVlc3QiLCJoYXMiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsInByb2Nlc3NCYXRjaCIsInNldCIsInJlcXVlc3RzIiwiYmF0Y2giLCJnZXQiLCJwdXNoIiwiY2xlYXJUaW1lb3V0IiwiZmx1c2giLCJiYXRjaEtleXMiLCJBcnJheSIsImZyb20iLCJrZXlzIiwiY2xlYXIiLCJFcnJvciIsImRhdGFiYXNlTmFtZSIsImRlbGV0ZSIsImNvbnRlbnQiLCJpbnRlcnBvbGF0ZWRDb250ZW50IiwiaW50ZXJwb2xhdGUiLCJyZXN1bHQiLCJlcnJvciIsImludGVycG9sYXRlZEZhbGxiYWNrIiwiYWxsU2V0dGxlZCIsInN0YXR1cyIsInZhbHVlIiwicmVhc29uIiwicmVwbGFjZSIsIm1hdGNoIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwidHJhbnNsYXRpb25RdWV1ZSIsImkxOG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELFNBQVFBLHNCQUFzQixRQUFPLHdCQUF3QjtBQTBCN0QsTUFBTUM7SUFDSUMsVUFBeUMsSUFBSUMsTUFBTTtJQUNuREMsZUFBZSxHQUFHO0lBQ2xCQyxlQUFlLEdBQUc7SUFFMUIsTUFBTUMsVUFDSkMsT0FBbUIsRUFDbkJDLFlBQWlDLEVBQ2pDQyxTQUFpQixJQUFJLEVBQ1k7UUFDakMsSUFBR0QsYUFBYUUsTUFBTSxLQUFLLEdBQUc7WUFDNUIsT0FBTyxDQUFDO1FBQ1Y7UUFFQSxNQUFNQyxXQUFXSCxhQUFhSSxHQUFHLENBQUMsQ0FBQyxFQUFDQyxHQUFHLEVBQUVDLFdBQVcsRUFBRSxFQUFFQyxTQUFTLENBQUMsQ0FBQyxFQUFDLEdBQ2xFLElBQUksQ0FBQ0MsY0FBYyxDQUFDVCxTQUFTTSxLQUFLQyxVQUFVQyxRQUFRTjtRQUd0RCxNQUFNUSxVQUFVLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQ1I7UUFFbEMsTUFBTVMsWUFBb0MsQ0FBQztRQUMzQ1osYUFBYWEsT0FBTyxDQUFDLENBQUMsRUFBQ1IsR0FBRyxFQUFDLEVBQUVTO1lBQzNCRixTQUFTLENBQUNQLElBQUksR0FBR0ksT0FBTyxDQUFDSyxNQUFNO1FBQ2pDO1FBRUEsT0FBT0Y7SUFDVDtJQUVBLE1BQWNKLGVB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
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy91dGlscy90cmFuc2xhdGlvblF1ZXVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5cbmltcG9ydCB7Z2V0Q29udGVudFdpdGhGYWxsYmFja30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50LmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0xvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvblJlcXVlc3Qge1xuICBrZXk6IHN0cmluZztcbiAgZmFsbGJhY2s6IHN0cmluZztcbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbG9jYWxlOiBMb2NhbGU7XG4gIHJlc29sdmU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvbkJhdGNoIHtcbiAgY29udGV4dDogQXBpQ29udGV4dDtcbiAgcmVxdWVzdHM6IFRyYW5zbGF0aW9uUmVxdWVzdFtdO1xuICB0aW1lb3V0OiBOb2RlSlMuVGltZW91dDtcbn1cblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uT2JqZWN0IHtcbiAga2V5OiBzdHJpbmc7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5jbGFzcyBUcmFuc2xhdGlvblF1ZXVlIHtcbiAgcHJpdmF0ZSBiYXRjaGVzOiBNYXA8c3RyaW5nLCBUcmFuc2xhdGlvbkJhdGNoPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBiYXRjaFRpbWVvdXQgPSA1MDtcbiAgcHJpdmF0ZSBtYXhCYXRjaFNpemUgPSAyMDtcblxuICBhc3luYyB0cmFuc2xhdGUoXG4gICAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10sXG4gICAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGlmKHRyYW5zbGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IHRyYW5zbGF0aW9ucy5tYXAoKHtrZXksIGZhbGxiYWNrID0gJycsIHBhcmFtcyA9IHt9fSkgPT5cbiAgICAgIHRoaXMuZ2V0VHJhbnNsYXRpb24oY29udGV4dCwga2V5LCBmYWxsYmFjaywgcGFyYW1zLCBsb2NhbGUpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCByZXN1bHRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICB0cmFuc2xhdGlvbnMuZm9yRWFjaCgoe2tleX0sIGluZGV4KSA9PiB7XG4gICAgICByZXN1bHRNYXBba2V5XSA9IHJlc3VsdHNbaW5kZXhdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdE1hcDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNsYXRpb24oXG4gICAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmYWxsYmFjazogc3RyaW5nLFxuICAgIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICAgIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBiYXRjaEtleSA9IHRoaXMuZ2V0QmF0Y2hLZXkoY29udGV4dCwgbG9jYWxlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFRyYW5zbGF0aW9uUmVxdWVzdCA9IHtrZXksIGZhbGxiYWNrLCBwYXJhbXMsIGxvY2FsZSwgcmVzb2x2ZSwgcmVqZWN0fTtcblxuICAgICAgaWYoIXRoaXMuYmF0Y2hlcy5oYXMoYmF0Y2hLZXkpKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NCYXRjaChiYXRjaEtleSk7XG4gICAgICAgIH0sIHRoaXMuYmF0Y2hUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLmJhdGNoZXMuc2V0KGJhdGNoS2V5LCB7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICByZXF1ZXN0czogW3JlcXVlc3RdLFxuICAgICAgICAgIHRpbWVvdXRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBiYXRjaCA9IHRoaXMuYmF0Y2hlcy5nZXQoYmF0Y2hLZXkpITtcbiAgICAgICAgYmF0Y2gucmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcblxuICAgICAgICBpZihiYXRjaC5yZXF1ZXN0cy5sZW5ndGggPj0gdGhpcy5tYXhCYXRjaFNpemUpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoYmF0Y2gudGltZW91dCk7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQmF0Y2goYmF0Y2hLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBiYXRjaEtleXMgPSBBcnJheS5mcm9tKHRoaXMuYmF0Y2hlcy5rZXlzKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGJhdGNoS2V5cy5tYXAoKGtleSkgPT4gdGhpcy5wcm9jZXNzQmF0Y2goa2V5KSkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5iYXRjaGVzLmZvckVhY2goKGJhdGNoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoYmF0Y2gudGltZW91dCk7XG4gICAgICBiYXRjaC5yZXF1ZXN0cy5mb3JFYWNoKChyZXF1ZXN0KSA9PiB7XG4gICAgICAgIHJlcXVlc3QucmVqZWN0KG5ldyBFcnJvcignVHJhbnNsYXRpb24gcXVldWUgY2xlYXJlZCcpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuYmF0Y2hlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXRjaEtleShjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhbGU6IExvY2FsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2NvbnRleHQuZGF0YWJhc2VOYW1lfToke2xvY2FsZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQmF0Y2goYmF0Y2hLZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJhdGNoID0gdGhpcy5iYXRjaGVzLmdldChiYXRjaEtleSk7XG4gICAgaWYoIWJhdGNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5iYXRjaGVzLmRlbGV0ZShiYXRjaEtleSk7XG4gICAgY2xlYXJUaW1lb3V0KGJhdGNoLnRpbWVvdXQpO1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBiYXRjaC5yZXF1ZXN0cy5tYXAoYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50V2l0aEZhbGxiYWNrKFxuICAgICAgICAgIGJhdGNoLmNvbnRleHQsXG4gICAgICAgICAgcmVxdWVzdC5rZXksXG4gICAgICAgICAgcmVxdWVzdC5mYWxsYmFjayxcbiAgICAgICAgICByZXF1ZXN0LmxvY2FsZVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZENvbnRlbnQgPSB0aGlzLmludGVycG9sYXRlKGNvbnRlbnQsIHJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtyZXF1ZXN0LCByZXN1bHQ6IGludGVycG9sYXRlZENvbnRlbnR9O1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRGYWxsYmFjayA9IHRoaXMuaW50ZXJwb2xhdGUocmVxdWVzdC5mYWxsYmFjaywgcmVxdWVzdC5wYXJhbXMpO1xuICAgICAgICByZXR1cm4ge3JlcXVlc3QsIHJlc3VsdDogaW50ZXJwb2xhdGVkRmFsbGJhY2t9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcyk7XG5cbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgaWYocmVzdWx0LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgcmVzdWx0LnZhbHVlLnJlcXVlc3QucmVzb2x2ZShyZXN1bHQudmFsdWUucmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHtyZXF1ZXN0fSA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZEZhbGxiYWNrID0gdGhpcy5pbnRlcnBvbGF0ZShyZXF1ZXN0LmZhbGxiYWNrLCByZXF1ZXN0LnBhcmFtcyk7XG4gICAgICAgIHJlcXVlc3QucmVzb2x2ZShpbnRlcnBvbGF0ZWRGYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRlKGNvbnRlbnQ6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xce1xceyhcXHcrKVxcfVxcfS9nLCAobWF0Y2gsIGtleSkgPT4gKHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQgPyBTdHJpbmcocGFyYW1zW2tleV0pIDogbWF0Y2gpKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2xhdGlvblF1ZXVlID0gbmV3IFRyYW5zbGF0aW9uUXVldWUoKTtcblxuZXhwb3J0IGNvbnN0IGkxOG4gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSxcbiAgbG9jYWxlPzogTG9jYWxlXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0+IHRyYW5zbGF0aW9uUXVldWUudHJhbnNsYXRlKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuZXhwb3J0IGNvbnN0IGZsdXNoID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdHJhbnNsYXRpb25RdWV1ZS5mbHVzaCgpO1xuZXhwb3J0IGNvbnN0IGNsZWFyID0gKCk6IHZvaWQgPT4gdHJhbnNsYXRpb25RdWV1ZS5jbGVhcigpO1xuXG5leHBvcnQgdHlwZSB7VHJhbnNsYXRpb25PYmplY3R9O1xuXG4gIGV4cG9ydCB7dHJhbnNsYXRpb25RdWV1ZX07XG4iXSwibmFtZXMiOlsiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsIlRyYW5zbGF0aW9uUXVldWUiLCJiYXRjaGVzIiwiTWFwIiwiYmF0Y2hUaW1lb3V0IiwibWF4QmF0Y2hTaXplIiwidHJhbnNsYXRlIiwiY29udGV4dCIsInRyYW5zbGF0aW9ucyIsImxvY2FsZSIsImxlbmd0aCIsInByb21pc2VzIiwibWFwIiwia2V5IiwiZmFsbGJhY2siLCJwYXJhbXMiLCJnZXRUcmFuc2xhdGlvbiIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwicmVzdWx0TWFwIiwiZm9yRWFjaCIsImluZGV4IiwicmVzb2x2ZSIsInJlamVjdCIsImJhdGNoS2V5IiwiZ2V0QmF0Y2hLZXkiLCJyZXF1ZXN0IiwiaGFzIiwidGltZW91dCIsInNldFRpbWVvdXQiLCJwcm9jZXNzQmF0Y2giLCJzZXQiLCJyZXF1ZXN0cyIsImJhdGNoIiwiZ2V0IiwicHVzaCIsImNsZWFyVGltZW91dCIsImZsdXNoIiwiYmF0Y2hLZXlzIiwiQXJyYXkiLCJmcm9tIiwia2V5cyIsImNsZWFyIiwiRXJyb3IiLCJkYXRhYmFzZU5hbWUiLCJkZWxldGUiLCJjb250ZW50IiwiaW50ZXJwb2xhdGVkQ29udGVudCIsImludGVycG9sYXRlIiwicmVzdWx0IiwiZXJyb3IiLCJpbnRlcnBvbGF0ZWRGYWxsYmFjayIsImFsbFNldHRsZWQiLCJzdGF0dXMiLCJ2YWx1ZSIsInJlYXNvbiIsInJlcGxhY2UiLCJtYXRjaCIsInVuZGVmaW5lZCIsIlN0cmluZyIsInRyYW5zbGF0aW9uUXVldWUiLCJpMThuIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxTQUFRQSxzQkFBc0IsUUFBTyx3QkFBd0I7QUEwQjdELE1BQU1DO0lBQ0lDLFVBQXlDLElBQUlDLE1BQU07SUFDbkRDLGVBQWUsR0FBRztJQUNsQkMsZUFBZSxHQUFHO0lBRTFCLE1BQU1DLFVBQ0pDLE9BQW1CLEVBQ25CQyxZQUFpQyxFQUNqQ0MsU0FBaUIsSUFBSSxFQUNZO1FBQ2pDLElBQUdELGFBQWFFLE1BQU0sS0FBSyxHQUFHO1lBQzVCLE9BQU8sQ0FBQztRQUNWO1FBRUEsTUFBTUMsV0FBV0gsYUFBYUksR0FBRyxDQUFDLENBQUMsRUFBQ0MsR0FBRyxFQUFFQyxXQUFXLEVBQUUsRUFBRUMsU0FBUyxDQUFDLENBQUMsRUFBQyxHQUNsRSxJQUFJLENBQUNDLGNBQWMsQ0FBQ1QsU0FBU00sS0FBS0MsVUFBVUMsUUFBUU47UUFHdEQsTUFBTVEsVUFBVSxNQUFNQyxRQUFRQyxHQUFHLENBQUNSO1FBRWxDLE1BQU1TLFlBQW9DLENBQUM7UUFDM0NaLGFBQWFhLE9BQU8sQ0FBQyxDQUFDLEVBQUNSLEdBQUcsRUFBQyxFQUFFUztZQUMzQkYsU0FBUyxDQUFDUCxJQUFJLEdBQUdJLE9BQU8sQ0FBQ0ssTUFBTTtRQUNqQztRQUVBLE9BQU9GO0lBQ1Q7SUFFQSxNQUFj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
@@ -63,4 +63,4 @@ export const createMediaConvertBackfillHandler = (configureReaktor)=>async ()=>{
63
63
  return mediaConvertBackfillHandler();
64
64
  };
65
65
 
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3ZpZGVvUHJvY2Vzc2luZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7RXZlbnRCcmlkZ2VFdmVudH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuL2NvbmZpZy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7XG4gIGNvbXBsZXRlVmlkZW9Qcm9jZXNzaW5nLFxuICBmYWlsVmlkZW9Qcm9jZXNzaW5nLFxuICBxdWV1ZVZpZGVvVHJhbnNjb2RlQmFja2ZpbGxcbn0gZnJvbSAnLi9hY3Rpb25zL3ZpZGVvcy5qcyc7XG5cbnR5cGUgTWVkaWFDb252ZXJ0Sm9iU3RhdGUgPSB7XG4gIHJlYWRvbmx5IGpvYklkPzogc3RyaW5nO1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJNZXRhZGF0YT86IHtcbiAgICByZWFkb25seSBobHNLZXk/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxheWJhY2tLZXk/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc3RyZWFtVHlwZT86IHN0cmluZztcbiAgICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdmlkZW9JZD86IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JDb25maWd1cmVIYW5kbGVyID0gKCkgPT4gdm9pZDtcblxuY29uc3QgY3JlYXRlUHJvY2Vzc2luZ0NvbnRleHQgPSAoKTogQXBpQ29udGV4dCA9PiAoe1xuICBjb25maWc6IHtcbiAgICBkZXRhaWxzOiB7XG4gICAgICBuYW1lOiBDb25maWcuZ2V0KCdkZXRhaWxzLm5hbWUnKSxcbiAgICAgIHN1cHBvcnRFbWFpbDogQ29uZmlnLmdldCgnZGV0YWlscy5zdXBwb3J0RW1haWwnKSxcbiAgICAgIHN1cHBvcnROYW1lOiBDb25maWcuZ2V0KCdkZXRhaWxzLnN1cHBvcnROYW1lJylcbiAgICB9XG4gIH0sXG4gIGRhdGFiYXNlTmFtZTogQ29uZmlnLmdldCgnYXJhbmdvZGIuZGF0YWJhc2UnKSxcbiAgc2Vzc2lvbjoge31cbn0gYXMgQXBpQ29udGV4dCk7XG5cbmV4cG9ydCBjb25zdCBtZWRpYUNvbnZlcnRIYW5kbGVyID0gYXN5bmMgKFxuICBldmVudDogRXZlbnRCcmlkZ2VFdmVudDwnTWVkaWFDb252ZXJ0IEpvYiBTdGF0ZSBDaGFuZ2UnLCBNZWRpYUNvbnZlcnRKb2JTdGF0ZT5cbik6IFByb21pc2U8e3N0YXR1c0NvZGU6IG51bWJlcn0+ID0+IHtcbiAgY29uc3QgZGV0YWlsID0gZXZlbnQ/LmRldGFpbCB8fCB7fTtcbiAgY29uc3Qgc3RhdHVzID0gU3RyaW5nKGRldGFpbD8uc3RhdHVzIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCB1c2VyTWV0YWRhdGEgPSBkZXRhaWw/LnVzZXJNZXRhZGF0YSB8fCB7fTtcbiAgY29uc3QgdmlkZW9JZCA9IFN0cmluZyh1c2VyTWV0YWRhdGE/LnZpZGVvSWQgfHwgJycpO1xuICBjb25zdCBjb250ZXh0ID0gY3JlYXRlUHJvY2Vzc2luZ0NvbnRleHQoKTtcblxuICBpZighdmlkZW9JZCkge1xuICAgIHJldHVybiB7c3RhdHVzQ29kZTogMjAyfTtcbiAgfVxuXG4gIGlmKHN0YXR1cyA9PT0gJ0NPTVBMRVRFJykge1xuICAgIGF3YWl0IGNvbXBsZXRlVmlkZW9Qcm9jZXNzaW5nKGNvbnRleHQsIHZpZGVvSWQsIHtcbiAgICAgIGhsc0tleTogU3RyaW5nKHVzZXJNZXRhZGF0YT8uaGxzS2V5IHx8ICcnKSxcbiAgICAgIHBsYXliYWNrS2V5OiBTdHJpbmcodXNlck1ldGFkYXRhPy5wbGF5YmFja0tleSB8fCAnJyksXG4gICAgICBwcm9jZXNzaW5nU3RhdHVzOiAncmVhZHknLFxuICAgICAgc3RyZWFtVHlwZTogU3RyaW5nKHVzZXJNZXRhZGF0YT8uc3RyZWFtVHlwZSB8fCAncHJvZ3Jlc3NpdmUnKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtzdGF0dXNDb2RlOiAyMDB9O1xuICB9XG5cbiAgaWYoWydDQU5DRUxFRCcsICdFUlJPUiddLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICBhd2FpdCBmYWlsVmlkZW9Qcm9jZXNzaW5nKGNvbnRleHQsIHZpZGVvSWQpO1xuICB9XG5cbiAgcmV0dXJuIHtzdGF0dXNDb2RlOiAyMDB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1lZGlhQ29udmVydEJhY2tmaWxsSGFuZGxlciA9IGFzeW5jICgpOiBQcm9taXNlPHtib2R5OiBzdHJpbmc7IHN0YXR1c0NvZGU6IG51bWJlcn0+ID0+IHtcbiAgY29uc3QgbGltaXQgPSBOdW1iZXIocHJvY2Vzcy5lbnYuVklERU9fVFJBTlNDT0RFX0JBQ0tGSUxMX0xJTUlUIHx8IDEwKTtcbiAgY29uc3Qgam9iSWRzID0gYXdhaXQgcXVldWVWaWRlb1RyYW5zY29kZUJhY2tmaWxsKGNyZWF0ZVByb2Nlc3NpbmdDb250ZXh0KCksIGxpbWl0KTtcblxuICByZXR1cm4ge1xuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtqb2JJZHMsIHF1ZXVlZDogam9iSWRzLmxlbmd0aH0pLFxuICAgIHN0YXR1c0NvZGU6IDIwMFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lZGlhQ29udmVydEhhbmRsZXIgPSAoY29uZmlndXJlUmVha3RvcjogUmVha3RvckNvbmZpZ3VyZUhhbmRsZXIpID0+IGFzeW5jIChcbiAgZXZlbnQ6IEV2ZW50QnJpZGdlRXZlbnQ8J01lZGlhQ29udmVydCBKb2IgU3RhdGUgQ2hhbmdlJywgTWVkaWFDb252ZXJ0Sm9iU3RhdGU+XG4pOiBQcm9taXNlPHtzdGF0dXNDb2RlOiBudW1iZXJ9PiA9PiB7XG4gIGNvbmZpZ3VyZVJlYWt0b3IoKTtcbiAgcmV0dXJuIG1lZGlhQ29udmVydEhhbmRsZXIoZXZlbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lZGlhQ29udmVydEJhY2tmaWxsSGFuZGxlciA9IChjb25maWd1cmVSZWFrdG9yOiBSZWFrdG9yQ29uZmlndXJlSGFuZGxlcikgPT4gYXN5bmMgKCk6IFByb21pc2U8e1xuICBib2R5OiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbn0+ID0+IHtcbiAgY29uZmlndXJlUmVha3RvcigpO1xuICByZXR1cm4gbWVkaWFDb252ZXJ0QmFja2ZpbGxIYW5kbGVyKCk7XG59O1xuIl0sIm5hbWVzIjpbIkNvbmZpZyIsImNvbXBsZXRlVmlkZW9Qcm9jZXNzaW5nIiwiZmFpbFZpZGVvUHJvY2Vzc2luZyIsInF1ZXVlVmlkZW9UcmFuc2NvZGVCYWNrZmlsbCIsImNyZWF0ZVByb2Nlc3NpbmdDb250ZXh0IiwiY29uZmlnIiwiZGV0YWlscyIsIm5hbWUiLCJnZXQiLCJzdXBwb3J0RW1haWwiLCJzdXBwb3J0TmFtZSIsImRhdGFiYXNlTmFtZSIsInNlc3Npb24iLCJtZWRpYUNvbnZlcnRIYW5kbGVyIiwiZXZlbnQiLCJkZXRhaWwiLCJzdGF0dXMiLCJTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsInVzZXJNZXRhZGF0YSIsInZpZGVvSWQiLCJjb250ZXh0Iiwic3RhdHVzQ29kZSIsImhsc0tleSIsInBsYXliYWNrS2V5IiwicHJvY2Vzc2luZ1N0YXR1cyIsInN0cmVhbVR5cGUiLCJpbmNsdWRlcyIsIm1lZGlhQ29udmVydEJhY2tmaWxsSGFuZGxlciIsImxpbWl0IiwiTnVtYmVyIiwicHJvY2VzcyIsImVudiIsIlZJREVPX1RSQU5TQ09ERV9CQUNLRklMTF9MSU1JVCIsImpvYklkcyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicXVldWVkIiwibGVuZ3RoIiwiY3JlYXRlTWVkaWFDb252ZXJ0SGFuZGxlciIsImNvbmZpZ3VyZVJlYWt0b3IiLCJjcmVhdGVNZWRpYUNvbnZlcnRCYWNrZmlsbEhhbmRsZXIiXSwibWFwcGluZ3MiOiJBQUVBLFNBQVFBLE1BQU0sUUFBTyxjQUFjO0FBRW5DLFNBQ0VDLHVCQUF1QixFQUN2QkMsbUJBQW1CLEVBQ25CQywyQkFBMkIsUUFDdEIsc0JBQXNCO0FBZ0I3QixNQUFNQywwQkFBMEIsSUFBbUIsQ0FBQTtRQUNqREMsUUFBUTtZQUNOQyxTQUFTO2dCQUNQQyxNQUFNUCxPQUFPUSxHQUFHLENBQUM7Z0JBQ2pCQyxjQUFjVCxPQUFPUSxHQUFHLENBQUM7Z0JBQ3pCRSxhQUFhVixPQUFPUSxHQUFHLENBQUM7WUFDMUI7UUFDRjtRQUNBRyxjQUFjWCxPQUFPUSxHQUFHLENBQUM7UUFDekJJLFNBQVMsQ0FBQztJQUNaLENBQUE7QUFFQSxPQUFPLE1BQU1DLHNCQUFzQixPQUNqQ0M7SUFFQSxNQUFNQyxTQUFTRCxPQUFPQyxVQUFVLENBQUM7SUFDakMsTUFBTUMsU0FBU0MsT0FBT0YsUUFBUUMsVUFBVSxJQUFJRSxXQUFXO0lBQ3ZELE1BQU1DLGVBQWVKLFFBQVFJLGdCQUFnQixDQUFDO0lBQzlDLE1BQU1DLFVBQVVILE9BQU9FLGNBQWNDLFdBQVc7SUFDaEQsTUFBTUMsVUFBVWpCO0lBRWhCLElBQUcsQ0FBQ2dCLFNBQVM7UUFDWCxPQUFPO1lBQUNFLFlBQVk7UUFBRztJQUN6QjtJQUVBLElBQUdOLFdBQVcsWUFBWTtRQUN4QixNQUFNZix3QkFBd0JvQixTQUFTRCxTQUFTO1lBQzlDRyxRQUFRTixPQUFPRSxjQUFjSSxVQUFVO1lBQ3ZDQyxhQUFhUCxPQUFPRSxjQUFjSyxlQUFlO1lBQ2pEQyxrQkFBa0I7WUFDbEJDLFlBQVlULE9BQU9FLGNBQWNPLGNBQWM7UUFDakQ7UUFFQSxPQUFPO1lBQUNKLFlBQVk7UUFBRztJQUN6QjtJQUVBLElBQUc7UUFBQztRQUFZO0tBQVEsQ0FBQ0ssUUFBUSxDQUFDWCxTQUFTO1FBQ3pDLE1BQU1kLG9CQUFvQm1CLFNBQVNEO0lBQ3JDO0lBRUEsT0FBTztRQUFDRSxZQUFZO0lBQUc7QUFDekIsRUFBRTtBQUVGLE9BQU8sTUFBTU0sOEJBQThCO0lBQ3pDLE1BQU1DLFFBQVFDLE9BQU9DLFFBQVFDLEdBQUcsQ0FBQ0MsOEJBQThCLElBQUk7SUFDbkUsTUFBTUMsU0FBUyxNQUFNL0IsNEJBQTRCQywyQkFBMkJ5QjtJQUU1RSxPQUFPO1FBQ0xNLE1BQU1DLEtBQUtDLFNBQVMsQ0FBQztZQUFDSDtZQUFRSSxRQUFRSixPQUFPSyxNQUFNO1FBQUE7UUFDbkRqQixZQUFZO0lBQ2Q7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNa0IsNEJBQTRCLENBQUNDLG1CQUE4QyxPQUN0RjNCO1FBRUEyQjtRQUNBLE9BQU81QixvQkFBb0JDO0lBQzdCLEVBQUU7QUFFRixPQUFPLE1BQU00QixvQ0FBb0MsQ0FBQ0QsbUJBQThDO1FBSTlGQTtRQUNBLE9BQU9iO0lBQ1QsRUFBRSJ9
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy92aWRlb1Byb2Nlc3NpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0V2ZW50QnJpZGdlRXZlbnR9IGZyb20gJ2F3cy1sYW1iZGEnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi9jb25maWcuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge1xuICBjb21wbGV0ZVZpZGVvUHJvY2Vzc2luZyxcbiAgZmFpbFZpZGVvUHJvY2Vzc2luZyxcbiAgcXVldWVWaWRlb1RyYW5zY29kZUJhY2tmaWxsXG59IGZyb20gJy4vYWN0aW9ucy92aWRlb3MuanMnO1xuXG50eXBlIE1lZGlhQ29udmVydEpvYlN0YXRlID0ge1xuICByZWFkb25seSBqb2JJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VyTWV0YWRhdGE/OiB7XG4gICAgcmVhZG9ubHkgaGxzS2V5Pzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsYXliYWNrS2V5Pzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHN0cmVhbVR5cGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdXNlcklkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHZpZGVvSWQ/OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBSZWFrdG9yQ29uZmlndXJlSGFuZGxlciA9ICgpID0+IHZvaWQ7XG5cbmNvbnN0IGNyZWF0ZVByb2Nlc3NpbmdDb250ZXh0ID0gKCk6IEFwaUNvbnRleHQgPT4gKHtcbiAgY29uZmlnOiB7XG4gICAgZGV0YWlsczoge1xuICAgICAgbmFtZTogQ29uZmlnLmdldCgnZGV0YWlscy5uYW1lJyksXG4gICAgICBzdXBwb3J0RW1haWw6IENvbmZpZy5nZXQoJ2RldGFpbHMuc3VwcG9ydEVtYWlsJyksXG4gICAgICBzdXBwb3J0TmFtZTogQ29uZmlnLmdldCgnZGV0YWlscy5zdXBwb3J0TmFtZScpXG4gICAgfVxuICB9LFxuICBkYXRhYmFzZU5hbWU6IENvbmZpZy5nZXQoJ2FyYW5nb2RiLmRhdGFiYXNlJyksXG4gIHNlc3Npb246IHt9XG59IGFzIEFwaUNvbnRleHQpO1xuXG5leHBvcnQgY29uc3QgbWVkaWFDb252ZXJ0SGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQ6IEV2ZW50QnJpZGdlRXZlbnQ8J01lZGlhQ29udmVydCBKb2IgU3RhdGUgQ2hhbmdlJywgTWVkaWFDb252ZXJ0Sm9iU3RhdGU+XG4pOiBQcm9taXNlPHtzdGF0dXNDb2RlOiBudW1iZXJ9PiA9PiB7XG4gIGNvbnN0IGRldGFpbCA9IGV2ZW50Py5kZXRhaWwgfHwge307XG4gIGNvbnN0IHN0YXR1cyA9IFN0cmluZyhkZXRhaWw/LnN0YXR1cyB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgdXNlck1ldGFkYXRhID0gZGV0YWlsPy51c2VyTWV0YWRhdGEgfHwge307XG4gIGNvbnN0IHZpZGVvSWQgPSBTdHJpbmcodXNlck1ldGFkYXRhPy52aWRlb0lkIHx8ICcnKTtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVByb2Nlc3NpbmdDb250ZXh0KCk7XG5cbiAgaWYoIXZpZGVvSWQpIHtcbiAgICByZXR1cm4ge3N0YXR1c0NvZGU6IDIwMn07XG4gIH1cblxuICBpZihzdGF0dXMgPT09ICdDT01QTEVURScpIHtcbiAgICBhd2FpdCBjb21wbGV0ZVZpZGVvUHJvY2Vzc2luZyhjb250ZXh0LCB2aWRlb0lkLCB7XG4gICAgICBobHNLZXk6IFN0cmluZyh1c2VyTWV0YWRhdGE/Lmhsc0tleSB8fCAnJyksXG4gICAgICBwbGF5YmFja0tleTogU3RyaW5nKHVzZXJNZXRhZGF0YT8ucGxheWJhY2tLZXkgfHwgJycpLFxuICAgICAgcHJvY2Vzc2luZ1N0YXR1czogJ3JlYWR5JyxcbiAgICAgIHN0cmVhbVR5cGU6IFN0cmluZyh1c2VyTWV0YWRhdGE/LnN0cmVhbVR5cGUgfHwgJ3Byb2dyZXNzaXZlJylcbiAgICB9KTtcblxuICAgIHJldHVybiB7c3RhdHVzQ29kZTogMjAwfTtcbiAgfVxuXG4gIGlmKFsnQ0FOQ0VMRUQnLCAnRVJST1InXS5pbmNsdWRlcyhzdGF0dXMpKSB7XG4gICAgYXdhaXQgZmFpbFZpZGVvUHJvY2Vzc2luZyhjb250ZXh0LCB2aWRlb0lkKTtcbiAgfVxuXG4gIHJldHVybiB7c3RhdHVzQ29kZTogMjAwfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtZWRpYUNvbnZlcnRCYWNrZmlsbEhhbmRsZXIgPSBhc3luYyAoKTogUHJvbWlzZTx7Ym9keTogc3RyaW5nOyBzdGF0dXNDb2RlOiBudW1iZXJ9PiA9PiB7XG4gIGNvbnN0IGxpbWl0ID0gTnVtYmVyKHByb2Nlc3MuZW52LlZJREVPX1RSQU5TQ09ERV9CQUNLRklMTF9MSU1JVCB8fCAxMCk7XG4gIGNvbnN0IGpvYklkcyA9IGF3YWl0IHF1ZXVlVmlkZW9UcmFuc2NvZGVCYWNrZmlsbChjcmVhdGVQcm9jZXNzaW5nQ29udGV4dCgpLCBsaW1pdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7am9iSWRzLCBxdWV1ZWQ6IGpvYklkcy5sZW5ndGh9KSxcbiAgICBzdGF0dXNDb2RlOiAyMDBcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNZWRpYUNvbnZlcnRIYW5kbGVyID0gKGNvbmZpZ3VyZVJlYWt0b3I6IFJlYWt0b3JDb25maWd1cmVIYW5kbGVyKSA9PiBhc3luYyAoXG4gIGV2ZW50OiBFdmVudEJyaWRnZUV2ZW50PCdNZWRpYUNvbnZlcnQgSm9iIFN0YXRlIENoYW5nZScsIE1lZGlhQ29udmVydEpvYlN0YXRlPlxuKTogUHJvbWlzZTx7c3RhdHVzQ29kZTogbnVtYmVyfT4gPT4ge1xuICBjb25maWd1cmVSZWFrdG9yKCk7XG4gIHJldHVybiBtZWRpYUNvbnZlcnRIYW5kbGVyKGV2ZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNZWRpYUNvbnZlcnRCYWNrZmlsbEhhbmRsZXIgPSAoY29uZmlndXJlUmVha3RvcjogUmVha3RvckNvbmZpZ3VyZUhhbmRsZXIpID0+IGFzeW5jICgpOiBQcm9taXNlPHtcbiAgYm9keTogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG59PiA9PiB7XG4gIGNvbmZpZ3VyZVJlYWt0b3IoKTtcbiAgcmV0dXJuIG1lZGlhQ29udmVydEJhY2tmaWxsSGFuZGxlcigpO1xufTtcbiJdLCJuYW1lcyI6WyJDb25maWciLCJjb21wbGV0ZVZpZGVvUHJvY2Vzc2luZyIsImZhaWxWaWRlb1Byb2Nlc3NpbmciLCJxdWV1ZVZpZGVvVHJhbnNjb2RlQmFja2ZpbGwiLCJjcmVhdGVQcm9jZXNzaW5nQ29udGV4dCIsImNvbmZpZyIsImRldGFpbHMiLCJuYW1lIiwiZ2V0Iiwic3VwcG9ydEVtYWlsIiwic3VwcG9ydE5hbWUiLCJkYXRhYmFzZU5hbWUiLCJzZXNzaW9uIiwibWVkaWFDb252ZXJ0SGFuZGxlciIsImV2ZW50IiwiZGV0YWlsIiwic3RhdHVzIiwiU3RyaW5nIiwidG9VcHBlckNhc2UiLCJ1c2VyTWV0YWRhdGEiLCJ2aWRlb0lkIiwiY29udGV4dCIsInN0YXR1c0NvZGUiLCJobHNLZXkiLCJwbGF5YmFja0tleSIsInByb2Nlc3NpbmdTdGF0dXMiLCJzdHJlYW1UeXBlIiwiaW5jbHVkZXMiLCJtZWRpYUNvbnZlcnRCYWNrZmlsbEhhbmRsZXIiLCJsaW1pdCIsIk51bWJlciIsInByb2Nlc3MiLCJlbnYiLCJWSURFT19UUkFOU0NPREVfQkFDS0ZJTExfTElNSVQiLCJqb2JJZHMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsInF1ZXVlZCIsImxlbmd0aCIsImNyZWF0ZU1lZGlhQ29udmVydEhhbmRsZXIiLCJjb25maWd1cmVSZWFrdG9yIiwiY3JlYXRlTWVkaWFDb252ZXJ0QmFja2ZpbGxIYW5kbGVyIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFRQSxNQUFNLFFBQU8sY0FBYztBQUVuQyxTQUNFQyx1QkFBdUIsRUFDdkJDLG1CQUFtQixFQUNuQkMsMkJBQTJCLFFBQ3RCLHNCQUFzQjtBQWdCN0IsTUFBTUMsMEJBQTBCLElBQW1CLENBQUE7UUFDakRDLFFBQVE7WUFDTkMsU0FBUztnQkFDUEMsTUFBTVAsT0FBT1EsR0FBRyxDQUFDO2dCQUNqQkMsY0FBY1QsT0FBT1EsR0FBRyxDQUFDO2dCQUN6QkUsYUFBYVYsT0FBT1EsR0FBRyxDQUFDO1lBQzFCO1FBQ0Y7UUFDQUcsY0FBY1gsT0FBT1EsR0FBRyxDQUFDO1FBQ3pCSSxTQUFTLENBQUM7SUFDWixDQUFBO0FBRUEsT0FBTyxNQUFNQyxzQkFBc0IsT0FDakNDO0lBRUEsTUFBTUMsU0FBU0QsT0FBT0MsVUFBVSxDQUFDO0lBQ2pDLE1BQU1DLFNBQVNDLE9BQU9GLFFBQVFDLFVBQVUsSUFBSUUsV0FBVztJQUN2RCxNQUFNQyxlQUFlSixRQUFRSSxnQkFBZ0IsQ0FBQztJQUM5QyxNQUFNQyxVQUFVSCxPQUFPRSxjQUFjQyxXQUFXO0lBQ2hELE1BQU1DLFVBQVVqQjtJQUVoQixJQUFHLENBQUNnQixTQUFTO1FBQ1gsT0FBTztZQUFDRSxZQUFZO1FBQUc7SUFDekI7SUFFQSxJQUFHTixXQUFXLFlBQVk7UUFDeEIsTUFBTWYsd0JBQXdCb0IsU0FBU0QsU0FBUztZQUM5Q0csUUFBUU4sT0FBT0UsY0FBY0ksVUFBVTtZQUN2Q0MsYUFBYVAsT0FBT0UsY0FBY0ssZUFBZTtZQUNqREMsa0JBQWtCO1lBQ2xCQyxZQUFZVCxPQUFPRSxjQUFjTyxjQUFjO1FBQ2pEO1FBRUEsT0FBTztZQUFDSixZQUFZO1FBQUc7SUFDekI7SUFFQSxJQUFHO1FBQUM7UUFBWTtLQUFRLENBQUNLLFFBQVEsQ0FBQ1gsU0FBUztRQUN6QyxNQUFNZCxvQkFBb0JtQixTQUFTRDtJQUNyQztJQUVBLE9BQU87UUFBQ0UsWUFBWTtJQUFHO0FBQ3pCLEVBQUU7QUFFRixPQUFPLE1BQU1NLDhCQUE4QjtJQUN6QyxNQUFNQyxRQUFRQyxPQUFPQyxRQUFRQyxHQUFHLENBQUNDLDhCQUE4QixJQUFJO0lBQ25FLE1BQU1DLFNBQVMsTUFBTS9CLDRCQUE0QkMsMkJBQTJCeUI7SUFFNUUsT0FBTztRQUNMTSxNQUFNQyxLQUFLQyxTQUFTLENBQUM7WUFBQ0g7WUFBUUksUUFBUUosT0FBT0ssTUFBTTtRQUFBO1FBQ25EakIsWUFBWTtJQUNkO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTWtCLDRCQUE0QixDQUFDQyxtQkFBOEMsT0FDdEYzQjtRQUVBMkI7UUFDQSxPQUFPNUIsb0JBQW9CQztJQUM3QixFQUFFO0FBRUYsT0FBTyxNQUFNNEIsb0NBQW9DLENBQUNELG1CQUE4QztRQUk5RkE7UUFDQSxPQUFPYjtJQUNULEVBQUUifQ==