payload 3.0.0-alpha.3 → 3.0.0-alpha.30

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 (774) hide show
  1. package/auth.d.ts +5 -5
  2. package/auth.js +5 -44
  3. package/bin.js +40 -1
  4. package/components.d.ts +14 -0
  5. package/components.js +71 -0
  6. package/config.d.ts +10 -10
  7. package/config.js +10 -59
  8. package/database.d.ts +22 -22
  9. package/database.js +21 -108
  10. package/dist/admin/RichText.d.ts +4 -4
  11. package/dist/admin/RichText.d.ts.map +1 -1
  12. package/dist/admin/RichText.js +2 -5
  13. package/dist/admin/elements/Cell.d.ts +2 -2
  14. package/dist/admin/elements/Cell.d.ts.map +1 -1
  15. package/dist/admin/elements/Cell.js +2 -5
  16. package/dist/admin/elements/DatePicker.js +2 -5
  17. package/dist/admin/elements/PreviewButton.js +2 -5
  18. package/dist/admin/elements/PublishButton.js +2 -5
  19. package/dist/admin/elements/SaveButton.js +2 -5
  20. package/dist/admin/elements/SaveDraftButton.js +2 -5
  21. package/dist/admin/elements/Tab.d.ts +3 -3
  22. package/dist/admin/elements/Tab.d.ts.map +1 -1
  23. package/dist/admin/elements/Tab.js +2 -5
  24. package/dist/admin/forms/Error.js +2 -5
  25. package/dist/admin/forms/FieldDescription.js +2 -5
  26. package/dist/admin/forms/FieldTypes.js +2 -5
  27. package/dist/admin/forms/Form.d.ts +22 -0
  28. package/dist/admin/forms/Form.d.ts.map +1 -1
  29. package/dist/admin/forms/Form.js +2 -5
  30. package/dist/admin/forms/Label.js +2 -5
  31. package/dist/admin/forms/RowLabel.d.ts +1 -1
  32. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  33. package/dist/admin/forms/RowLabel.js +2 -5
  34. package/dist/admin/types.d.ts +19 -18
  35. package/dist/admin/types.d.ts.map +1 -1
  36. package/dist/admin/types.js +2 -5
  37. package/dist/admin/views/types.d.ts +41 -0
  38. package/dist/admin/views/types.d.ts.map +1 -0
  39. package/dist/admin/views/types.js +3 -0
  40. package/dist/assets/assets.d.js +0 -1
  41. package/dist/auth/baseFields/accountLock.d.ts +1 -1
  42. package/dist/auth/baseFields/accountLock.d.ts.map +1 -1
  43. package/dist/auth/baseFields/accountLock.js +6 -16
  44. package/dist/auth/baseFields/apiKey.d.ts +1 -1
  45. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  46. package/dist/auth/baseFields/apiKey.js +6 -21
  47. package/dist/auth/baseFields/auth.d.ts +1 -1
  48. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  49. package/dist/auth/baseFields/auth.js +6 -16
  50. package/dist/auth/baseFields/verification.d.ts +1 -1
  51. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  52. package/dist/auth/baseFields/verification.js +8 -18
  53. package/dist/auth/cookies.d.ts +2 -2
  54. package/dist/auth/cookies.d.ts.map +1 -1
  55. package/dist/auth/cookies.js +6 -33
  56. package/dist/auth/crypto.js +7 -30
  57. package/dist/auth/defaultAccess.d.ts +1 -1
  58. package/dist/auth/defaultAccess.d.ts.map +1 -1
  59. package/dist/auth/defaultAccess.js +2 -12
  60. package/dist/auth/defaultUser.d.ts +1 -1
  61. package/dist/auth/defaultUser.d.ts.map +1 -1
  62. package/dist/auth/defaultUser.js +6 -16
  63. package/dist/auth/executeAccess.d.ts +2 -2
  64. package/dist/auth/executeAccess.d.ts.map +1 -1
  65. package/dist/auth/executeAccess.js +5 -15
  66. package/dist/auth/extractJWT.d.ts +1 -1
  67. package/dist/auth/extractJWT.d.ts.map +1 -1
  68. package/dist/auth/extractJWT.js +4 -14
  69. package/dist/auth/getAccessResults.d.ts +2 -2
  70. package/dist/auth/getAccessResults.d.ts.map +1 -1
  71. package/dist/auth/getAccessResults.js +9 -19
  72. package/dist/auth/getAuthenticatedUser.d.ts +1 -1
  73. package/dist/auth/getAuthenticatedUser.d.ts.map +1 -1
  74. package/dist/auth/getAuthenticatedUser.js +2 -12
  75. package/dist/auth/getFieldsToSign.d.ts +2 -2
  76. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  77. package/dist/auth/getFieldsToSign.js +5 -15
  78. package/dist/auth/index.d.ts +3 -3
  79. package/dist/auth/index.d.ts.map +1 -1
  80. package/dist/auth/index.js +4 -27
  81. package/dist/auth/isLocked.js +2 -12
  82. package/dist/auth/operations/access.d.ts +2 -2
  83. package/dist/auth/operations/access.d.ts.map +1 -1
  84. package/dist/auth/operations/access.js +12 -22
  85. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  86. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  87. package/dist/auth/operations/forgotPassword.js +17 -32
  88. package/dist/auth/operations/init.d.ts +1 -1
  89. package/dist/auth/operations/init.d.ts.map +1 -1
  90. package/dist/auth/operations/init.js +2 -12
  91. package/dist/auth/operations/local/forgotPassword.d.ts +3 -3
  92. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  93. package/dist/auth/operations/local/forgotPassword.js +8 -18
  94. package/dist/auth/operations/local/index.d.ts +5 -5
  95. package/dist/auth/operations/local/index.d.ts.map +1 -1
  96. package/dist/auth/operations/local/index.js +12 -27
  97. package/dist/auth/operations/local/login.d.ts +4 -4
  98. package/dist/auth/operations/local/login.d.ts.map +1 -1
  99. package/dist/auth/operations/local/login.js +8 -18
  100. package/dist/auth/operations/local/resetPassword.d.ts +4 -4
  101. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  102. package/dist/auth/operations/local/resetPassword.js +8 -18
  103. package/dist/auth/operations/local/unlock.d.ts +3 -3
  104. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  105. package/dist/auth/operations/local/unlock.js +8 -18
  106. package/dist/auth/operations/local/verifyEmail.d.ts +3 -3
  107. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  108. package/dist/auth/operations/local/verifyEmail.js +8 -18
  109. package/dist/auth/operations/login.d.ts +7 -7
  110. package/dist/auth/operations/login.d.ts.map +1 -1
  111. package/dist/auth/operations/login.js +32 -47
  112. package/dist/auth/operations/logout.d.ts +2 -2
  113. package/dist/auth/operations/logout.d.ts.map +1 -1
  114. package/dist/auth/operations/logout.js +6 -21
  115. package/dist/auth/operations/me.d.ts +3 -3
  116. package/dist/auth/operations/me.d.ts.map +1 -1
  117. package/dist/auth/operations/me.js +4 -19
  118. package/dist/auth/operations/refresh.d.ts +3 -3
  119. package/dist/auth/operations/refresh.d.ts.map +1 -1
  120. package/dist/auth/operations/refresh.js +19 -34
  121. package/dist/auth/operations/registerFirstUser.d.ts +9 -9
  122. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  123. package/dist/auth/operations/registerFirstUser.js +11 -21
  124. package/dist/auth/operations/resetPassword.d.ts +2 -2
  125. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  126. package/dist/auth/operations/resetPassword.js +20 -43
  127. package/dist/auth/operations/unlock.d.ts +2 -2
  128. package/dist/auth/operations/unlock.d.ts.map +1 -1
  129. package/dist/auth/operations/unlock.js +16 -39
  130. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  131. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  132. package/dist/auth/operations/verifyEmail.js +14 -37
  133. package/dist/auth/sendVerificationEmail.d.ts +5 -5
  134. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  135. package/dist/auth/sendVerificationEmail.js +4 -14
  136. package/dist/auth/strategies/apiKey.d.ts +2 -2
  137. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  138. package/dist/auth/strategies/apiKey.js +4 -19
  139. package/dist/auth/strategies/jwt.d.ts +1 -1
  140. package/dist/auth/strategies/jwt.d.ts.map +1 -1
  141. package/dist/auth/strategies/jwt.js +6 -21
  142. package/dist/auth/strategies/local/authenticate.d.ts +1 -1
  143. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  144. package/dist/auth/strategies/local/authenticate.js +6 -21
  145. package/dist/auth/strategies/local/generatePasswordSaltHash.js +7 -22
  146. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +3 -3
  147. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  148. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -12
  149. package/dist/auth/strategies/local/register.d.ts +3 -3
  150. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  151. package/dist/auth/strategies/local/register.js +6 -16
  152. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +3 -3
  153. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  154. package/dist/auth/strategies/local/resetLoginAttempts.js +2 -12
  155. package/dist/auth/types.d.ts +2 -2
  156. package/dist/auth/types.d.ts.map +1 -1
  157. package/dist/auth/types.js +2 -12
  158. package/dist/bin/generateTypes.d.ts +1 -1
  159. package/dist/bin/generateTypes.d.ts.map +1 -1
  160. package/dist/bin/generateTypes.js +12 -27
  161. package/dist/bin/index.js +11 -53
  162. package/dist/bin/loadEnv.js +13 -26
  163. package/dist/bin/migrate.js +15 -30
  164. package/dist/collections/config/build.d.ts +1 -1
  165. package/dist/collections/config/build.d.ts.map +1 -1
  166. package/dist/collections/config/build.js +2 -12
  167. package/dist/collections/config/defaults.d.ts +5 -5
  168. package/dist/collections/config/defaults.js +9 -32
  169. package/dist/collections/config/sanitize.d.ts +2 -2
  170. package/dist/collections/config/sanitize.d.ts.map +1 -1
  171. package/dist/collections/config/sanitize.js +34 -49
  172. package/dist/collections/config/schema.js +157 -172
  173. package/dist/collections/config/types.d.ts +13 -13
  174. package/dist/collections/config/types.d.ts.map +1 -1
  175. package/dist/collections/config/types.js +2 -5
  176. package/dist/collections/dataloader.d.ts +2 -2
  177. package/dist/collections/dataloader.d.ts.map +1 -1
  178. package/dist/collections/dataloader.js +8 -23
  179. package/dist/collections/operations/create.d.ts +9 -9
  180. package/dist/collections/operations/create.d.ts.map +1 -1
  181. package/dist/collections/operations/create.js +38 -53
  182. package/dist/collections/operations/delete.d.ts +9 -10
  183. package/dist/collections/operations/delete.d.ts.map +1 -1
  184. package/dist/collections/operations/delete.js +27 -42
  185. package/dist/collections/operations/deleteByID.d.ts +2 -3
  186. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  187. package/dist/collections/operations/deleteByID.js +27 -42
  188. package/dist/collections/operations/docAccess.d.ts +3 -3
  189. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  190. package/dist/collections/operations/docAccess.js +12 -22
  191. package/dist/collections/operations/find.d.ts +3 -4
  192. package/dist/collections/operations/find.d.ts.map +1 -1
  193. package/dist/collections/operations/find.js +25 -40
  194. package/dist/collections/operations/findByID.d.ts +2 -2
  195. package/dist/collections/operations/findByID.d.ts.map +1 -1
  196. package/dist/collections/operations/findByID.js +21 -36
  197. package/dist/collections/operations/findVersionByID.d.ts +3 -3
  198. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  199. package/dist/collections/operations/findVersionByID.js +19 -34
  200. package/dist/collections/operations/findVersions.d.ts +4 -5
  201. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  202. package/dist/collections/operations/findVersions.js +20 -35
  203. package/dist/collections/operations/local/create.d.ts +4 -5
  204. package/dist/collections/operations/local/create.d.ts.map +1 -1
  205. package/dist/collections/operations/local/create.js +10 -25
  206. package/dist/collections/operations/local/delete.d.ts +5 -5
  207. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  208. package/dist/collections/operations/local/delete.js +10 -20
  209. package/dist/collections/operations/local/find.d.ts +3 -4
  210. package/dist/collections/operations/local/find.d.ts.map +1 -1
  211. package/dist/collections/operations/local/find.js +8 -18
  212. package/dist/collections/operations/local/findByID.d.ts +2 -4
  213. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  214. package/dist/collections/operations/local/findByID.js +8 -18
  215. package/dist/collections/operations/local/findVersionByID.d.ts +3 -4
  216. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  217. package/dist/collections/operations/local/findVersionByID.js +8 -18
  218. package/dist/collections/operations/local/findVersions.d.ts +4 -5
  219. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  220. package/dist/collections/operations/local/findVersions.js +8 -18
  221. package/dist/collections/operations/local/index.d.ts +13 -13
  222. package/dist/collections/operations/local/index.d.ts.map +1 -1
  223. package/dist/collections/operations/local/index.js +20 -35
  224. package/dist/collections/operations/local/restoreVersion.d.ts +2 -3
  225. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  226. package/dist/collections/operations/local/restoreVersion.js +8 -18
  227. package/dist/collections/operations/local/update.d.ts +4 -5
  228. package/dist/collections/operations/local/update.d.ts.map +1 -1
  229. package/dist/collections/operations/local/update.js +12 -27
  230. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  231. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  232. package/dist/collections/operations/restoreVersion.js +26 -41
  233. package/dist/collections/operations/update.d.ts +7 -8
  234. package/dist/collections/operations/update.d.ts.map +1 -1
  235. package/dist/collections/operations/update.js +43 -58
  236. package/dist/collections/operations/updateByID.d.ts +9 -9
  237. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  238. package/dist/collections/operations/updateByID.js +44 -59
  239. package/dist/collections/operations/utils.d.ts +12 -12
  240. package/dist/collections/operations/utils.d.ts.map +1 -1
  241. package/dist/collections/operations/utils.js +3 -12
  242. package/dist/config/build.d.ts +1 -1
  243. package/dist/config/build.d.ts.map +1 -1
  244. package/dist/config/build.js +9 -15
  245. package/dist/config/clientFiles.js +2 -12
  246. package/dist/config/createClientConfig.d.ts +2 -2
  247. package/dist/config/createClientConfig.d.ts.map +1 -1
  248. package/dist/config/createClientConfig.js +12 -25
  249. package/dist/config/defaults.d.ts +1 -1
  250. package/dist/config/defaults.d.ts.map +1 -1
  251. package/dist/config/defaults.js +4 -19
  252. package/dist/config/find.js +18 -33
  253. package/dist/config/load.d.ts +2 -4
  254. package/dist/config/load.d.ts.map +1 -1
  255. package/dist/config/load.js +8 -37
  256. package/dist/config/sanitize.d.ts +1 -1
  257. package/dist/config/sanitize.d.ts.map +1 -1
  258. package/dist/config/sanitize.js +25 -40
  259. package/dist/config/schema.d.ts.map +1 -1
  260. package/dist/config/schema.js +116 -133
  261. package/dist/config/shared/adminViewSchema.js +9 -24
  262. package/dist/config/shared/componentSchema.js +21 -50
  263. package/dist/config/types.d.ts +21 -30
  264. package/dist/config/types.d.ts.map +1 -1
  265. package/dist/config/types.js +9 -21
  266. package/dist/config/validate.d.ts +1 -1
  267. package/dist/config/validate.d.ts.map +1 -1
  268. package/dist/config/validate.js +15 -71
  269. package/dist/database/combineQueries.d.ts +1 -1
  270. package/dist/database/combineQueries.d.ts.map +1 -1
  271. package/dist/database/combineQueries.js +4 -14
  272. package/dist/database/createDatabaseAdapter.d.ts +1 -1
  273. package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
  274. package/dist/database/createDatabaseAdapter.js +14 -24
  275. package/dist/database/flattenWhereToOperators.d.ts +1 -1
  276. package/dist/database/flattenWhereToOperators.d.ts.map +1 -1
  277. package/dist/database/flattenWhereToOperators.js +2 -12
  278. package/dist/database/getLocalizedPaths.d.ts +3 -3
  279. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  280. package/dist/database/getLocalizedPaths.js +7 -22
  281. package/dist/database/migrations/createMigration.d.ts +1 -1
  282. package/dist/database/migrations/createMigration.d.ts.map +1 -1
  283. package/dist/database/migrations/createMigration.js +7 -22
  284. package/dist/database/migrations/getMigrations.d.ts +2 -2
  285. package/dist/database/migrations/getMigrations.d.ts.map +1 -1
  286. package/dist/database/migrations/getMigrations.js +4 -12
  287. package/dist/database/migrations/migrate.d.ts +1 -1
  288. package/dist/database/migrations/migrate.d.ts.map +1 -1
  289. package/dist/database/migrations/migrate.js +12 -22
  290. package/dist/database/migrations/migrateDown.d.ts +1 -1
  291. package/dist/database/migrations/migrateDown.d.ts.map +1 -1
  292. package/dist/database/migrations/migrateDown.js +12 -22
  293. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  294. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  295. package/dist/database/migrations/migrateRefresh.js +16 -24
  296. package/dist/database/migrations/migrateReset.d.ts +1 -1
  297. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  298. package/dist/database/migrations/migrateReset.js +12 -22
  299. package/dist/database/migrations/migrateStatus.d.ts +1 -1
  300. package/dist/database/migrations/migrateStatus.d.ts.map +1 -1
  301. package/dist/database/migrations/migrateStatus.js +8 -18
  302. package/dist/database/migrations/migrationTemplate.js +2 -12
  303. package/dist/database/migrations/migrationsCollection.d.ts +1 -1
  304. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  305. package/dist/database/migrations/migrationsCollection.js +2 -12
  306. package/dist/database/migrations/readMigrationFiles.d.ts +2 -2
  307. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  308. package/dist/database/migrations/readMigrationFiles.js +12 -24
  309. package/dist/database/queryValidation/types.d.ts +2 -2
  310. package/dist/database/queryValidation/types.d.ts.map +1 -1
  311. package/dist/database/queryValidation/types.js +2 -5
  312. package/dist/database/queryValidation/validateQueryPaths.d.ts +5 -5
  313. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  314. package/dist/database/queryValidation/validateQueryPaths.js +13 -28
  315. package/dist/database/queryValidation/validateSearchParams.d.ts +5 -5
  316. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  317. package/dist/database/queryValidation/validateSearchParams.js +17 -25
  318. package/dist/database/types.d.ts +9 -7
  319. package/dist/database/types.d.ts.map +1 -1
  320. package/dist/database/types.js +2 -5
  321. package/dist/email/build.d.ts +2 -2
  322. package/dist/email/build.d.ts.map +1 -1
  323. package/dist/email/build.js +11 -26
  324. package/dist/email/defaults.d.ts +1 -1
  325. package/dist/email/defaults.d.ts.map +1 -1
  326. package/dist/email/defaults.js +2 -12
  327. package/dist/email/mockHandler.d.ts +2 -2
  328. package/dist/email/mockHandler.d.ts.map +1 -1
  329. package/dist/email/mockHandler.js +8 -23
  330. package/dist/email/sendEmail.js +2 -12
  331. package/dist/email/types.js +2 -5
  332. package/dist/errors/APIError.js +4 -19
  333. package/dist/errors/AuthenticationError.d.ts +1 -1
  334. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  335. package/dist/errors/AuthenticationError.js +7 -22
  336. package/dist/errors/DuplicateCollection.d.ts +1 -1
  337. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  338. package/dist/errors/DuplicateCollection.js +4 -19
  339. package/dist/errors/DuplicateFieldName.d.ts +1 -1
  340. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  341. package/dist/errors/DuplicateFieldName.js +4 -19
  342. package/dist/errors/DuplicateGlobal.d.ts +2 -2
  343. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  344. package/dist/errors/DuplicateGlobal.js +4 -19
  345. package/dist/errors/ErrorDeletingFile.d.ts +1 -1
  346. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  347. package/dist/errors/ErrorDeletingFile.js +7 -22
  348. package/dist/errors/FileUploadError.d.ts +1 -1
  349. package/dist/errors/FileUploadError.d.ts.map +1 -1
  350. package/dist/errors/FileUploadError.js +7 -22
  351. package/dist/errors/Forbidden.d.ts +1 -1
  352. package/dist/errors/Forbidden.d.ts.map +1 -1
  353. package/dist/errors/Forbidden.js +7 -22
  354. package/dist/errors/InvalidConfiguration.d.ts +1 -1
  355. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  356. package/dist/errors/InvalidConfiguration.js +6 -21
  357. package/dist/errors/InvalidFieldName.d.ts +2 -2
  358. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  359. package/dist/errors/InvalidFieldName.js +4 -19
  360. package/dist/errors/InvalidFieldRelationship.d.ts +2 -2
  361. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  362. package/dist/errors/InvalidFieldRelationship.js +4 -19
  363. package/dist/errors/InvalidSchema.d.ts +1 -1
  364. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  365. package/dist/errors/InvalidSchema.js +6 -21
  366. package/dist/errors/LockedAuth.d.ts +1 -1
  367. package/dist/errors/LockedAuth.d.ts.map +1 -1
  368. package/dist/errors/LockedAuth.js +7 -22
  369. package/dist/errors/MissingCollectionLabel.d.ts +1 -1
  370. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  371. package/dist/errors/MissingCollectionLabel.js +4 -19
  372. package/dist/errors/MissingFieldInputOptions.d.ts +2 -2
  373. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  374. package/dist/errors/MissingFieldInputOptions.js +4 -19
  375. package/dist/errors/MissingFieldType.d.ts +2 -2
  376. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  377. package/dist/errors/MissingFieldType.js +6 -21
  378. package/dist/errors/MissingFile.d.ts +1 -1
  379. package/dist/errors/MissingFile.d.ts.map +1 -1
  380. package/dist/errors/MissingFile.js +7 -22
  381. package/dist/errors/NotFound.d.ts +1 -1
  382. package/dist/errors/NotFound.d.ts.map +1 -1
  383. package/dist/errors/NotFound.js +7 -22
  384. package/dist/errors/QueryError.d.ts +1 -1
  385. package/dist/errors/QueryError.d.ts.map +1 -1
  386. package/dist/errors/QueryError.js +6 -21
  387. package/dist/errors/TimestampsRequired.d.ts +2 -2
  388. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  389. package/dist/errors/TimestampsRequired.js +4 -19
  390. package/dist/errors/UnathorizedError.d.ts +1 -1
  391. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  392. package/dist/errors/UnathorizedError.js +7 -22
  393. package/dist/errors/ValidationError.d.ts +1 -1
  394. package/dist/errors/ValidationError.d.ts.map +1 -1
  395. package/dist/errors/ValidationError.js +8 -23
  396. package/dist/errors/index.d.ts +19 -19
  397. package/dist/errors/index.d.ts.map +1 -1
  398. package/dist/errors/index.js +20 -94
  399. package/dist/errors/types.d.ts +1 -1
  400. package/dist/errors/types.d.ts.map +1 -1
  401. package/dist/errors/types.js +2 -19
  402. package/dist/exports/auth.d.ts +5 -5
  403. package/dist/exports/auth.d.ts.map +1 -1
  404. package/dist/exports/auth.js +5 -44
  405. package/dist/exports/components/utilities.js +0 -1
  406. package/dist/exports/config.d.ts +10 -10
  407. package/dist/exports/config.d.ts.map +1 -1
  408. package/dist/exports/config.js +10 -59
  409. package/dist/exports/database.d.ts +22 -22
  410. package/dist/exports/database.d.ts.map +1 -1
  411. package/dist/exports/database.js +21 -108
  412. package/dist/exports/errors.d.ts +1 -1
  413. package/dist/exports/errors.d.ts.map +1 -1
  414. package/dist/exports/errors.js +2 -68
  415. package/dist/exports/fields/index.d.ts +2 -2
  416. package/dist/exports/fields/index.d.ts.map +1 -1
  417. package/dist/exports/fields/index.js +3 -26
  418. package/dist/exports/fields/validations.d.ts +1 -1
  419. package/dist/exports/fields/validations.d.ts.map +1 -1
  420. package/dist/exports/fields/validations.js +2 -19
  421. package/dist/exports/operations.d.ts +28 -28
  422. package/dist/exports/operations.d.ts.map +1 -1
  423. package/dist/exports/operations.js +29 -125
  424. package/dist/exports/types.d.ts +11 -11
  425. package/dist/exports/types.d.ts.map +1 -1
  426. package/dist/exports/types.js +4 -74
  427. package/dist/exports/utilities.d.ts +27 -27
  428. package/dist/exports/utilities.d.ts.map +1 -1
  429. package/dist/exports/utilities.js +28 -141
  430. package/dist/exports/versions.d.ts +9 -9
  431. package/dist/exports/versions.d.ts.map +1 -1
  432. package/dist/exports/versions.js +9 -45
  433. package/dist/fields/baseFields/baseBlockFields.d.ts +1 -1
  434. package/dist/fields/baseFields/baseBlockFields.d.ts.map +1 -1
  435. package/dist/fields/baseFields/baseBlockFields.js +6 -16
  436. package/dist/fields/baseFields/baseIDField.d.ts +1 -1
  437. package/dist/fields/baseFields/baseIDField.d.ts.map +1 -1
  438. package/dist/fields/baseFields/baseIDField.js +7 -21
  439. package/dist/fields/config/sanitize.d.ts +2 -2
  440. package/dist/fields/config/sanitize.d.ts.map +1 -1
  441. package/dist/fields/config/sanitize.js +28 -43
  442. package/dist/fields/config/sanitize.spec.js +25 -29
  443. package/dist/fields/config/schema.js +336 -431
  444. package/dist/fields/config/types.d.ts +5 -6
  445. package/dist/fields/config/types.d.ts.map +1 -1
  446. package/dist/fields/config/types.js +15 -69
  447. package/dist/fields/getDefaultValue.d.ts +1 -1
  448. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  449. package/dist/fields/getDefaultValue.js +2 -12
  450. package/dist/fields/hooks/afterChange/index.d.ts +3 -3
  451. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  452. package/dist/fields/hooks/afterChange/index.js +6 -16
  453. package/dist/fields/hooks/afterChange/promise.d.ts +4 -4
  454. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  455. package/dist/fields/hooks/afterChange/promise.js +14 -22
  456. package/dist/fields/hooks/afterChange/traverseFields.d.ts +4 -4
  457. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  458. package/dist/fields/hooks/afterChange/traverseFields.js +4 -14
  459. package/dist/fields/hooks/afterRead/index.d.ts +3 -3
  460. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  461. package/dist/fields/hooks/afterRead/index.js +6 -16
  462. package/dist/fields/hooks/afterRead/promise.d.ts +4 -4
  463. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  464. package/dist/fields/hooks/afterRead/promise.js +28 -38
  465. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
  466. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  467. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +5 -15
  468. package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -4
  469. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  470. package/dist/fields/hooks/afterRead/traverseFields.js +4 -14
  471. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +2 -12
  472. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +2 -12
  473. package/dist/fields/hooks/beforeChange/index.d.ts +3 -4
  474. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  475. package/dist/fields/hooks/beforeChange/index.js +8 -18
  476. package/dist/fields/hooks/beforeChange/promise.d.ts +4 -5
  477. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  478. package/dist/fields/hooks/beforeChange/promise.js +26 -35
  479. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +4 -5
  480. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  481. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -14
  482. package/dist/fields/hooks/beforeValidate/index.d.ts +3 -3
  483. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  484. package/dist/fields/hooks/beforeValidate/index.js +6 -16
  485. package/dist/fields/hooks/beforeValidate/promise.d.ts +4 -4
  486. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  487. package/dist/fields/hooks/beforeValidate/promise.js +30 -39
  488. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +4 -4
  489. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  490. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -14
  491. package/dist/fields/mergeBaseFields.d.ts +1 -1
  492. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  493. package/dist/fields/mergeBaseFields.js +8 -23
  494. package/dist/fields/sortableFieldTypes.js +2 -12
  495. package/dist/fields/validations.d.ts +6 -6
  496. package/dist/fields/validations.d.ts.map +1 -1
  497. package/dist/fields/validations.js +31 -97
  498. package/dist/fields/validations.spec.js +93 -87
  499. package/dist/globals/config/sanitize.d.ts +2 -2
  500. package/dist/globals/config/sanitize.d.ts.map +1 -1
  501. package/dist/globals/config/sanitize.js +19 -34
  502. package/dist/globals/config/schema.js +55 -70
  503. package/dist/globals/config/types.d.ts +11 -11
  504. package/dist/globals/config/types.d.ts.map +1 -1
  505. package/dist/globals/config/types.js +2 -5
  506. package/dist/globals/operations/docAccess.d.ts +3 -3
  507. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  508. package/dist/globals/operations/docAccess.js +12 -22
  509. package/dist/globals/operations/findOne.d.ts +2 -2
  510. package/dist/globals/operations/findOne.d.ts.map +1 -1
  511. package/dist/globals/operations/findOne.js +14 -29
  512. package/dist/globals/operations/findVersionByID.d.ts +3 -3
  513. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  514. package/dist/globals/operations/findVersionByID.js +18 -33
  515. package/dist/globals/operations/findVersions.d.ts +4 -5
  516. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  517. package/dist/globals/operations/findVersions.js +20 -35
  518. package/dist/globals/operations/local/findOne.d.ts +2 -4
  519. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  520. package/dist/globals/operations/local/findOne.js +11 -21
  521. package/dist/globals/operations/local/findVersionByID.d.ts +3 -5
  522. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  523. package/dist/globals/operations/local/findVersionByID.js +9 -19
  524. package/dist/globals/operations/local/findVersions.d.ts +4 -6
  525. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  526. package/dist/globals/operations/local/findVersions.js +9 -19
  527. package/dist/globals/operations/local/index.d.ts +5 -5
  528. package/dist/globals/operations/local/index.d.ts.map +1 -1
  529. package/dist/globals/operations/local/index.js +12 -27
  530. package/dist/globals/operations/local/restoreVersion.d.ts +2 -4
  531. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  532. package/dist/globals/operations/local/restoreVersion.js +9 -19
  533. package/dist/globals/operations/local/update.d.ts +2 -4
  534. package/dist/globals/operations/local/update.d.ts.map +1 -1
  535. package/dist/globals/operations/local/update.js +9 -19
  536. package/dist/globals/operations/restoreVersion.d.ts +3 -3
  537. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  538. package/dist/globals/operations/restoreVersion.js +16 -31
  539. package/dist/globals/operations/update.d.ts +9 -9
  540. package/dist/globals/operations/update.d.ts.map +1 -1
  541. package/dist/globals/operations/update.js +23 -38
  542. package/dist/index.d.ts +29 -29
  543. package/dist/index.d.ts.map +1 -1
  544. package/dist/index.js +50 -70
  545. package/dist/localization/middleware.js +2 -12
  546. package/dist/localization/sanitizeFallbackLocale.js +2 -12
  547. package/dist/preferences/deleteUserPreferences.d.ts +3 -3
  548. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  549. package/dist/preferences/deleteUserPreferences.js +2 -12
  550. package/dist/preferences/operations/delete.d.ts +2 -2
  551. package/dist/preferences/operations/delete.d.ts.map +1 -1
  552. package/dist/preferences/operations/delete.js +10 -25
  553. package/dist/preferences/operations/findOne.d.ts +2 -2
  554. package/dist/preferences/operations/findOne.d.ts.map +1 -1
  555. package/dist/preferences/operations/findOne.js +2 -12
  556. package/dist/preferences/operations/update.d.ts +1 -1
  557. package/dist/preferences/operations/update.d.ts.map +1 -1
  558. package/dist/preferences/operations/update.js +8 -23
  559. package/dist/preferences/preferencesCollection.d.ts +2 -2
  560. package/dist/preferences/preferencesCollection.d.ts.map +1 -1
  561. package/dist/preferences/preferencesCollection.js +8 -18
  562. package/dist/preferences/requestHandlers/delete.d.ts +1 -1
  563. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  564. package/dist/preferences/requestHandlers/delete.js +6 -21
  565. package/dist/preferences/requestHandlers/findOne.d.ts +1 -1
  566. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  567. package/dist/preferences/requestHandlers/findOne.js +6 -21
  568. package/dist/preferences/requestHandlers/update.d.ts +1 -1
  569. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  570. package/dist/preferences/requestHandlers/update.js +6 -21
  571. package/dist/preferences/types.d.ts +2 -2
  572. package/dist/preferences/types.d.ts.map +1 -1
  573. package/dist/preferences/types.js +2 -5
  574. package/dist/translations/extractTranslations.js +4 -14
  575. package/dist/translations/getLocalI18n.d.ts +1 -1
  576. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  577. package/dist/translations/getLocalI18n.js +5 -15
  578. package/dist/types/constants.js +2 -12
  579. package/dist/types/index.d.ts +8 -6
  580. package/dist/types/index.d.ts.map +1 -1
  581. package/dist/types/index.js +2 -12
  582. package/dist/uploads/canResizeImage.js +2 -12
  583. package/dist/uploads/cropImage.d.ts +3 -7
  584. package/dist/uploads/cropImage.d.ts.map +1 -1
  585. package/dist/uploads/cropImage.js +4 -28
  586. package/dist/uploads/deleteAssociatedFiles.d.ts +4 -4
  587. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  588. package/dist/uploads/deleteAssociatedFiles.js +11 -26
  589. package/dist/uploads/docWithFilenameExists.d.ts +1 -1
  590. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  591. package/dist/uploads/docWithFilenameExists.js +2 -12
  592. package/dist/uploads/fileExists.js +4 -19
  593. package/dist/uploads/formatFilesize.js +2 -12
  594. package/dist/uploads/generateFileData.d.ts +4 -4
  595. package/dist/uploads/generateFileData.d.ts.map +1 -1
  596. package/dist/uploads/generateFileData.js +42 -55
  597. package/dist/uploads/getBaseFields.d.ts +3 -3
  598. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  599. package/dist/uploads/getBaseFields.js +6 -16
  600. package/dist/uploads/getExternalFile.d.ts +2 -2
  601. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  602. package/dist/uploads/getExternalFile.js +5 -15
  603. package/dist/uploads/getFileByPath.d.ts +1 -1
  604. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  605. package/dist/uploads/getFileByPath.js +11 -25
  606. package/dist/uploads/getImageSize.d.ts +2 -2
  607. package/dist/uploads/getImageSize.d.ts.map +1 -1
  608. package/dist/uploads/getImageSize.js +7 -22
  609. package/dist/uploads/getSafeFilename.d.ts +1 -1
  610. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  611. package/dist/uploads/getSafeFilename.js +8 -23
  612. package/dist/uploads/imageResizer.d.ts +6 -5
  613. package/dist/uploads/imageResizer.d.ts.map +1 -1
  614. package/dist/uploads/imageResizer.js +29 -44
  615. package/dist/uploads/isImage.js +2 -12
  616. package/dist/uploads/mimeTypeValidator.d.ts +1 -1
  617. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  618. package/dist/uploads/mimeTypeValidator.js +2 -12
  619. package/dist/uploads/mimeTypeValidator.spec.js +11 -15
  620. package/dist/uploads/saveBufferToFile.d.ts +1 -1
  621. package/dist/uploads/saveBufferToFile.js +6 -21
  622. package/dist/uploads/types.d.ts +8 -2
  623. package/dist/uploads/types.d.ts.map +1 -1
  624. package/dist/uploads/types.js +2 -5
  625. package/dist/uploads/unlinkTempFiles.d.ts +3 -3
  626. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  627. package/dist/uploads/unlinkTempFiles.js +9 -22
  628. package/dist/uploads/uploadFiles.d.ts +3 -3
  629. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  630. package/dist/uploads/uploadFiles.js +6 -21
  631. package/dist/utilities/checkDuplicateCollections.d.ts +1 -1
  632. package/dist/utilities/checkDuplicateCollections.d.ts.map +1 -1
  633. package/dist/utilities/checkDuplicateCollections.js +4 -14
  634. package/dist/utilities/combineMerge.js +4 -19
  635. package/dist/utilities/commitTransaction.d.ts +1 -1
  636. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  637. package/dist/utilities/commitTransaction.js +4 -12
  638. package/dist/utilities/configToJSONSchema.d.ts +4 -4
  639. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  640. package/dist/utilities/configToJSONSchema.js +63 -81
  641. package/dist/utilities/configToJSONSchema.spec.js +5 -9
  642. package/dist/utilities/convertData.js +3 -23
  643. package/dist/utilities/createArrayFromCommaDelineated.js +2 -12
  644. package/dist/utilities/createLocalReq.d.ts +3 -3
  645. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  646. package/dist/utilities/createLocalReq.js +7 -16
  647. package/dist/utilities/deepCopyObject.js +2 -12
  648. package/dist/utilities/deepMerge.js +2 -12
  649. package/dist/utilities/fieldSchemaToJSON.d.ts +2 -2
  650. package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -1
  651. package/dist/utilities/fieldSchemaToJSON.js +2 -12
  652. package/dist/utilities/flattenTopLevelFields.d.ts +1 -1
  653. package/dist/utilities/flattenTopLevelFields.d.ts.map +1 -1
  654. package/dist/utilities/flattenTopLevelFields.js +6 -16
  655. package/dist/utilities/formatLabels.d.ts +2 -1
  656. package/dist/utilities/formatLabels.d.ts.map +1 -1
  657. package/dist/utilities/formatLabels.js +10 -70
  658. package/dist/utilities/formatLabels.spec.js +8 -12
  659. package/dist/utilities/getCSSVariable.js +2 -12
  660. package/dist/utilities/getEntityPolicies.d.ts +4 -4
  661. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  662. package/dist/utilities/getEntityPolicies.js +4 -14
  663. package/dist/utilities/getIDType.d.ts +2 -2
  664. package/dist/utilities/getIDType.d.ts.map +1 -1
  665. package/dist/utilities/getIDType.js +2 -12
  666. package/dist/utilities/getObjectDotNotation.js +2 -12
  667. package/dist/utilities/getUniqueListBy.js +2 -12
  668. package/dist/utilities/initTransaction.d.ts +1 -1
  669. package/dist/utilities/initTransaction.d.ts.map +1 -1
  670. package/dist/utilities/initTransaction.js +5 -12
  671. package/dist/utilities/isEntityHidden.d.ts +2 -2
  672. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  673. package/dist/utilities/isEntityHidden.js +2 -12
  674. package/dist/utilities/isNumber.js +2 -12
  675. package/dist/utilities/isPlainObject.d.ts +2 -0
  676. package/dist/utilities/isPlainObject.d.ts.map +1 -0
  677. package/dist/utilities/isPlainObject.js +25 -0
  678. package/dist/utilities/isValidID.d.ts.map +1 -1
  679. package/dist/utilities/isValidID.js +6 -20
  680. package/dist/utilities/isolateObjectProperty.js +2 -12
  681. package/dist/utilities/killTransaction.d.ts +1 -1
  682. package/dist/utilities/killTransaction.d.ts.map +1 -1
  683. package/dist/utilities/killTransaction.js +4 -12
  684. package/dist/utilities/logger.d.ts +6 -6
  685. package/dist/utilities/logger.d.ts.map +1 -1
  686. package/dist/utilities/logger.js +18 -37
  687. package/dist/utilities/mapAsync.js +2 -12
  688. package/dist/utilities/overwriteMerge.js +2 -12
  689. package/dist/utilities/parseCookies.js +4 -14
  690. package/dist/utilities/sanitizeInternalFields.js +2 -12
  691. package/dist/utilities/setsAreEqual.js +2 -12
  692. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  693. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  694. package/dist/utilities/telemetry/events/adminInit.js +7 -17
  695. package/dist/utilities/telemetry/events/serverInit.d.ts +1 -1
  696. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  697. package/dist/utilities/telemetry/events/serverInit.js +4 -14
  698. package/dist/utilities/telemetry/index.d.ts +3 -3
  699. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  700. package/dist/utilities/telemetry/index.js +18 -40
  701. package/dist/utilities/telemetry/oneWayHash.js +4 -14
  702. package/dist/utilities/timestamp.js +2 -12
  703. package/dist/utilities/toKebabCase.js +2 -12
  704. package/dist/utilities/wait.js +2 -12
  705. package/dist/utilities/wordBoundariesRegex.js +3 -13
  706. package/dist/versions/baseFields.d.ts +1 -1
  707. package/dist/versions/baseFields.d.ts.map +1 -1
  708. package/dist/versions/baseFields.js +7 -25
  709. package/dist/versions/buildCollectionFields.d.ts +2 -2
  710. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  711. package/dist/versions/buildCollectionFields.js +2 -12
  712. package/dist/versions/buildGlobalFields.d.ts +2 -2
  713. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  714. package/dist/versions/buildGlobalFields.js +12 -22
  715. package/dist/versions/deleteCollectionVersions.d.ts +3 -3
  716. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  717. package/dist/versions/deleteCollectionVersions.js +2 -12
  718. package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -1
  719. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  720. package/dist/versions/drafts/appendVersionToQueryKey.js +2 -12
  721. package/dist/versions/drafts/getQueryDraftsSort.js +2 -12
  722. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +4 -4
  723. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  724. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -27
  725. package/dist/versions/enforceMaxVersions.d.ts +3 -3
  726. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  727. package/dist/versions/enforceMaxVersions.js +2 -12
  728. package/dist/versions/getLatestCollectionVersion.d.ts +3 -3
  729. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  730. package/dist/versions/getLatestCollectionVersion.js +4 -14
  731. package/dist/versions/getLatestGlobalVersion.d.ts +3 -3
  732. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  733. package/dist/versions/getLatestGlobalVersion.js +5 -15
  734. package/dist/versions/getVersionsModelName.d.ts +2 -2
  735. package/dist/versions/getVersionsModelName.d.ts.map +1 -1
  736. package/dist/versions/getVersionsModelName.js +2 -12
  737. package/dist/versions/saveVersion.d.ts +4 -4
  738. package/dist/versions/saveVersion.d.ts.map +1 -1
  739. package/dist/versions/saveVersion.js +8 -23
  740. package/dist/versions/types.js +2 -5
  741. package/errors.d.ts +1 -1
  742. package/errors.js +2 -68
  743. package/graphql.d.ts +3 -0
  744. package/graphql.js +27 -0
  745. package/operations.d.ts +28 -28
  746. package/operations.js +29 -125
  747. package/package.json +17 -6
  748. package/types.d.ts +11 -11
  749. package/types.js +4 -74
  750. package/utilities.d.ts +27 -27
  751. package/utilities.js +28 -141
  752. package/versions.d.ts +9 -9
  753. package/versions.js +9 -45
  754. package/.eslintrc.js +0 -58
  755. package/dist/bundlers/mocks/db-mongodb.js +0 -3
  756. package/dist/bundlers/mocks/db-postgres.js +0 -13
  757. package/dist/bundlers/mocks/dotENV.js +0 -15
  758. package/dist/bundlers/mocks/emptyModule.js +0 -13
  759. package/dist/bundlers/mocks/fileMock.js +0 -13
  760. package/dist/bundlers/types.d.ts +0 -8
  761. package/dist/bundlers/types.d.ts.map +0 -1
  762. package/dist/bundlers/types.js +0 -6
  763. package/dist/express/middleware/errorHandler.d.ts +0 -2
  764. package/dist/express/middleware/errorHandler.d.ts.map +0 -1
  765. package/dist/express/middleware/errorHandler.js +0 -3
  766. package/dist/express/middleware/index.d.ts +0 -2
  767. package/dist/express/middleware/index.d.ts.map +0 -1
  768. package/dist/express/middleware/index.js +0 -3
  769. package/dist/globals/config/build.d.ts +0 -2
  770. package/dist/globals/config/build.d.ts.map +0 -1
  771. package/dist/globals/config/build.js +0 -3
  772. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -2
  773. package/dist/globals/graphql/resolvers/docAccess.d.ts.map +0 -1
  774. package/dist/globals/graphql/resolvers/docAccess.js +0 -3
@@ -1,36 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- configToJSONSchema: function() {
13
- return configToJSONSchema;
14
- },
15
- entityToJSONSchema: function() {
16
- return entityToJSONSchema;
17
- },
18
- fieldsToJSONSchema: function() {
19
- return fieldsToJSONSchema;
20
- },
21
- withNullableJSONSchemaType: function() {
22
- return withNullableJSONSchemaType;
23
- }
24
- });
25
- const _pluralize = require("pluralize");
26
- const _types = require("../fields/config/types");
27
- const _deepCopyObject = require("./deepCopyObject");
28
- const _formatLabels = require("./formatLabels");
1
+ import pluralize from 'pluralize';
2
+ const { singular } = pluralize;
3
+ import { fieldAffectsData, tabHasName } from '../fields/config/types.js';
4
+ import { deepCopyObject } from './deepCopyObject.js';
5
+ import { toWords } from './formatLabels.js';
29
6
  const fieldIsRequired = (field)=>{
30
7
  const isConditional = Boolean(field?.admin && field?.admin?.condition);
31
8
  if (isConditional) return false;
32
9
  const isMarkedRequired = 'required' in field && field.required === true;
33
- if ((0, _types.fieldAffectsData)(field) && isMarkedRequired) return true;
10
+ if (fieldAffectsData(field) && isMarkedRequired) return true;
34
11
  // if any subfields are required, this field is required
35
12
  if ('fields' in field && field.type !== 'array') {
36
13
  return field.fields.some((subField)=>fieldIsRequired(subField));
@@ -64,13 +41,15 @@ function generateEntitySchemas(entities) {
64
41
  return acc;
65
42
  }, {});
66
43
  return {
44
+ type: 'object',
67
45
  additionalProperties: false,
68
46
  properties,
69
- required: Object.keys(properties),
70
- type: 'object'
47
+ required: Object.keys(properties)
71
48
  };
72
49
  }
73
- function withNullableJSONSchemaType(fieldType, isRequired) {
50
+ /**
51
+ * Returns a JSON Schema Type with 'null' added if the field is not required.
52
+ */ export function withNullableJSONSchemaType(fieldType, isRequired) {
74
53
  const fieldTypes = [
75
54
  fieldType
76
55
  ];
@@ -78,23 +57,23 @@ function withNullableJSONSchemaType(fieldType, isRequired) {
78
57
  fieldTypes.push('null');
79
58
  return fieldTypes;
80
59
  }
81
- function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
60
+ export function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
82
61
  * Allows you to define new top-level interfaces that can be re-used in the output schema.
83
62
  */ interfaceNameDefinitions) {
84
63
  const requiredFieldNames = new Set();
85
64
  return {
86
65
  properties: Object.fromEntries(fields.reduce((fieldSchemas, field)=>{
87
- const isRequired = (0, _types.fieldAffectsData)(field) && fieldIsRequired(field);
66
+ const isRequired = fieldAffectsData(field) && fieldIsRequired(field);
88
67
  if (isRequired) requiredFieldNames.add(field.name);
89
68
  let fieldSchema;
90
69
  switch(field.type){
91
70
  case 'text':
92
71
  if (field.hasMany === true) {
93
72
  fieldSchema = {
73
+ type: withNullableJSONSchemaType('array', isRequired),
94
74
  items: {
95
75
  type: 'string'
96
- },
97
- type: withNullableJSONSchemaType('array', isRequired)
76
+ }
98
77
  };
99
78
  } else {
100
79
  fieldSchema = {
@@ -116,10 +95,10 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
116
95
  {
117
96
  if (field.hasMany === true) {
118
97
  fieldSchema = {
98
+ type: withNullableJSONSchemaType('array', isRequired),
119
99
  items: {
120
100
  type: 'number'
121
- },
122
- type: withNullableJSONSchemaType('array', isRequired)
101
+ }
123
102
  };
124
103
  } else {
125
104
  fieldSchema = {
@@ -160,10 +139,10 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
160
139
  } else {
161
140
  // Maintain backwards compatibility with existing rich text editors
162
141
  fieldSchema = {
142
+ type: withNullableJSONSchemaType('array', isRequired),
163
143
  items: {
164
144
  type: 'object'
165
- },
166
- type: withNullableJSONSchemaType('array', isRequired)
145
+ }
167
146
  };
168
147
  }
169
148
  break;
@@ -171,8 +150,8 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
171
150
  case 'radio':
172
151
  {
173
152
  fieldSchema = {
174
- enum: buildOptionEnums(field.options),
175
- type: withNullableJSONSchemaType('string', isRequired)
153
+ type: withNullableJSONSchemaType('string', isRequired),
154
+ enum: buildOptionEnums(field.options)
176
155
  };
177
156
  break;
178
157
  }
@@ -181,16 +160,16 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
181
160
  const optionEnums = buildOptionEnums(field.options);
182
161
  if (field.hasMany) {
183
162
  fieldSchema = {
163
+ type: withNullableJSONSchemaType('array', isRequired),
184
164
  items: {
185
- enum: optionEnums,
186
- type: 'string'
187
- },
188
- type: withNullableJSONSchemaType('array', isRequired)
165
+ type: 'string',
166
+ enum: optionEnums
167
+ }
189
168
  };
190
169
  } else {
191
170
  fieldSchema = {
192
- enum: optionEnums,
193
- type: withNullableJSONSchemaType('string', isRequired)
171
+ type: withNullableJSONSchemaType('string', isRequired),
172
+ enum: optionEnums
194
173
  };
195
174
  }
196
175
  break;
@@ -198,6 +177,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
198
177
  case 'point':
199
178
  {
200
179
  fieldSchema = {
180
+ type: withNullableJSONSchemaType('array', isRequired),
201
181
  items: [
202
182
  {
203
183
  type: 'number'
@@ -207,8 +187,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
207
187
  }
208
188
  ],
209
189
  maxItems: 2,
210
- minItems: 2,
211
- type: withNullableJSONSchemaType('array', isRequired)
190
+ minItems: 2
212
191
  };
213
192
  break;
214
193
  }
@@ -217,9 +196,11 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
217
196
  if (Array.isArray(field.relationTo)) {
218
197
  if (field.hasMany) {
219
198
  fieldSchema = {
199
+ type: withNullableJSONSchemaType('array', isRequired),
220
200
  items: {
221
201
  oneOf: field.relationTo.map((relation)=>{
222
202
  return {
203
+ type: 'object',
223
204
  additionalProperties: false,
224
205
  properties: {
225
206
  relationTo: {
@@ -239,17 +220,16 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
239
220
  required: [
240
221
  'value',
241
222
  'relationTo'
242
- ],
243
- type: 'object'
223
+ ]
244
224
  };
245
225
  })
246
- },
247
- type: withNullableJSONSchemaType('array', isRequired)
226
+ }
248
227
  };
249
228
  } else {
250
229
  fieldSchema = {
251
230
  oneOf: field.relationTo.map((relation)=>{
252
231
  return {
232
+ type: withNullableJSONSchemaType('object', isRequired),
253
233
  additionalProperties: false,
254
234
  properties: {
255
235
  relationTo: {
@@ -269,14 +249,14 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
269
249
  required: [
270
250
  'value',
271
251
  'relationTo'
272
- ],
273
- type: withNullableJSONSchemaType('object', isRequired)
252
+ ]
274
253
  };
275
254
  })
276
255
  };
277
256
  }
278
257
  } else if (field.hasMany) {
279
258
  fieldSchema = {
259
+ type: withNullableJSONSchemaType('array', isRequired),
280
260
  items: {
281
261
  oneOf: [
282
262
  {
@@ -286,8 +266,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
286
266
  $ref: `#/definitions/${field.relationTo}`
287
267
  }
288
268
  ]
289
- },
290
- type: withNullableJSONSchemaType('array', isRequired)
269
+ }
291
270
  };
292
271
  } else {
293
272
  fieldSchema = {
@@ -323,10 +302,12 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
323
302
  case 'blocks':
324
303
  {
325
304
  fieldSchema = {
305
+ type: withNullableJSONSchemaType('array', isRequired),
326
306
  items: {
327
307
  oneOf: field.blocks.map((block)=>{
328
308
  const blockFieldSchemas = fieldsToJSONSchema(collectionIDFieldTypes, block.fields, interfaceNameDefinitions);
329
309
  const blockSchema = {
310
+ type: 'object',
330
311
  additionalProperties: false,
331
312
  properties: {
332
313
  ...blockFieldSchemas.properties,
@@ -337,8 +318,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
337
318
  required: [
338
319
  'blockType',
339
320
  ...blockFieldSchemas.required
340
- ],
341
- type: 'object'
321
+ ]
342
322
  };
343
323
  if (block.interfaceName) {
344
324
  interfaceNameDefinitions.set(block.interfaceName, blockSchema);
@@ -348,20 +328,19 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
348
328
  }
349
329
  return blockSchema;
350
330
  })
351
- },
352
- type: withNullableJSONSchemaType('array', isRequired)
331
+ }
353
332
  };
354
333
  break;
355
334
  }
356
335
  case 'array':
357
336
  {
358
337
  fieldSchema = {
338
+ type: withNullableJSONSchemaType('array', isRequired),
359
339
  items: {
360
- additionalProperties: false,
361
340
  type: 'object',
341
+ additionalProperties: false,
362
342
  ...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions)
363
- },
364
- type: withNullableJSONSchemaType('array', isRequired)
343
+ }
365
344
  };
366
345
  if (field.interfaceName) {
367
346
  interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
@@ -387,11 +366,11 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
387
366
  {
388
367
  field.tabs.forEach((tab)=>{
389
368
  const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, tab.fields, interfaceNameDefinitions);
390
- if ((0, _types.tabHasName)(tab)) {
369
+ if (tabHasName(tab)) {
391
370
  // could have interface
392
371
  fieldSchemas.set(tab.name, {
393
- additionalProperties: false,
394
372
  type: 'object',
373
+ additionalProperties: false,
395
374
  ...childSchema
396
375
  });
397
376
  requiredFieldNames.add(tab.name);
@@ -409,8 +388,8 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
409
388
  case 'group':
410
389
  {
411
390
  fieldSchema = {
412
- additionalProperties: false,
413
391
  type: 'object',
392
+ additionalProperties: false,
414
393
  ...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions)
415
394
  };
416
395
  if (field.interfaceName) {
@@ -426,7 +405,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
426
405
  break;
427
406
  }
428
407
  }
429
- if (fieldSchema && (0, _types.fieldAffectsData)(field)) {
408
+ if (fieldSchema && fieldAffectsData(field)) {
430
409
  fieldSchemas.set(field.name, fieldSchema);
431
410
  }
432
411
  return fieldSchemas;
@@ -434,15 +413,16 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
434
413
  required: Array.from(requiredFieldNames)
435
414
  };
436
415
  }
437
- function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType) {
438
- const entity = (0, _deepCopyObject.deepCopyObject)(incomingEntity);
439
- const title = entity.typescript?.interface ? entity.typescript.interface : (0, _pluralize.singular)((0, _formatLabels.toWords)(entity.slug, true));
416
+ // This function is part of the public API and is exported through payload/utilities
417
+ export function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType) {
418
+ const entity = deepCopyObject(incomingEntity);
419
+ const title = entity.typescript?.interface ? entity.typescript.interface : singular(toWords(entity.slug, true));
440
420
  const idField = {
441
421
  name: 'id',
442
- required: true,
443
- type: defaultIDType
422
+ type: defaultIDType,
423
+ required: true
444
424
  };
445
- const customIdField = entity.fields.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
425
+ const customIdField = entity.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
446
426
  if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {
447
427
  customIdField.required = true;
448
428
  } else {
@@ -451,7 +431,7 @@ function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, de
451
431
  // mark timestamp fields required
452
432
  if ('timestamps' in entity && entity.timestamps !== false) {
453
433
  entity.fields = entity.fields.map((field)=>{
454
- if ((0, _types.fieldAffectsData)(field) && (field.name === 'createdAt' || field.name === 'updatedAt')) {
434
+ if (fieldAffectsData(field) && (field.name === 'createdAt' || field.name === 'updatedAt')) {
455
435
  return {
456
436
  ...field,
457
437
  required: true
@@ -476,13 +456,15 @@ function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, de
476
456
  return acc;
477
457
  }, {});
478
458
  return {
459
+ type: 'object',
479
460
  additionalProperties: false,
480
461
  title,
481
- type: 'object',
482
462
  ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions)
483
463
  };
484
464
  }
485
- function configToJSONSchema(config, defaultIDType) {
465
+ /**
466
+ * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.
467
+ */ export function configToJSONSchema(config, defaultIDType) {
486
468
  // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here
487
469
  const interfaceNameDefinitions = new Map();
488
470
  // Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global
@@ -501,6 +483,7 @@ function configToJSONSchema(config, defaultIDType) {
501
483
  ...Object.fromEntries(interfaceNameDefinitions)
502
484
  },
503
485
  // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type
486
+ type: 'object',
504
487
  properties: {
505
488
  collections: generateEntitySchemas(config.collections || []),
506
489
  globals: generateEntitySchemas(config.globals || [])
@@ -509,9 +492,8 @@ function configToJSONSchema(config, defaultIDType) {
509
492
  'collections',
510
493
  'globals'
511
494
  ],
512
- title: 'Config',
513
- type: 'object'
495
+ title: 'Config'
514
496
  };
515
497
  }
516
498
 
517
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZHNUb0pTT05TY2hlbWEoXG4gIGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9LFxuICBmaWVsZHM6IEZpZWxkW10sXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGRlZmluZSBuZXcgdG9wLWxldmVsIGludGVyZmFjZXMgdGhhdCBjYW4gYmUgcmUtdXNlZCBpbiB0aGUgb3V0cHV0IHNjaGVtYS5cbiAgICovXG4gIGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+LFxuKToge1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgW2s6IHN0cmluZ106IEpTT05TY2hlbWE0XG4gIH1cbiAgcmVxdWlyZWQ6IHN0cmluZ1tdXG59IHtcbiAgY29uc3QgcmVxdWlyZWRGaWVsZE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KClcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIGZpZWxkcy5yZWR1Y2UoKGZpZWxkU2NoZW1hcywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkSXNSZXF1aXJlZChmaWVsZClcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHJlcXVpcmVkRmllbGROYW1lcy5hZGQoZmllbGQubmFtZSlcblxuICAgICAgICBsZXQgZmllbGRTY2hlbWE6IEpTT05TY2hlbWE0XG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgICBjYXNlICdjb2RlJzpcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ251bWJlcicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2Jvb2xlYW4nLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogWydvYmplY3QnLCAnYXJyYXknLCAnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJywgJ251bGwnXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IGZpZWxkLmVkaXRvci5vdXRwdXRTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyByaWNoIHRleHQgZWRpdG9yc1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JhZGlvJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGVudW06IGJ1aWxkT3B0aW9uRW51bXMoZmllbGQub3B0aW9ucyksXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25FbnVtcyA9IGJ1aWxkT3B0aW9uRW51bXMoZmllbGQub3B0aW9ucylcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgZW51bTogb3B0aW9uRW51bXMsXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG1heEl0ZW1zOiAyLFxuICAgICAgICAgICAgICBtaW5JdGVtczogMixcbiAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5yZWxhdGlvblRvLm1hcCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3ZhbHVlJywgJ3JlbGF0aW9uVG8nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnb2JqZWN0JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQucmVsYXRpb25Ub31gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1JlcXVpcmVkKSBmaWVsZFNjaGVtYS5vbmVPZi5wdXNoKHsgdHlwZTogJ251bGwnIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tGaWVsZFNjaGVtYXMgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1NjaGVtYTogSlNPTlNjaGVtYTQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmJsb2NrRmllbGRTY2hlbWFzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tUeXBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogYmxvY2suc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWydibG9ja1R5cGUnLCAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoYmxvY2suaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGJsb2NrLmludGVyZmFjZU5hbWUsIGJsb2NrU2NoZW1hKVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtibG9jay5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrU2NoZW1hXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQuaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGZpZWxkLmludGVyZmFjZU5hbWUsIGZpZWxkU2NoZW1hKVxuXG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQuaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQocHJvcE5hbWUsIHByb3BTY2hlbWEpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChwcm9wTmFtZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgICAgICBmaWVsZC50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgIHRhYi5maWVsZHMsXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXZlIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQodGFiLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgLi4uY2hpbGRTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkTmFtZXMuYWRkKHRhYi5uYW1lKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoaWxkU2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wTmFtZSwgcHJvcFNjaGVtYV0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQocHJvcE5hbWUsIHByb3BTY2hlbWEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjaGlsZFNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKChwcm9wTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChwcm9wTmFtZSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZmllbGQuZmllbGRzLCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQuaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGZpZWxkLmludGVyZmFjZU5hbWUsIGZpZWxkU2NoZW1hKVxuXG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQuaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkU2NoZW1hICYmIGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICAgICAgZmllbGRTY2hlbWFzLnNldChmaWVsZC5uYW1lLCBmaWVsZFNjaGVtYSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZFNjaGVtYXNcbiAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4oKSksXG4gICAgKSxcbiAgICByZXF1aXJlZDogQXJyYXkuZnJvbShyZXF1aXJlZEZpZWxkTmFtZXMpLFxuICB9XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBhbmQgaXMgZXhwb3J0ZWQgdGhyb3VnaCBwYXlsb2FkL3V0aWxpdGllc1xuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVRvSlNPTlNjaGVtYShcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gIGluY29taW5nRW50aXR5OiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnLFxuICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PixcbiAgZGVmYXVsdElEVHlwZTogJ251bWJlcicgfCAndGV4dCcsXG4pOiBKU09OU2NoZW1hNCB7XG4gIGNvbnN0IGVudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyA9IGRlZXBDb3B5T2JqZWN0KGluY29taW5nRW50aXR5KVxuICBjb25zdCB0aXRsZSA9IGVudGl0eS50eXBlc2NyaXB0Py5pbnRlcmZhY2VcbiAgICA/IGVudGl0eS50eXBlc2NyaXB0LmludGVyZmFjZVxuICAgIDogc2luZ3VsYXIodG9Xb3JkcyhlbnRpdHkuc2x1ZywgdHJ1ZSkpXG5cbiAgY29uc3QgaWRGaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhID0geyBuYW1lOiAnaWQnLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogZGVmYXVsdElEVHlwZSBhcyAndGV4dCcgfVxuICBjb25zdCBjdXN0b21JZEZpZWxkID0gZW50aXR5LmZpZWxkcy5maW5kKFxuICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgKSBhcyBGaWVsZEFmZmVjdGluZ0RhdGFcblxuICBpZiAoY3VzdG9tSWRGaWVsZCAmJiBjdXN0b21JZEZpZWxkLnR5cGUgIT09ICdncm91cCcgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAndGFiJykge1xuICAgIGN1c3RvbUlkRmllbGQucmVxdWlyZWQgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgZW50aXR5LmZpZWxkcy51bnNoaWZ0KGlkRmllbGQpXG4gIH1cblxuICAvLyBtYXJrIHRpbWVzdGFtcCBmaWVsZHMgcmVxdWlyZWRcbiAgaWYgKCd0aW1lc3RhbXBzJyBpbiBlbnRpdHkgJiYgZW50aXR5LnRpbWVzdGFtcHMgIT09IGZhbHNlKSB7XG4gICAgZW50aXR5LmZpZWxkcyA9IGVudGl0eS5maWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIChmaWVsZC5uYW1lID09PSAnY3JlYXRlZEF0JyB8fCBmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0JykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkXG4gICAgfSlcbiAgfVxuXG4gIGlmICgnYXV0aCcgaW4gZW50aXR5ICYmIGVudGl0eS5hdXRoICYmICFlbnRpdHkuYXV0aD8uZGlzYWJsZUxvY2FsU3RyYXRlZ3kpIHtcbiAgICBlbnRpdHkuZmllbGRzLnB1c2goe1xuICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICB9KVxuICB9XG5cbiAgLy8gdXNlZCBmb3IgcmVsYXRpb25zaGlwIGZpZWxkcywgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGEgc3RyaW5nIG9yIG51bWJlciB0eXBlIGZvciB0aGUgSURcbiAgY29uc3QgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0gPSBjb25maWcuY29sbGVjdGlvbnMucmVkdWNlKFxuICAgIChhY2MsIGNvbGxlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkID0gY29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiAnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgIClcblxuICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBkZWZhdWx0SURUeXBlID09PSAndGV4dCcgPyAnc3RyaW5nJyA6ICdudW1iZXInXG5cbiAgICAgIGlmIChjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCkge1xuICAgICAgICBhY2NbY29sbGVjdGlvbi5zbHVnXSA9IGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAnc3RyaW5nJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSxcbiAgICB7fSxcbiAgKVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIC4uLmZpZWxkc1RvSlNPTlNjaGVtYShjb2xsZWN0aW9uSURGaWVsZFR5cGVzLCBlbnRpdHkuZmllbGRzLCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpLFxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBUeXBlU2NyaXB0IHR5cGVzIChwYXlsb2FkLXR5cGVzLnRzKSB3aXRoIHRoZSBwYXlsb2FkIGdlbmVyYXRlOnR5cGVzIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBkZWZhdWx0SURUeXBlPzogJ251bWJlcicgfCAndGV4dCcsXG4pOiBKU09OU2NoZW1hNCB7XG4gIC8vIGEgbXV0YWJsZSBNYXAgdG8gc3RvcmUgY3VzdG9tIHRvcC1sZXZlbCBgaW50ZXJmYWNlTmFtZWAgdHlwZXMuIEZpZWxkcyB3aXRoIGFuIGBpbnRlcmZhY2VOYW1lYCBwcm9wZXJ0eSB3aWxsIGJlIG1vdmVkIHRvIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMgaGVyZVxuICBjb25zdCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PiA9IG5ldyBNYXAoKVxuXG4gIC8vIENvbGxlY3Rpb25zIGFuZCBHbG9iYWxzIGhhdmUgdG8gYmUgbW92ZWQgdG8gdGhlIHRvcC1sZXZlbCBkZWZpbml0aW9ucyBhcyB3ZWxsLiBSZWFzb246IFRoZSB0b3AtbGV2ZWwgdHlwZSB3aWxsIGJlIHRoZSBgQ29uZmlnYCB0eXBlIC0gd2UgZG9uJ3Qgd2FudCBhbGwgY29sbGVjdGlvbiBhbmQgZ2xvYmFsXG4gIC8vIHR5cGVzIHRvIGJlIGlubGluZWQgaW5zaWRlIHRoZSBgQ29uZmlnYCB0eXBlXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgLy8gVGhlc2UgcHJvcGVydGllcyBoZXJlIHdpbGwgYmUgdmVyeSBzaW1wbGUsIGFzIGFsbCB0aGUgY29tcGxleGl0eSBpcyBpbiB0aGUgZGVmaW5pdGlvbnMuIFRoZXNlIGFyZSBqdXN0IHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgdG9wLWxldmVsIGBDb25maWdgIHR5cGVcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBjb2xsZWN0aW9uczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5jb2xsZWN0aW9ucyB8fCBbXSksXG4gICAgICBnbG9iYWxzOiBnZW5lcmF0ZUVudGl0eVNjaGVtYXMoY29uZmlnLmdsb2JhbHMgfHwgW10pLFxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnY29sbGVjdGlvbnMnLCAnZ2xvYmFscyddLFxuICAgIHRpdGxlOiAnQ29uZmlnJyxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNvbmZpZ1RvSlNPTlNjaGVtYSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImZpZWxkc1RvSlNPTlNjaGVtYSIsIndpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlIiwiZmllbGRJc1JlcXVpcmVkIiwiZmllbGQiLCJpc0NvbmRpdGlvbmFsIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiaXNNYXJrZWRSZXF1aXJlZCIsInJlcXVpcmVkIiwiZmllbGRBZmZlY3RzRGF0YSIsInR5cGUiLCJmaWVsZHMiLCJzb21lIiwic3ViRmllbGQiLCJ0YWJzIiwidGFiIiwiYnVpbGRPcHRpb25FbnVtcyIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJ2YWx1ZSIsImdlbmVyYXRlRW50aXR5U2NoZW1hcyIsImVudGl0aWVzIiwicHJvcGVydGllcyIsInJlZHVjZSIsImFjYyIsInNsdWciLCIkcmVmIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRUeXBlIiwiaXNSZXF1aXJlZCIsImZpZWxkVHlwZXMiLCJwdXNoIiwiY29sbGVjdGlvbklERmllbGRUeXBlcyIsImludGVyZmFjZU5hbWVEZWZpbml0aW9ucyIsInJlcXVpcmVkRmllbGROYW1lcyIsIlNldCIsImZyb21FbnRyaWVzIiwiZmllbGRTY2hlbWFzIiwiYWRkIiwibmFtZSIsImZpZWxkU2NoZW1hIiwiaGFzTWFueSIsIml0ZW1zIiwiZWRpdG9yIiwib3V0cHV0U2NoZW1hIiwiZW51bSIsIm9wdGlvbkVudW1zIiwibWF4SXRlbXMiLCJtaW5JdGVtcyIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJvbmVPZiIsInJlbGF0aW9uIiwiY29uc3QiLCJibG9ja3MiLCJibG9jayIsImJsb2NrRmllbGRTY2hlbWFzIiwiYmxvY2tTY2hlbWEiLCJibG9ja1R5cGUiLCJpbnRlcmZhY2VOYW1lIiwic2V0IiwiY2hpbGRTY2hlbWEiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInByb3BOYW1lIiwicHJvcFNjaGVtYSIsInRhYkhhc05hbWUiLCJNYXAiLCJmcm9tIiwiY29uZmlnIiwiaW5jb21pbmdFbnRpdHkiLCJkZWZhdWx0SURUeXBlIiwiZW50aXR5IiwiZGVlcENvcHlPYmplY3QiLCJ0aXRsZSIsInR5cGVzY3JpcHQiLCJpbnRlcmZhY2UiLCJzaW5ndWxhciIsInRvV29yZHMiLCJpZEZpZWxkIiwiY3VzdG9tSWRGaWVsZCIsImZpbmQiLCJ1bnNoaWZ0IiwidGltZXN0YW1wcyIsImF1dGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsImNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbiIsImN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkIiwiZW50aXR5RGVmaW5pdGlvbnMiLCJnbG9iYWxzIiwiZGVmaW5pdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBOGdCZ0JBLGtCQUFrQjtlQUFsQkE7O0lBdkVBQyxrQkFBa0I7ZUFBbEJBOztJQXZYQUMsa0JBQWtCO2VBQWxCQTs7SUFWQUMsMEJBQTBCO2VBQTFCQTs7OzJCQXBFUzt1QkFPb0I7Z0NBQ2Q7OEJBQ1A7QUFFeEIsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE1BQU1DLGdCQUFnQkMsUUFBUUYsT0FBT0csU0FBU0gsT0FBT0csT0FBT0M7SUFDNUQsSUFBSUgsZUFBZSxPQUFPO0lBRTFCLE1BQU1JLG1CQUFtQixjQUFjTCxTQUFTQSxNQUFNTSxRQUFRLEtBQUs7SUFDbkUsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNQLFVBQVVLLGtCQUFrQixPQUFPO0lBRXhELHdEQUF3RDtJQUN4RCxJQUFJLFlBQVlMLFNBQVNBLE1BQU1RLElBQUks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
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHBsdXJhbGl6ZSBmcm9tICdwbHVyYWxpemUnXG5jb25zdCB7IHNpbmd1bGFyIH0gPSBwbHVyYWxpemVcblxuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcy5kLnRzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgRmllbGRBZmZlY3RpbmdEYXRhLCBPcHRpb24gfSBmcm9tICcuLi9maWVsZHMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzLmQudHMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUgfSBmcm9tICcuLi9maWVsZHMvY29uZmlnL3R5cGVzLmpzJ1xuaW1wb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuL2RlZXBDb3B5T2JqZWN0LmpzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4vZm9ybWF0TGFiZWxzLmpzJ1xuXG5jb25zdCBmaWVsZElzUmVxdWlyZWQgPSAoZmllbGQ6IEZpZWxkKSA9PiB7XG4gIGNvbnN0IGlzQ29uZGl0aW9uYWwgPSBCb29sZWFuKGZpZWxkPy5hZG1pbiAmJiBmaWVsZD8uYWRtaW4/LmNvbmRpdGlvbilcbiAgaWYgKGlzQ29uZGl0aW9uYWwpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGlzTWFya2VkUmVxdWlyZWQgPSAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkID09PSB0cnVlXG4gIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBpc01hcmtlZFJlcXVpcmVkKSByZXR1cm4gdHJ1ZVxuXG4gIC8vIGlmIGFueSBzdWJmaWVsZHMgYXJlIHJlcXVpcmVkLCB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkXG4gIGlmICgnZmllbGRzJyBpbiBmaWVsZCAmJiBmaWVsZC50eXBlICE9PSAnYXJyYXknKSB7XG4gICAgcmV0dXJuIGZpZWxkLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgfVxuXG4gIC8vIGlmIGFueSB0YWIgc3ViZmllbGRzIGhhdmUgcmVxdWlyZWQgZmllbGRzLCB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkXG4gIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICByZXR1cm4gZmllbGQudGFicy5zb21lKCh0YWIpID0+IHtcbiAgICAgIGlmICgnbmFtZScgaW4gdGFiKSB7XG4gICAgICAgIHJldHVybiB0YWIuZmllbGRzLnNvbWUoKHN1YkZpZWxkKSA9PiBmaWVsZElzUmVxdWlyZWQoc3ViRmllbGQpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBidWlsZE9wdGlvbkVudW1zKG9wdGlvbnM6IE9wdGlvbltdKTogc3RyaW5nW10ge1xuICByZXR1cm4gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIG9wdGlvbikge1xuICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25cbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKFxuICBlbnRpdGllczogKFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcpW10sXG4pOiBKU09OU2NoZW1hNCB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBbLi4uZW50aXRpZXNdLnJlZHVjZSgoYWNjLCB7IHNsdWcgfSkgPT4ge1xuICAgIGFjY1tzbHVnXSA9IHtcbiAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7c2x1Z31gLFxuICAgIH1cblxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgcHJvcGVydGllcyxcbiAgICByZXF1aXJlZDogT2JqZWN0LmtleXMocHJvcGVydGllcyksXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgSlNPTiBTY2hlbWEgVHlwZSB3aXRoICdudWxsJyBhZGRlZCBpZiB0aGUgZmllbGQgaXMgbm90IHJlcXVpcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gIGZpZWxkVHlwZTogSlNPTlNjaGVtYTRUeXBlTmFtZSxcbiAgaXNSZXF1aXJlZDogYm9vbGVhbixcbik6IEpTT05TY2hlbWE0VHlwZU5hbWUgfCBKU09OU2NoZW1hNFR5cGVOYW1lW10ge1xuICBjb25zdCBmaWVsZFR5cGVzID0gW2ZpZWxkVHlwZV1cbiAgaWYgKGlzUmVxdWlyZWQpIHJldHVybiBmaWVsZFR5cGVcbiAgZmllbGRUeXBlcy5wdXNoKCdudWxsJylcbiAgcmV0dXJuIGZpZWxkVHlwZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0sXG4gIGZpZWxkczogRmllbGRbXSxcbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gZGVmaW5lIG5ldyB0b3AtbGV2ZWwgaW50ZXJmYWNlcyB0aGF0IGNhbiBiZSByZS11c2VkIGluIHRoZSBvdXRwdXQgc2NoZW1hLlxuICAgKi9cbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3Iub3V0cHV0U2NoZW1hKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBNYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIHJpY2ggdGV4dCBlZGl0b3JzXG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncmFkaW8nOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICBlbnVtOiBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbkVudW1zID0gYnVpbGRPcHRpb25FbnVtcyhmaWVsZC5vcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25FbnVtcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgZW51bTogb3B0aW9uRW51bXMsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG1heEl0ZW1zOiAyLFxuICAgICAgICAgICAgICBtaW5JdGVtczogMixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzoge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdvYmplY3QnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3ZhbHVlJywgJ3JlbGF0aW9uVG8nXSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQucmVsYXRpb25Ub31gLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQucmVsYXRpb25Ub31gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUmVxdWlyZWQpIGZpZWxkU2NoZW1hLm9uZU9mLnB1c2goeyB0eXBlOiAnbnVsbCcgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tGaWVsZFNjaGVtYXMgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1NjaGVtYTogSlNPTlNjaGVtYTQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJsb2NrLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnYmxvY2tUeXBlJywgLi4uYmxvY2tGaWVsZFNjaGVtYXMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoYmxvY2suaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGJsb2NrLmludGVyZmFjZU5hbWUsIGJsb2NrU2NoZW1hKVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtibG9jay5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrU2NoZW1hXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5pbnRlcmZhY2VOYW1lKSB7XG4gICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucy5zZXQoZmllbGQuaW50ZXJmYWNlTmFtZSwgZmllbGRTY2hlbWEpXG5cbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoaWxkU2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wTmFtZSwgcHJvcFNjaGVtYV0pID0+IHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWFzLnNldChwcm9wTmFtZSwgcHJvcFNjaGVtYSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjaGlsZFNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKChwcm9wTmFtZSkgPT4ge1xuICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkTmFtZXMuYWRkKHByb3BOYW1lKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAndGFicyc6IHtcbiAgICAgICAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgICAgdGFiLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHRhYkhhc05hbWUodGFiKSkge1xuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhdmUgaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWFzLnNldCh0YWIubmFtZSwge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAuLi5jaGlsZFNjaGVtYSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQodGFiLm5hbWUpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZmllbGRTY2hlbWFzLnNldChwcm9wTmFtZSwgcHJvcFNjaGVtYSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkTmFtZXMuYWRkKHByb3BOYW1lKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgIC4uLmZpZWxkc1RvSlNPTlNjaGVtYShjb2xsZWN0aW9uSURGaWVsZFR5cGVzLCBmaWVsZC5maWVsZHMsIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5pbnRlcmZhY2VOYW1lKSB7XG4gICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucy5zZXQoZmllbGQuaW50ZXJmYWNlTmFtZSwgZmllbGRTY2hlbWEpXG5cbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGRTY2hlbWEgJiYgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KGZpZWxkLm5hbWUsIGZpZWxkU2NoZW1hKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkU2NoZW1hc1xuICAgICAgfSwgbmV3IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PigpKSxcbiAgICApLFxuICAgIHJlcXVpcmVkOiBBcnJheS5mcm9tKHJlcXVpcmVkRmllbGROYW1lcyksXG4gIH1cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyBleHBvcnRlZCB0aHJvdWdoIHBheWxvYWQvdXRpbGl0aWVzXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgaW5jb21pbmdFbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcsXG4gIGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+LFxuICBkZWZhdWx0SURUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0Jyxcbik6IEpTT05TY2hlbWE0IHtcbiAgY29uc3QgZW50aXR5OiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnID0gZGVlcENvcHlPYmplY3QoaW5jb21pbmdFbnRpdHkpXG4gIGNvbnN0IHRpdGxlID0gZW50aXR5LnR5cGVzY3JpcHQ/LmludGVyZmFjZVxuICAgID8gZW50aXR5LnR5cGVzY3JpcHQuaW50ZXJmYWNlXG4gICAgOiBzaW5ndWxhcih0b1dvcmRzKGVudGl0eS5zbHVnLCB0cnVlKSlcblxuICBjb25zdCBpZEZpZWxkOiBGaWVsZEFmZmVjdGluZ0RhdGEgPSB7IG5hbWU6ICdpZCcsIHR5cGU6IGRlZmF1bHRJRFR5cGUgYXMgJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9XG4gIGNvbnN0IGN1c3RvbUlkRmllbGQgPSBlbnRpdHkuZmllbGRzLmZpbmQoXG4gICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICApIGFzIEZpZWxkQWZmZWN0aW5nRGF0YVxuXG4gIGlmIChjdXN0b21JZEZpZWxkICYmIGN1c3RvbUlkRmllbGQudHlwZSAhPT0gJ2dyb3VwJyAmJiBjdXN0b21JZEZpZWxkLnR5cGUgIT09ICd0YWInKSB7XG4gICAgY3VzdG9tSWRGaWVsZC5yZXF1aXJlZCA9IHRydWVcbiAgfSBlbHNlIHtcbiAgICBlbnRpdHkuZmllbGRzLnVuc2hpZnQoaWRGaWVsZClcbiAgfVxuXG4gIC8vIG1hcmsgdGltZXN0YW1wIGZpZWxkcyByZXF1aXJlZFxuICBpZiAoJ3RpbWVzdGFtcHMnIGluIGVudGl0eSAmJiBlbnRpdHkudGltZXN0YW1wcyAhPT0gZmFsc2UpIHtcbiAgICBlbnRpdHkuZmllbGRzID0gZW50aXR5LmZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgKGZpZWxkLm5hbWUgPT09ICdjcmVhdGVkQXQnIHx8IGZpZWxkLm5hbWUgPT09ICd1cGRhdGVkQXQnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmllbGRcbiAgICB9KVxuICB9XG5cbiAgaWYgKCdhdXRoJyBpbiBlbnRpdHkgJiYgZW50aXR5LmF1dGggJiYgIWVudGl0eS5hdXRoPy5kaXNhYmxlTG9jYWxTdHJhdGVneSkge1xuICAgIGVudGl0eS5maWVsZHMucHVzaCh7XG4gICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgIH0pXG4gIH1cblxuICAvLyB1c2VkIGZvciByZWxhdGlvbnNoaXAgZmllbGRzLCB0byBkZXRlcm1pbmUgd2hldGhlciB0byB1c2UgYSBzdHJpbmcgb3IgbnVtYmVyIHR5cGUgZm9yIHRoZSBJRFxuICBjb25zdCBjb2xsZWN0aW9uSURGaWVsZFR5cGVzOiB7IFtrZXk6IHN0cmluZ106ICdudW1iZXInIHwgJ3N0cmluZycgfSA9IGNvbmZpZy5jb2xsZWN0aW9ucy5yZWR1Y2UoXG4gICAgKGFjYywgY29sbGVjdGlvbikgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tQ29sbGVjdGlvbklkRmllbGQgPSBjb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAoZmllbGQpID0+ICduYW1lJyBpbiBmaWVsZCAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgKVxuXG4gICAgICBhY2NbY29sbGVjdGlvbi5zbHVnXSA9IGRlZmF1bHRJRFR5cGUgPT09ICd0ZXh0JyA/ICdzdHJpbmcnIDogJ251bWJlcidcblxuICAgICAgaWYgKGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkKSB7XG4gICAgICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gY3VzdG9tQ29sbGVjdGlvbklkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICdzdHJpbmcnXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2NcbiAgICB9LFxuICAgIHt9LFxuICApXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgdGl0bGUsXG4gICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsIGVudGl0eS5maWVsZHMsIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyksXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIFR5cGVTY3JpcHQgdHlwZXMgKHBheWxvYWQtdHlwZXMudHMpIHdpdGggdGhlIHBheWxvYWQgZ2VuZXJhdGU6dHlwZXMgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ1RvSlNPTlNjaGVtYShcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gIGRlZmF1bHRJRFR5cGU/OiAnbnVtYmVyJyB8ICd0ZXh0Jyxcbik6IEpTT05TY2hlbWE0IHtcbiAgLy8gYSBtdXRhYmxlIE1hcCB0byBzdG9yZSBjdXN0b20gdG9wLWxldmVsIGBpbnRlcmZhY2VOYW1lYCB0eXBlcy4gRmllbGRzIHdpdGggYW4gYGludGVyZmFjZU5hbWVgIHByb3BlcnR5IHdpbGwgYmUgbW92ZWQgdG8gdGhlIHRvcC1sZXZlbCBkZWZpbml0aW9ucyBoZXJlXG4gIGNvbnN0IGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+ID0gbmV3IE1hcCgpXG5cbiAgLy8gQ29sbGVjdGlvbnMgYW5kIEdsb2JhbHMgaGF2ZSB0byBiZSBtb3ZlZCB0byB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zIGFzIHdlbGwuIFJlYXNvbjogVGhlIHRvcC1sZXZlbCB0eXBlIHdpbGwgYmUgdGhlIGBDb25maWdgIHR5cGUgLSB3ZSBkb24ndCB3YW50IGFsbCBjb2xsZWN0aW9uIGFuZCBnbG9iYWxcbiAgLy8gdHlwZXMgdG8gYmUgaW5saW5lZCBpbnNpZGUgdGhlIGBDb25maWdgIHR5cGVcbiAgY29uc3QgZW50aXR5RGVmaW5pdGlvbnM6IHsgW2s6IHN0cmluZ106IEpTT05TY2hlbWE0IH0gPSBbXG4gICAgLi4uY29uZmlnLmdsb2JhbHMsXG4gICAgLi4uY29uZmlnLmNvbGxlY3Rpb25zLFxuICBdLnJlZHVjZSgoYWNjLCBlbnRpdHkpID0+IHtcbiAgICBhY2NbZW50aXR5LnNsdWddID0gZW50aXR5VG9KU09OU2NoZW1hKGNvbmZpZywgZW50aXR5LCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsIGRlZmF1bHRJRFR5cGUpXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSlcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICBkZWZpbml0aW9uczogeyAuLi5lbnRpdHlEZWZpbml0aW9ucywgLi4uT2JqZWN0LmZyb21FbnRyaWVzKGludGVyZmFjZU5hbWVEZWZpbml0aW9ucykgfSxcbiAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGhlcmUgd2lsbCBiZSB2ZXJ5IHNpbXBsZSwgYXMgYWxsIHRoZSBjb21wbGV4aXR5IGlzIGluIHRoZSBkZWZpbml0aW9ucy4gVGhlc2UgYXJlIGp1c3QgdGhlIHByb3BlcnRpZXMgZm9yIHRoZSB0b3AtbGV2ZWwgYENvbmZpZ2AgdHlwZVxuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGNvbGxlY3Rpb25zOiBnZW5lcmF0ZUVudGl0eVNjaGVtYXMoY29uZmlnLmNvbGxlY3Rpb25zIHx8IFtdKSxcbiAgICAgIGdsb2JhbHM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuZ2xvYmFscyB8fCBbXSksXG4gICAgfSxcbiAgICByZXF1aXJlZDogWydjb2xsZWN0aW9ucycsICdnbG9iYWxzJ10sXG4gICAgdGl0bGU6ICdDb25maWcnLFxuICB9XG59XG4iXSwibmFtZXMiOlsicGx1cmFsaXplIiwic2luZ3VsYXIiLCJmaWVsZEFmZmVjdHNEYXRhIiwidGFiSGFzTmFtZSIsImRlZXBDb3B5T2JqZWN0IiwidG9Xb3JkcyIsImZpZWxkSXNSZXF1aXJlZCIsImZpZWxkIiwiaXNDb25kaXRpb25hbCIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImlzTWFya2VkUmVxdWlyZWQiLCJyZXF1aXJlZCIsInR5cGUiLCJmaWVsZHMiLCJzb21lIiwic3ViRmllbGQiLCJ0YWJzIiwidGFiIiwiYnVpbGRPcHRpb25FbnVtcyIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJ2YWx1ZSIsImdlbmVyYXRlRW50aXR5U2NoZW1hcyIsImVudGl0aWVzIiwicHJvcGVydGllcyIsInJlZHVjZSIsImFjYyIsInNsdWciLCIkcmVmIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJPYmplY3QiLCJrZXlzIiwid2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUiLCJmaWVsZFR5cGUiLCJpc1JlcXVpcmVkIiwiZmllbGRUeXBlcyIsInB1c2giLCJmaWVsZHNUb0pTT05TY2hlbWEiLCJjb2xsZWN0aW9uSURGaWVsZFR5cGVzIiwiaW50ZXJmYWNlTmFtZURlZmluaXRpb25zIiwicmVxdWlyZWRGaWVsZE5hbWVzIiwiU2V0IiwiZnJvbUVudHJpZXMiLCJmaWVsZFNjaGVtYXMiLCJhZGQiLCJuYW1lIiwiZmllbGRTY2hlbWEiLCJoYXNNYW55IiwiaXRlbXMiLCJlZGl0b3IiLCJvdXRwdXRTY2hlbWEiLCJlbnVtIiwib3B0aW9uRW51bXMiLCJtYXhJdGVtcyIsIm1pbkl0ZW1zIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsIm9uZU9mIiwicmVsYXRpb24iLCJjb25zdCIsImJsb2NrcyIsImJsb2NrIiwiYmxvY2tGaWVsZFNjaGVtYXMiLCJibG9ja1NjaGVtYSIsImJsb2NrVHlwZSIsImludGVyZmFjZU5hbWUiLCJzZXQiLCJjaGlsZFNjaGVtYSIsImVudHJpZXMiLCJmb3JFYWNoIiwicHJvcE5hbWUiLCJwcm9wU2NoZW1hIiwiTWFwIiwiZnJvbSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNvbmZpZyIsImluY29taW5nRW50aXR5IiwiZGVmYXVsdElEVHlwZSIsImVudGl0eSIsInRpdGxlIiwidHlwZXNjcmlwdCIsImludGVyZmFjZSIsImlkRmllbGQiLCJjdXN0b21JZEZpZWxkIiwiZmluZCIsInVuc2hpZnQiLCJ0aW1lc3RhbXBzIiwiYXV0aCIsImRpc2FibGVMb2NhbFN0cmF0ZWd5IiwiY29sbGVjdGlvbnMiLCJjb2xsZWN0aW9uIiwiY3VzdG9tQ29sbGVjdGlvbklkRmllbGQiLCJjb25maWdUb0pTT05TY2hlbWEiLCJlbnRpdHlEZWZpbml0aW9ucyIsImdsb2JhbHMiLCJkZWZpbml0aW9ucyJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBT0EsZUFBZSxZQUFXO0FBQ2pDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdEO0FBT3JCLFNBQVNFLGdCQUFnQixFQUFFQyxVQUFVLFFBQVEsNEJBQTJCO0FBQ3hFLFNBQVNDLGNBQWMsUUFBUSxzQkFBcUI7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLG9CQUFtQjtBQUUzQyxNQUFNQyxrQkFBa0IsQ0FBQ0M7SUFDdkIsTUFBTUMsZ0JBQWdCQyxRQUFRRixPQUFPRyxTQUFTSCxPQUFPRyxPQUFPQztJQUM1RCxJQUFJSCxlQUFlLE9BQU87SUFFMUIsTUFBTUksbUJBQW1CLGNBQWNMLFNBQVNBLE1BQU1NLFFBQVEsS0FBSztJ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
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _sanitize = require("../config/sanitize");
6
- const _configToJSONSchema = require("./configToJSONSchema");
1
+ import { sanitizeConfig } from '../config/sanitize.js';
2
+ import { configToJSONSchema } from './configToJSONSchema.js';
7
3
  describe('configToJSONSchema', ()=>{
8
4
  it('should handle optional arrays with required fields', ()=>{
9
5
  const config = {
@@ -27,8 +23,8 @@ describe('configToJSONSchema', ()=>{
27
23
  }
28
24
  ]
29
25
  };
30
- const sanitizedConfig = (0, _sanitize.sanitizeConfig)(config);
31
- const schema = (0, _configToJSONSchema.configToJSONSchema)(sanitizedConfig, 'text');
26
+ const sanitizedConfig = sanitizeConfig(config);
27
+ const schema = configToJSONSchema(sanitizedConfig, 'text');
32
28
  expect(schema?.definitions?.test).toStrictEqual({
33
29
  additionalProperties: false,
34
30
  properties: {
@@ -69,4 +65,4 @@ describe('configToJSONSchema', ()=>{
69
65
  });
70
66
  });
71
67
 
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IHNhbml0aXplQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3Nhbml0aXplJ1xuaW1wb3J0IHsgY29uZmlnVG9KU09OU2NoZW1hIH0gZnJvbSAnLi9jb25maWdUb0pTT05TY2hlbWEnXG5cbmRlc2NyaWJlKCdjb25maWdUb0pTT05TY2hlbWEnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgaGFuZGxlIG9wdGlvbmFsIGFycmF5cyB3aXRoIHJlcXVpcmVkIGZpZWxkcycsICgpID0+IHtcbiAgICBjb25zdCBjb25maWc6IENvbmZpZyA9IHtcbiAgICAgIGNvbGxlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3NvbWVSZXF1aXJlZEZpZWxkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ3NvbWVSZXF1aXJlZEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2x1ZzogJ3Rlc3QnLFxuICAgICAgICAgIHRpbWVzdGFtcHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRDb25maWcgPSBzYW5pdGl6ZUNvbmZpZyhjb25maWcpXG4gICAgY29uc3Qgc2NoZW1hID0gY29uZmlnVG9KU09OU2NoZW1hKHNhbml0aXplZENvbmZpZywgJ3RleHQnKVxuXG4gICAgZXhwZWN0KHNjaGVtYT8uZGVmaW5pdGlvbnM/LnRlc3QpLnRvU3RyaWN0RXF1YWwoe1xuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICBzb21lUmVxdWlyZWRGaWVsZDoge1xuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogWydzdHJpbmcnLCAnbnVsbCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzb21lUmVxdWlyZWRGaWVsZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3NvbWVSZXF1aXJlZEZpZWxkJ10sXG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGU6IFsnYXJyYXknLCAnbnVsbCddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiBbJ2lkJ10sXG4gICAgICB0aXRsZTogJ1Rlc3QnLFxuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmllbGRzIiwibmFtZSIsInR5cGUiLCJyZXF1aXJlZCIsInNsdWciLCJ0aW1lc3RhbXBzIiwic2FuaXRpemVkQ29uZmlnIiwic2FuaXRpemVDb25maWciLCJzY2hlbWEiLCJjb25maWdUb0pTT05TY2hlbWEiLCJleHBlY3QiLCJkZWZpbml0aW9ucyIsInRlc3QiLCJ0b1N0cmljdEVxdWFsIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiaWQiLCJzb21lUmVxdWlyZWRGaWVsZCIsIml0ZW1zIiwidGl0bGUiXSwibWFwcGluZ3MiOiI7Ozs7MEJBRStCO29DQUNJO0FBRW5DQSxTQUFTLHNCQUFzQjtJQUM3QkMsR0FBRyxzREFBc0Q7UUFDdkQsTUFBTUMsU0FBaUI7WUFDckJDLGFBQWE7Z0JBQ1g7b0JBQ0VDLFFBQVE7d0JBQ047NEJBQ0VDLE1BQU07NEJBQ05DLE1BQU07NEJBQ05GLFFBQVE7Z0NBQ047b0NBQ0VDLE1BQU07b0NBQ05FLFVBQVU7b0NBQ1ZELE1BQU07Z0NBQ1I7NkJBQ0Q7d0JBQ0g7cUJBQ0Q7b0JBQ0RFLE1BQU07b0JBQ05DLFlBQVk7Z0JBQ2Q7YUFDRDtRQUNIO1FBRUEsTUFBTUMsa0JBQWtCQyxJQUFBQSx3QkFBYyxFQUFDVDtRQUN2QyxNQUFNVSxTQUFTQyxJQUFBQSxzQ0FBa0IsRUFBQ0gsaUJBQWlCO1FBRW5ESSxPQUFPRixRQUFRRyxhQUFhQyxNQUFNQyxhQUFhLENBQUM7WUFDOUNDLHNCQUFzQjtZQUN0QkMsWUFBWTtnQkFDVkMsSUFBSTtvQkFDRmQsTUFBTTtnQkFDUjtnQkFDQWUsbUJBQW1CO29CQUNqQkMsT0FBTzt3QkFDTEosc0JBQXNCO3dCQUN0QkMsWUFBWTs0QkFDVkMsSUFBSTtnQ0FDRmQsTUFBTTtvQ0FBQztvQ0FBVTtpQ0FBTzs0QkFDMUI7NEJBQ0FlLG1CQUFtQjtnQ0FDakJmLE1BQU07NEJBQ1I7d0JBQ0Y7d0JBQ0FDLFVBQVU7NEJBQUM7eUJBQW9CO3dCQUMvQkQsTUFBTTtvQkFDUjtvQkFDQUEsTUFBTTt3QkFBQzt3QkFBUztxQkFBTztnQkFDekI7WUFDRjtZQUNBQyxVQUFVO2dCQUFDO2FBQUs7WUFDaEJnQixPQUFPO1lBQ1BqQixNQUFNO1FBQ1I7SUFDRjtBQUNGIn0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMuZC50cydcblxuaW1wb3J0IHsgc2FuaXRpemVDb25maWcgfSBmcm9tICcuLi9jb25maWcvc2FuaXRpemUuanMnXG5pbXBvcnQgeyBjb25maWdUb0pTT05TY2hlbWEgfSBmcm9tICcuL2NvbmZpZ1RvSlNPTlNjaGVtYS5qcydcblxuZGVzY3JpYmUoJ2NvbmZpZ1RvSlNPTlNjaGVtYScsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBoYW5kbGUgb3B0aW9uYWwgYXJyYXlzIHdpdGggcmVxdWlyZWQgZmllbGRzJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZzogQ29uZmlnID0ge1xuICAgICAgY29sbGVjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnc29tZVJlcXVpcmVkRmllbGQnLFxuICAgICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnc29tZVJlcXVpcmVkRmllbGQnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzbHVnOiAndGVzdCcsXG4gICAgICAgICAgdGltZXN0YW1wczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZENvbmZpZyA9IHNhbml0aXplQ29uZmlnKGNvbmZpZylcbiAgICBjb25zdCBzY2hlbWEgPSBjb25maWdUb0pTT05TY2hlbWEoc2FuaXRpemVkQ29uZmlnLCAndGV4dCcpXG5cbiAgICBleHBlY3Qoc2NoZW1hPy5kZWZpbml0aW9ucz8udGVzdCkudG9TdHJpY3RFcXVhbCh7XG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGlkOiB7XG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgIHNvbWVSZXF1aXJlZEZpZWxkOiB7XG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBbJ3N0cmluZycsICdudWxsJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNvbWVSZXF1aXJlZEZpZWxkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnc29tZVJlcXVpcmVkRmllbGQnXSxcbiAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHlwZTogWydhcnJheScsICdudWxsJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVxdWlyZWQ6IFsnaWQnXSxcbiAgICAgIHRpdGxlOiAnVGVzdCcsXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICB9KVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJzYW5pdGl6ZUNvbmZpZyIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImRlc2NyaWJlIiwiaXQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwicmVxdWlyZWQiLCJzbHVnIiwidGltZXN0YW1wcyIsInNhbml0aXplZENvbmZpZyIsInNjaGVtYSIsImV4cGVjdCIsImRlZmluaXRpb25zIiwidGVzdCIsInRvU3RyaWN0RXF1YWwiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJpZCIsInNvbWVSZXF1aXJlZEZpZWxkIiwiaXRlbXMiLCJ0aXRsZSJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsY0FBYyxRQUFRLHdCQUF1QjtBQUN0RCxTQUFTQyxrQkFBa0IsUUFBUSwwQkFBeUI7QUFFNURDLFNBQVMsc0JBQXNCO0lBQzdCQyxHQUFHLHNEQUFzRDtRQUN2RCxNQUFNQyxTQUFpQjtZQUNyQkMsYUFBYTtnQkFDWDtvQkFDRUMsUUFBUTt3QkFDTjs0QkFDRUMsTUFBTTs0QkFDTkMsTUFBTTs0QkFDTkYsUUFBUTtnQ0FDTjtvQ0FDRUMsTUFBTTtvQ0FDTkUsVUFBVTtvQ0FDVkQsTUFBTTtnQ0FDUjs2QkFDRDt3QkFDSDtxQkFDRDtvQkFDREUsTUFBTTtvQkFDTkMsWUFBWTtnQkFDZDthQUNEO1FBQ0g7UUFFQSxNQUFNQyxrQkFBa0JaLGVBQWVJO1FBQ3ZDLE1BQU1TLFNBQVNaLG1CQUFtQlcsaUJBQWlCO1FBRW5ERSxPQUFPRCxRQUFRRSxhQUFhQyxNQUFNQyxhQUFhLENBQUM7WUFDOUNDLHNCQUFzQjtZQUN0QkMsWUFBWTtnQkFDVkMsSUFBSTtvQkFDRlosTUFBTTtnQkFDUjtnQkFDQWEsbUJBQW1CO29CQUNqQkMsT0FBTzt3QkFDTEosc0JBQXNCO3dCQUN0QkMsWUFBWTs0QkFDVkMsSUFBSTtnQ0FDRlosTUFBTTtvQ0FBQztvQ0FBVTtpQ0FBTzs0QkFDMUI7NEJBQ0FhLG1CQUFtQjtnQ0FDakJiLE1BQU07NEJBQ1I7d0JBQ0Y7d0JBQ0FDLFVBQVU7NEJBQUM7eUJBQW9CO3dCQUMvQkQsTUFBTTtvQkFDUjtvQkFDQUEsTUFBTTt3QkFBQzt3QkFBUztxQkFBTztnQkFDekI7WUFDRjtZQUNBQyxVQUFVO2dCQUFDO2FBQUs7WUFDaEJjLE9BQU87WUFDUGYsTUFBTTtRQUNSO0lBQ0Y7QUFDRiJ9
@@ -1,25 +1,4 @@
1
- /* eslint-disable no-param-reassign */ "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- convertArrayToHash: function() {
13
- return convertArrayToHash;
14
- },
15
- convertArrayToObject: function() {
16
- return convertArrayToObject;
17
- },
18
- convertObjectToArray: function() {
19
- return convertObjectToArray;
20
- }
21
- });
22
- const convertArrayToObject = (arr, key)=>arr.reduce((obj, item)=>{
1
+ /* eslint-disable no-param-reassign */ const convertArrayToObject = (arr, key)=>arr.reduce((obj, item)=>{
23
2
  if (key) {
24
3
  obj[item[key]] = item;
25
4
  return obj;
@@ -32,5 +11,6 @@ const convertArrayToHash = (arr, key)=>arr.reduce((obj, item, i)=>{
32
11
  obj[item[key]] = i;
33
12
  return obj;
34
13
  }, {});
14
+ export { convertArrayToHash, convertArrayToObject, convertObjectToArray };
35
15
 
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udmVydERhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmNvbnN0IGNvbnZlcnRBcnJheVRvT2JqZWN0ID0gKGFyciwga2V5KSA9PlxuICBhcnIucmVkdWNlKChvYmosIGl0ZW0pID0+IHtcbiAgICBpZiAoa2V5KSB7XG4gICAgICBvYmpbaXRlbVtrZXldXSA9IGl0ZW1cbiAgICAgIHJldHVybiBvYmpcbiAgICB9XG5cbiAgICBvYmpbaXRlbV0gPSB7fVxuICAgIHJldHVybiBvYmpcbiAgfSwge30pXG5cbmNvbnN0IGNvbnZlcnRPYmplY3RUb0FycmF5ID0gKGFycikgPT4gT2JqZWN0LnZhbHVlcyhhcnIpXG5cbmNvbnN0IGNvbnZlcnRBcnJheVRvSGFzaCA9IChhcnIsIGtleSkgPT5cbiAgYXJyLnJlZHVjZSgob2JqLCBpdGVtLCBpKSA9PiB7XG4gICAgb2JqW2l0ZW1ba2V5XV0gPSBpXG4gICAgcmV0dXJuIG9ialxuICB9LCB7fSlcblxuZXhwb3J0IHsgY29udmVydEFycmF5VG9IYXNoLCBjb252ZXJ0QXJyYXlUb09iamVjdCwgY29udmVydE9iamVjdFRvQXJyYXkgfVxuIl0sIm5hbWVzIjpbImNvbnZlcnRBcnJheVRvSGFzaCIsImNvbnZlcnRBcnJheVRvT2JqZWN0IiwiY29udmVydE9iamVjdFRvQXJyYXkiLCJhcnIiLCJrZXkiLCJyZWR1Y2UiLCJvYmoiLCJpdGVtIiwiT2JqZWN0IiwidmFsdWVzIiwiaSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7Ozs7Ozs7OztJQW9CM0JBLGtCQUFrQjtlQUFsQkE7O0lBQW9CQyxvQkFBb0I7ZUFBcEJBOztJQUFzQkMsb0JBQW9CO2VBQXBCQTs7O0FBbkJuRCxNQUFNRCx1QkFBdUIsQ0FBQ0UsS0FBS0MsTUFDakNELElBQUlFLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQztRQUNmLElBQUlILEtBQUs7WUFDUEUsR0FBRyxDQUFDQyxJQUFJLENBQUNILElBQUksQ0FBQyxHQUFHRztZQUNqQixPQUFPRDtRQUNUO1FBRUFBLEdBQUcsQ0FBQ0MsS0FBSyxHQUFHLENBQUM7UUFDYixPQUFPRDtJQUNULEdBQUcsQ0FBQztBQUVOLE1BQU1KLHVCQUF1QixDQUFDQyxNQUFRSyxPQUFPQyxNQUFNLENBQUNOO0FBRXBELE1BQU1ILHFCQUFxQixDQUFDRyxLQUFLQyxNQUMvQkQsSUFBSUUsTUFBTSxDQUFDLENBQUNDLEtBQUtDLE1BQU1HO1FBQ3JCSixHQUFHLENBQUNDLElBQUksQ0FBQ0gsSUFBSSxDQUFDLEdBQUdNO1FBQ2pCLE9BQU9KO0lBQ1QsR0FBRyxDQUFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udmVydERhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmNvbnN0IGNvbnZlcnRBcnJheVRvT2JqZWN0ID0gKGFyciwga2V5KSA9PlxuICBhcnIucmVkdWNlKChvYmosIGl0ZW0pID0+IHtcbiAgICBpZiAoa2V5KSB7XG4gICAgICBvYmpbaXRlbVtrZXldXSA9IGl0ZW1cbiAgICAgIHJldHVybiBvYmpcbiAgICB9XG5cbiAgICBvYmpbaXRlbV0gPSB7fVxuICAgIHJldHVybiBvYmpcbiAgfSwge30pXG5cbmNvbnN0IGNvbnZlcnRPYmplY3RUb0FycmF5ID0gKGFycikgPT4gT2JqZWN0LnZhbHVlcyhhcnIpXG5cbmNvbnN0IGNvbnZlcnRBcnJheVRvSGFzaCA9IChhcnIsIGtleSkgPT5cbiAgYXJyLnJlZHVjZSgob2JqLCBpdGVtLCBpKSA9PiB7XG4gICAgb2JqW2l0ZW1ba2V5XV0gPSBpXG4gICAgcmV0dXJuIG9ialxuICB9LCB7fSlcblxuZXhwb3J0IHsgY29udmVydEFycmF5VG9IYXNoLCBjb252ZXJ0QXJyYXlUb09iamVjdCwgY29udmVydE9iamVjdFRvQXJyYXkgfVxuIl0sIm5hbWVzIjpbImNvbnZlcnRBcnJheVRvT2JqZWN0IiwiYXJyIiwia2V5IiwicmVkdWNlIiwib2JqIiwiaXRlbSIsImNvbnZlcnRPYmplY3RUb0FycmF5IiwiT2JqZWN0IiwidmFsdWVzIiwiY29udmVydEFycmF5VG9IYXNoIiwiaSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DLEdBQ3BDLE1BQU1BLHVCQUF1QixDQUFDQyxLQUFLQyxNQUNqQ0QsSUFBSUUsTUFBTSxDQUFDLENBQUNDLEtBQUtDO1FBQ2YsSUFBSUgsS0FBSztZQUNQRSxHQUFHLENBQUNDLElBQUksQ0FBQ0gsSUFBSSxDQUFDLEdBQUdHO1lBQ2pCLE9BQU9EO1FBQ1Q7UUFFQUEsR0FBRyxDQUFDQyxLQUFLLEdBQUcsQ0FBQztRQUNiLE9BQU9EO0lBQ1QsR0FBRyxDQUFDO0FBRU4sTUFBTUUsdUJBQXVCLENBQUNMLE1BQVFNLE9BQU9DLE1BQU0sQ0FBQ1A7QUFFcEQsTUFBTVEscUJBQXFCLENBQUNSLEtBQUtDLE1BQy9CRCxJQUFJRSxNQUFNLENBQUMsQ0FBQ0MsS0FBS0MsTUFBTUs7UUFDckJOLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDSCxJQUFJLENBQUMsR0FBR1E7UUFDakIsT0FBT047SUFDVCxHQUFHLENBQUM7QUFFTixTQUFTSyxrQkFBa0IsRUFBRVQsb0JBQW9CLEVBQUVNLG9CQUFvQixHQUFFIn0=