payload 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (348) hide show
  1. package/auth.js +5 -44
  2. package/bin.js +40 -1
  3. package/components.d.ts +14 -0
  4. package/components.js +71 -0
  5. package/config.js +10 -59
  6. package/database.js +21 -108
  7. package/dist/admin/RichText.js +2 -5
  8. package/dist/admin/elements/Cell.js +2 -5
  9. package/dist/admin/elements/DatePicker.js +2 -5
  10. package/dist/admin/elements/PreviewButton.js +2 -5
  11. package/dist/admin/elements/PublishButton.js +2 -5
  12. package/dist/admin/elements/SaveButton.js +2 -5
  13. package/dist/admin/elements/SaveDraftButton.js +2 -5
  14. package/dist/admin/elements/Tab.js +2 -5
  15. package/dist/admin/forms/Error.js +2 -5
  16. package/dist/admin/forms/FieldDescription.js +2 -5
  17. package/dist/admin/forms/FieldTypes.js +2 -5
  18. package/dist/admin/forms/Form.d.ts +22 -0
  19. package/dist/admin/forms/Form.d.ts.map +1 -1
  20. package/dist/admin/forms/Form.js +2 -5
  21. package/dist/admin/forms/Label.js +2 -5
  22. package/dist/admin/forms/RowLabel.js +2 -5
  23. package/dist/admin/types.d.ts +2 -1
  24. package/dist/admin/types.d.ts.map +1 -1
  25. package/dist/admin/types.js +2 -5
  26. package/dist/admin/views/types.d.ts +41 -0
  27. package/dist/admin/views/types.d.ts.map +1 -0
  28. package/dist/admin/views/types.js +3 -0
  29. package/dist/assets/assets.d.js +0 -1
  30. package/dist/auth/baseFields/accountLock.js +2 -12
  31. package/dist/auth/baseFields/apiKey.js +6 -21
  32. package/dist/auth/baseFields/auth.js +6 -16
  33. package/dist/auth/baseFields/verification.js +4 -14
  34. package/dist/auth/cookies.js +6 -33
  35. package/dist/auth/crypto.js +7 -30
  36. package/dist/auth/defaultAccess.js +2 -12
  37. package/dist/auth/defaultUser.js +4 -14
  38. package/dist/auth/executeAccess.js +5 -15
  39. package/dist/auth/extractJWT.js +4 -14
  40. package/dist/auth/getAccessResults.js +5 -15
  41. package/dist/auth/getAuthenticatedUser.js +2 -12
  42. package/dist/auth/getFieldsToSign.js +5 -15
  43. package/dist/auth/index.js +4 -27
  44. package/dist/auth/isLocked.js +2 -12
  45. package/dist/auth/operations/access.js +12 -22
  46. package/dist/auth/operations/forgotPassword.js +17 -32
  47. package/dist/auth/operations/init.js +2 -12
  48. package/dist/auth/operations/local/forgotPassword.js +8 -18
  49. package/dist/auth/operations/local/index.js +12 -27
  50. package/dist/auth/operations/local/login.js +8 -18
  51. package/dist/auth/operations/local/resetPassword.js +8 -18
  52. package/dist/auth/operations/local/unlock.js +8 -18
  53. package/dist/auth/operations/local/verifyEmail.js +8 -18
  54. package/dist/auth/operations/login.js +32 -47
  55. package/dist/auth/operations/logout.js +6 -21
  56. package/dist/auth/operations/me.js +4 -19
  57. package/dist/auth/operations/refresh.js +19 -34
  58. package/dist/auth/operations/registerFirstUser.js +10 -20
  59. package/dist/auth/operations/resetPassword.js +20 -43
  60. package/dist/auth/operations/unlock.js +16 -39
  61. package/dist/auth/operations/verifyEmail.js +14 -37
  62. package/dist/auth/sendVerificationEmail.js +4 -14
  63. package/dist/auth/strategies/apiKey.js +4 -19
  64. package/dist/auth/strategies/jwt.js +6 -21
  65. package/dist/auth/strategies/local/authenticate.js +6 -21
  66. package/dist/auth/strategies/local/generatePasswordSaltHash.js +7 -22
  67. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -12
  68. package/dist/auth/strategies/local/register.js +6 -16
  69. package/dist/auth/strategies/local/resetLoginAttempts.js +2 -12
  70. package/dist/auth/types.js +2 -12
  71. package/dist/bin/generateTypes.js +12 -27
  72. package/dist/bin/index.js +11 -53
  73. package/dist/bin/loadEnv.js +13 -26
  74. package/dist/bin/migrate.js +15 -30
  75. package/dist/bundlers/mocks/db-mongodb.js +0 -1
  76. package/dist/bundlers/mocks/db-postgres.js +2 -12
  77. package/dist/bundlers/mocks/dotENV.js +2 -12
  78. package/dist/bundlers/mocks/emptyModule.js +2 -12
  79. package/dist/bundlers/mocks/fileMock.js +2 -12
  80. package/dist/bundlers/types.js +2 -5
  81. package/dist/collections/config/build.js +2 -12
  82. package/dist/collections/config/defaults.js +9 -32
  83. package/dist/collections/config/sanitize.js +34 -49
  84. package/dist/collections/config/schema.js +157 -172
  85. package/dist/collections/config/types.d.ts +5 -5
  86. package/dist/collections/config/types.d.ts.map +1 -1
  87. package/dist/collections/config/types.js +2 -5
  88. package/dist/collections/dataloader.js +8 -23
  89. package/dist/collections/operations/create.js +38 -53
  90. package/dist/collections/operations/delete.js +27 -42
  91. package/dist/collections/operations/deleteByID.js +27 -42
  92. package/dist/collections/operations/docAccess.js +10 -20
  93. package/dist/collections/operations/find.js +25 -40
  94. package/dist/collections/operations/findByID.js +21 -36
  95. package/dist/collections/operations/findVersionByID.js +19 -34
  96. package/dist/collections/operations/findVersions.js +20 -35
  97. package/dist/collections/operations/local/create.js +10 -25
  98. package/dist/collections/operations/local/delete.js +10 -20
  99. package/dist/collections/operations/local/find.js +8 -18
  100. package/dist/collections/operations/local/findByID.js +8 -18
  101. package/dist/collections/operations/local/findVersionByID.js +8 -18
  102. package/dist/collections/operations/local/findVersions.js +8 -18
  103. package/dist/collections/operations/local/index.js +20 -35
  104. package/dist/collections/operations/local/restoreVersion.js +8 -18
  105. package/dist/collections/operations/local/update.js +12 -27
  106. package/dist/collections/operations/restoreVersion.js +26 -41
  107. package/dist/collections/operations/update.js +43 -58
  108. package/dist/collections/operations/updateByID.js +44 -59
  109. package/dist/collections/operations/utils.js +3 -12
  110. package/dist/config/build.js +9 -15
  111. package/dist/config/clientFiles.js +2 -12
  112. package/dist/config/createClientConfig.d.ts.map +1 -1
  113. package/dist/config/createClientConfig.js +12 -25
  114. package/dist/config/defaults.js +4 -19
  115. package/dist/config/find.js +18 -33
  116. package/dist/config/load.d.ts +1 -3
  117. package/dist/config/load.d.ts.map +1 -1
  118. package/dist/config/load.js +8 -37
  119. package/dist/config/sanitize.js +25 -40
  120. package/dist/config/schema.d.ts.map +1 -1
  121. package/dist/config/schema.js +116 -133
  122. package/dist/config/shared/adminViewSchema.js +9 -24
  123. package/dist/config/shared/componentSchema.js +21 -50
  124. package/dist/config/types.d.ts +12 -21
  125. package/dist/config/types.d.ts.map +1 -1
  126. package/dist/config/types.js +9 -21
  127. package/dist/config/validate.js +15 -71
  128. package/dist/database/combineQueries.js +4 -14
  129. package/dist/database/createDatabaseAdapter.js +14 -24
  130. package/dist/database/flattenWhereToOperators.js +2 -12
  131. package/dist/database/getLocalizedPaths.js +7 -22
  132. package/dist/database/migrations/createMigration.js +7 -22
  133. package/dist/database/migrations/getMigrations.js +4 -12
  134. package/dist/database/migrations/migrate.js +12 -22
  135. package/dist/database/migrations/migrateDown.js +12 -22
  136. package/dist/database/migrations/migrateRefresh.js +16 -24
  137. package/dist/database/migrations/migrateReset.js +12 -22
  138. package/dist/database/migrations/migrateStatus.js +8 -18
  139. package/dist/database/migrations/migrationTemplate.js +2 -12
  140. package/dist/database/migrations/migrationsCollection.js +2 -12
  141. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  142. package/dist/database/migrations/readMigrationFiles.js +12 -24
  143. package/dist/database/queryValidation/types.js +2 -5
  144. package/dist/database/queryValidation/validateQueryPaths.js +13 -28
  145. package/dist/database/queryValidation/validateSearchParams.js +13 -21
  146. package/dist/database/types.d.ts +5 -2
  147. package/dist/database/types.d.ts.map +1 -1
  148. package/dist/database/types.js +2 -5
  149. package/dist/email/build.js +11 -26
  150. package/dist/email/defaults.js +2 -12
  151. package/dist/email/mockHandler.js +8 -23
  152. package/dist/email/sendEmail.js +2 -12
  153. package/dist/email/types.js +2 -5
  154. package/dist/errors/APIError.js +4 -19
  155. package/dist/errors/AuthenticationError.js +7 -22
  156. package/dist/errors/DuplicateCollection.js +4 -19
  157. package/dist/errors/DuplicateFieldName.js +4 -19
  158. package/dist/errors/DuplicateGlobal.js +4 -19
  159. package/dist/errors/ErrorDeletingFile.js +7 -22
  160. package/dist/errors/FileUploadError.js +7 -22
  161. package/dist/errors/Forbidden.js +7 -22
  162. package/dist/errors/InvalidConfiguration.js +6 -21
  163. package/dist/errors/InvalidFieldName.js +4 -19
  164. package/dist/errors/InvalidFieldRelationship.js +4 -19
  165. package/dist/errors/InvalidSchema.js +6 -21
  166. package/dist/errors/LockedAuth.js +7 -22
  167. package/dist/errors/MissingCollectionLabel.js +4 -19
  168. package/dist/errors/MissingFieldInputOptions.js +4 -19
  169. package/dist/errors/MissingFieldType.js +6 -21
  170. package/dist/errors/MissingFile.js +7 -22
  171. package/dist/errors/NotFound.js +7 -22
  172. package/dist/errors/QueryError.js +6 -21
  173. package/dist/errors/TimestampsRequired.js +4 -19
  174. package/dist/errors/UnathorizedError.js +7 -22
  175. package/dist/errors/ValidationError.js +8 -23
  176. package/dist/errors/index.js +20 -94
  177. package/dist/errors/types.js +2 -19
  178. package/dist/exports/auth.js +5 -44
  179. package/dist/exports/components/utilities.d.ts +0 -1
  180. package/dist/exports/components/utilities.js +0 -1
  181. package/dist/exports/config.js +10 -59
  182. package/dist/exports/database.js +21 -108
  183. package/dist/exports/errors.js +2 -68
  184. package/dist/exports/fields/index.js +3 -26
  185. package/dist/exports/fields/validations.js +2 -19
  186. package/dist/exports/operations.js +29 -125
  187. package/dist/exports/types.js +4 -74
  188. package/dist/exports/utilities.js +28 -141
  189. package/dist/exports/versions.js +9 -45
  190. package/dist/express/middleware/errorHandler.d.ts +0 -1
  191. package/dist/express/middleware/errorHandler.js +0 -1
  192. package/dist/express/middleware/index.d.ts +0 -1
  193. package/dist/express/middleware/index.js +0 -1
  194. package/dist/fields/baseFields/baseBlockFields.js +4 -14
  195. package/dist/fields/baseFields/baseIDField.js +4 -19
  196. package/dist/fields/config/sanitize.js +24 -39
  197. package/dist/fields/config/sanitize.spec.js +25 -29
  198. package/dist/fields/config/schema.js +329 -424
  199. package/dist/fields/config/types.js +15 -69
  200. package/dist/fields/getDefaultValue.js +2 -12
  201. package/dist/fields/hooks/afterChange/index.js +6 -16
  202. package/dist/fields/hooks/afterChange/promise.js +14 -22
  203. package/dist/fields/hooks/afterChange/traverseFields.js +4 -14
  204. package/dist/fields/hooks/afterRead/index.js +6 -16
  205. package/dist/fields/hooks/afterRead/promise.js +28 -36
  206. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +5 -15
  207. package/dist/fields/hooks/afterRead/traverseFields.js +4 -14
  208. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +2 -12
  209. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +2 -12
  210. package/dist/fields/hooks/beforeChange/index.js +8 -18
  211. package/dist/fields/hooks/beforeChange/promise.js +26 -35
  212. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -14
  213. package/dist/fields/hooks/beforeValidate/index.js +6 -16
  214. package/dist/fields/hooks/beforeValidate/promise.js +30 -39
  215. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -14
  216. package/dist/fields/mergeBaseFields.js +8 -23
  217. package/dist/fields/sortableFieldTypes.js +2 -12
  218. package/dist/fields/validations.js +31 -97
  219. package/dist/fields/validations.spec.js +93 -87
  220. package/dist/globals/config/build.d.ts +0 -1
  221. package/dist/globals/config/build.js +0 -1
  222. package/dist/globals/config/sanitize.js +17 -32
  223. package/dist/globals/config/schema.js +55 -70
  224. package/dist/globals/config/types.d.ts +5 -5
  225. package/dist/globals/config/types.d.ts.map +1 -1
  226. package/dist/globals/config/types.js +2 -5
  227. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -1
  228. package/dist/globals/graphql/resolvers/docAccess.js +0 -1
  229. package/dist/globals/operations/docAccess.js +10 -20
  230. package/dist/globals/operations/findOne.js +14 -29
  231. package/dist/globals/operations/findVersionByID.js +18 -33
  232. package/dist/globals/operations/findVersions.js +20 -35
  233. package/dist/globals/operations/local/findOne.js +8 -18
  234. package/dist/globals/operations/local/findVersionByID.js +8 -18
  235. package/dist/globals/operations/local/findVersions.js +8 -18
  236. package/dist/globals/operations/local/index.js +12 -27
  237. package/dist/globals/operations/local/restoreVersion.js +8 -18
  238. package/dist/globals/operations/local/update.js +8 -18
  239. package/dist/globals/operations/restoreVersion.js +16 -31
  240. package/dist/globals/operations/update.js +23 -38
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +50 -70
  243. package/dist/localization/middleware.js +2 -12
  244. package/dist/localization/sanitizeFallbackLocale.js +2 -12
  245. package/dist/preferences/deleteUserPreferences.js +2 -12
  246. package/dist/preferences/operations/delete.js +10 -25
  247. package/dist/preferences/operations/findOne.js +2 -12
  248. package/dist/preferences/operations/update.js +8 -23
  249. package/dist/preferences/preferencesCollection.js +8 -18
  250. package/dist/preferences/requestHandlers/delete.js +6 -21
  251. package/dist/preferences/requestHandlers/findOne.js +6 -21
  252. package/dist/preferences/requestHandlers/update.js +6 -21
  253. package/dist/preferences/types.js +2 -5
  254. package/dist/translations/extractTranslations.js +4 -14
  255. package/dist/translations/getLocalI18n.js +5 -15
  256. package/dist/types/constants.js +2 -12
  257. package/dist/types/index.js +2 -12
  258. package/dist/uploads/canResizeImage.js +2 -12
  259. package/dist/uploads/cropImage.d.ts +3 -7
  260. package/dist/uploads/cropImage.d.ts.map +1 -1
  261. package/dist/uploads/cropImage.js +4 -28
  262. package/dist/uploads/deleteAssociatedFiles.js +11 -26
  263. package/dist/uploads/docWithFilenameExists.js +2 -12
  264. package/dist/uploads/fileExists.js +4 -19
  265. package/dist/uploads/formatFilesize.js +2 -12
  266. package/dist/uploads/generateFileData.d.ts.map +1 -1
  267. package/dist/uploads/generateFileData.js +40 -53
  268. package/dist/uploads/getBaseFields.js +6 -16
  269. package/dist/uploads/getExternalFile.js +5 -15
  270. package/dist/uploads/getFileByPath.js +10 -25
  271. package/dist/uploads/getImageSize.js +7 -22
  272. package/dist/uploads/getSafeFilename.js +8 -23
  273. package/dist/uploads/imageResizer.d.ts +3 -1
  274. package/dist/uploads/imageResizer.d.ts.map +1 -1
  275. package/dist/uploads/imageResizer.js +28 -44
  276. package/dist/uploads/isImage.js +2 -12
  277. package/dist/uploads/mimeTypeValidator.js +2 -12
  278. package/dist/uploads/mimeTypeValidator.spec.js +11 -15
  279. package/dist/uploads/saveBufferToFile.js +6 -21
  280. package/dist/uploads/types.d.ts +7 -1
  281. package/dist/uploads/types.d.ts.map +1 -1
  282. package/dist/uploads/types.js +2 -5
  283. package/dist/uploads/unlinkTempFiles.js +9 -22
  284. package/dist/uploads/uploadFiles.js +6 -21
  285. package/dist/utilities/checkDuplicateCollections.js +4 -14
  286. package/dist/utilities/combineMerge.js +4 -19
  287. package/dist/utilities/commitTransaction.js +4 -12
  288. package/dist/utilities/configToJSONSchema.js +22 -41
  289. package/dist/utilities/configToJSONSchema.spec.js +5 -9
  290. package/dist/utilities/convertData.js +3 -23
  291. package/dist/utilities/createArrayFromCommaDelineated.js +2 -12
  292. package/dist/utilities/createLocalReq.js +6 -16
  293. package/dist/utilities/deepCopyObject.js +2 -12
  294. package/dist/utilities/deepMerge.js +2 -12
  295. package/dist/utilities/fieldSchemaToJSON.js +2 -12
  296. package/dist/utilities/flattenTopLevelFields.js +6 -16
  297. package/dist/utilities/formatLabels.js +9 -70
  298. package/dist/utilities/formatLabels.spec.js +8 -12
  299. package/dist/utilities/getCSSVariable.js +2 -12
  300. package/dist/utilities/getEntityPolicies.js +4 -14
  301. package/dist/utilities/getIDType.js +2 -12
  302. package/dist/utilities/getObjectDotNotation.js +2 -12
  303. package/dist/utilities/getUniqueListBy.js +2 -12
  304. package/dist/utilities/initTransaction.js +5 -12
  305. package/dist/utilities/isEntityHidden.js +2 -12
  306. package/dist/utilities/isNumber.js +2 -12
  307. package/dist/utilities/isValidID.js +5 -20
  308. package/dist/utilities/isolateObjectProperty.js +2 -12
  309. package/dist/utilities/killTransaction.js +4 -12
  310. package/dist/utilities/logger.d.ts.map +1 -1
  311. package/dist/utilities/logger.js +16 -37
  312. package/dist/utilities/mapAsync.js +2 -12
  313. package/dist/utilities/overwriteMerge.js +2 -12
  314. package/dist/utilities/parseCookies.js +4 -14
  315. package/dist/utilities/pinoPretty.d.ts +1 -0
  316. package/dist/utilities/pinoPretty.d.ts.map +1 -0
  317. package/dist/utilities/pinoPretty.js +2 -0
  318. package/dist/utilities/sanitizeInternalFields.js +2 -12
  319. package/dist/utilities/setsAreEqual.js +2 -12
  320. package/dist/utilities/telemetry/events/adminInit.js +7 -17
  321. package/dist/utilities/telemetry/events/serverInit.js +4 -14
  322. package/dist/utilities/telemetry/index.js +17 -40
  323. package/dist/utilities/telemetry/oneWayHash.js +4 -14
  324. package/dist/utilities/timestamp.js +2 -12
  325. package/dist/utilities/toKebabCase.js +2 -12
  326. package/dist/utilities/wait.js +2 -12
  327. package/dist/utilities/wordBoundariesRegex.js +3 -13
  328. package/dist/versions/baseFields.js +5 -23
  329. package/dist/versions/buildCollectionFields.js +2 -12
  330. package/dist/versions/buildGlobalFields.js +2 -12
  331. package/dist/versions/deleteCollectionVersions.js +2 -12
  332. package/dist/versions/drafts/appendVersionToQueryKey.js +2 -12
  333. package/dist/versions/drafts/getQueryDraftsSort.js +2 -12
  334. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -27
  335. package/dist/versions/enforceMaxVersions.js +2 -12
  336. package/dist/versions/getLatestCollectionVersion.js +4 -14
  337. package/dist/versions/getLatestGlobalVersion.js +4 -14
  338. package/dist/versions/getVersionsModelName.js +2 -12
  339. package/dist/versions/saveVersion.js +8 -23
  340. package/dist/versions/types.js +2 -5
  341. package/errors.js +2 -68
  342. package/graphql.d.ts +3 -0
  343. package/graphql.js +27 -0
  344. package/operations.js +29 -125
  345. package/package.json +17 -5
  346. package/types.js +4 -74
  347. package/utilities.js +28 -141
  348. package/versions.js +9 -45
@@ -1,25 +1,16 @@
1
- /* eslint-disable no-param-reassign */ "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "promise", {
6
- enumerable: true,
7
- get: function() {
8
- return promise;
9
- }
10
- });
11
- const _types = require("../../config/types");
12
- const _getDefaultValue = /*#__PURE__*/ _interop_require_default(require("../../getDefaultValue"));
13
- const _cloneDataFromOriginalDoc = require("../beforeChange/cloneDataFromOriginalDoc");
14
- const _getExistingRowDoc = require("../beforeChange/getExistingRowDoc");
15
- const _traverseFields = require("./traverseFields");
16
- function _interop_require_default(obj) {
17
- return obj && obj.__esModule ? obj : {
18
- default: obj
19
- };
20
- }
21
- const promise = async ({ id, collection, context, data, doc, field, global, operation, overrideAccess, req, siblingData, siblingDoc })=>{
22
- if ((0, _types.fieldAffectsData)(field)) {
1
+ /* eslint-disable no-param-reassign */ import { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types';
2
+ import getValueWithDefault from '../../getDefaultValue';
3
+ import { cloneDataFromOriginalDoc } from '../beforeChange/cloneDataFromOriginalDoc';
4
+ import { getExistingRowDoc } from '../beforeChange/getExistingRowDoc';
5
+ import { traverseFields } from './traverseFields';
6
+ // This function is responsible for the following actions, in order:
7
+ // - Sanitize incoming data
8
+ // - Execute field hooks
9
+ // - Execute field access control
10
+ // - Merge original document data into incoming data
11
+ // - Compute default values for undefined fields
12
+ export const promise = async ({ id, collection, context, data, doc, field, global, operation, overrideAccess, req, siblingData, siblingDoc })=>{
13
+ if (fieldAffectsData(field)) {
23
14
  if (field.name === 'id') {
24
15
  if (field.type === 'number' && typeof siblingData[field.name] === 'string') {
25
16
  const value = siblingData[field.name];
@@ -89,7 +80,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
89
80
  if (Array.isArray(value)) {
90
81
  value.forEach((relatedDoc, i)=>{
91
82
  const relatedCollection = req.payload.config.collections.find((collection)=>collection.slug === relatedDoc.relationTo);
92
- const relationshipIDField = relatedCollection.fields.find((collectionField)=>(0, _types.fieldAffectsData)(collectionField) && collectionField.name === 'id');
83
+ const relationshipIDField = relatedCollection.fields.find((collectionField)=>fieldAffectsData(collectionField) && collectionField.name === 'id');
93
84
  if (relationshipIDField?.type === 'number') {
94
85
  siblingData[field.name][i] = {
95
86
  ...relatedDoc,
@@ -98,9 +89,9 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
98
89
  }
99
90
  });
100
91
  }
101
- if (field.type === 'relationship' && field.hasMany !== true && (0, _types.valueIsValueWithRelation)(value)) {
92
+ if (field.type === 'relationship' && field.hasMany !== true && valueIsValueWithRelation(value)) {
102
93
  const relatedCollection = req.payload.config.collections.find((collection)=>collection.slug === value.relationTo);
103
- const relationshipIDField = relatedCollection.fields.find((collectionField)=>(0, _types.fieldAffectsData)(collectionField) && collectionField.name === 'id');
94
+ const relationshipIDField = relatedCollection.fields.find((collectionField)=>fieldAffectsData(collectionField) && collectionField.name === 'id');
104
95
  if (relationshipIDField?.type === 'number') {
105
96
  siblingData[field.name] = {
106
97
  ...value,
@@ -112,7 +103,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
112
103
  if (Array.isArray(value)) {
113
104
  value.forEach((relatedDoc, i)=>{
114
105
  const relatedCollection = req.payload.config.collections.find((collection)=>collection.slug === field.relationTo);
115
- const relationshipIDField = relatedCollection.fields.find((collectionField)=>(0, _types.fieldAffectsData)(collectionField) && collectionField.name === 'id');
106
+ const relationshipIDField = relatedCollection.fields.find((collectionField)=>fieldAffectsData(collectionField) && collectionField.name === 'id');
116
107
  if (relationshipIDField?.type === 'number') {
117
108
  siblingData[field.name][i] = parseFloat(relatedDoc);
118
109
  }
@@ -120,7 +111,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
120
111
  }
121
112
  if (field.type === 'relationship' && field.hasMany !== true && value) {
122
113
  const relatedCollection = req.payload.config.collections.find((collection)=>collection.slug === field.relationTo);
123
- const relationshipIDField = relatedCollection.fields.find((collectionField)=>(0, _types.fieldAffectsData)(collectionField) && collectionField.name === 'id');
114
+ const relationshipIDField = relatedCollection.fields.find((collectionField)=>fieldAffectsData(collectionField) && collectionField.name === 'id');
124
115
  if (relationshipIDField?.type === 'number') {
125
116
  siblingData[field.name] = parseFloat(value);
126
117
  }
@@ -179,10 +170,10 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
179
170
  if (typeof siblingData[field.name] === 'undefined') {
180
171
  // If no incoming data, but existing document data is found, merge it in
181
172
  if (typeof siblingDoc[field.name] !== 'undefined') {
182
- siblingData[field.name] = (0, _cloneDataFromOriginalDoc.cloneDataFromOriginalDoc)(siblingDoc[field.name]);
173
+ siblingData[field.name] = cloneDataFromOriginalDoc(siblingDoc[field.name]);
183
174
  // Otherwise compute default value
184
175
  } else if (typeof field.defaultValue !== 'undefined') {
185
- siblingData[field.name] = await (0, _getDefaultValue.default)({
176
+ siblingData[field.name] = await getValueWithDefault({
186
177
  defaultValue: field.defaultValue,
187
178
  locale: req.locale,
188
179
  user: req.user,
@@ -199,7 +190,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
199
190
  if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {};
200
191
  const groupData = siblingData[field.name];
201
192
  const groupDoc = siblingDoc[field.name];
202
- await (0, _traverseFields.traverseFields)({
193
+ await traverseFields({
203
194
  id,
204
195
  collection,
205
196
  context,
@@ -221,7 +212,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
221
212
  if (Array.isArray(rows)) {
222
213
  const promises = [];
223
214
  rows.forEach((row)=>{
224
- promises.push((0, _traverseFields.traverseFields)({
215
+ promises.push(traverseFields({
225
216
  id,
226
217
  collection,
227
218
  context,
@@ -233,7 +224,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
233
224
  overrideAccess,
234
225
  req,
235
226
  siblingData: row,
236
- siblingDoc: (0, _getExistingRowDoc.getExistingRowDoc)(row, siblingDoc[field.name])
227
+ siblingDoc: getExistingRowDoc(row, siblingDoc[field.name])
237
228
  }));
238
229
  });
239
230
  await Promise.all(promises);
@@ -246,12 +237,12 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
246
237
  if (Array.isArray(rows)) {
247
238
  const promises = [];
248
239
  rows.forEach((row)=>{
249
- const rowSiblingDoc = (0, _getExistingRowDoc.getExistingRowDoc)(row, siblingDoc[field.name]);
240
+ const rowSiblingDoc = getExistingRowDoc(row, siblingDoc[field.name]);
250
241
  const blockTypeToMatch = row.blockType || rowSiblingDoc.blockType;
251
242
  const block = field.blocks.find((blockType)=>blockType.slug === blockTypeToMatch);
252
243
  if (block) {
253
244
  row.blockType = blockTypeToMatch;
254
- promises.push((0, _traverseFields.traverseFields)({
245
+ promises.push(traverseFields({
255
246
  id,
256
247
  collection,
257
248
  context,
@@ -274,7 +265,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
274
265
  case 'row':
275
266
  case 'collapsible':
276
267
  {
277
- await (0, _traverseFields.traverseFields)({
268
+ await traverseFields({
278
269
  id,
279
270
  collection,
280
271
  context,
@@ -294,7 +285,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
294
285
  {
295
286
  let tabSiblingData;
296
287
  let tabSiblingDoc;
297
- if ((0, _types.tabHasName)(field)) {
288
+ if (tabHasName(field)) {
298
289
  if (typeof siblingData[field.name] !== 'object') siblingData[field.name] = {};
299
290
  if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {};
300
291
  tabSiblingData = siblingData[field.name];
@@ -303,7 +294,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
303
294
  tabSiblingData = siblingData;
304
295
  tabSiblingDoc = siblingDoc;
305
296
  }
306
- await (0, _traverseFields.traverseFields)({
297
+ await traverseFields({
307
298
  id,
308
299
  collection,
309
300
  context,
@@ -321,7 +312,7 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
321
312
  }
322
313
  case 'tabs':
323
314
  {
324
- await (0, _traverseFields.traverseFields)({
315
+ await traverseFields({
325
316
  id,
326
317
  collection,
327
318
  context,
@@ -347,4 +338,4 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
347
338
  }
348
339
  };
349
340
 
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lLCB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgZ2V0VmFsdWVXaXRoRGVmYXVsdCBmcm9tICcuLi8uLi9nZXREZWZhdWx0VmFsdWUnXG5pbXBvcnQgeyBjbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvZ2V0RXhpc3RpbmdSb3dEb2MnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZFxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBmb2xsb3dpbmcgYWN0aW9ucywgaW4gb3JkZXI6XG4vLyAtIFNhbml0aXplIGluY29taW5nIGRhdGFcbi8vIC0gRXhlY3V0ZSBmaWVsZCBob29rc1xuLy8gLSBFeGVjdXRlIGZpZWxkIGFjY2VzcyBjb250cm9sXG4vLyAtIE1lcmdlIG9yaWdpbmFsIGRvY3VtZW50IGRhdGEgaW50byBpbmNvbWluZyBkYXRhXG4vLyAtIENvbXB1dGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuZGVmaW5lZCBmaWVsZHNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyA8VD4oe1xuICBpZCxcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ2lkJykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdcblxuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHBhcnNlRmxvYXQodmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQudHlwZSA9PT0gJ3RleHQnICYmXG4gICAgICAgIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXT8udG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0udG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNhbml0aXplIGluY29taW5nIGRhdGFcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdbXSkubWFwKChjb29yZGluYXRlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvb3JkaW5hdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gYXMgc3RyaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICd0cnVlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB0cnVlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ2ZhbHNlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBmYWxzZVxuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJpY2hUZXh0SlNPTiA9IEpTT04ucGFyc2Uoc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSByaWNoVGV4dEpTT05cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIERpc3JlZ2FyZCB0aGlzIGRhdGEgYXMgaXQgaXMgbm90IHZhbGlkLlxuICAgICAgICAgICAgLy8gV2lsbCBiZSByZXBvcnRlZCB0byB1c2VyIGJ5IGZpZWxkIHZhbGlkYXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdub25lJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnbnVsbCcgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHsgcmVsYXRpb25Ubzogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gcmVsYXRlZERvYy5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0ge1xuICAgICAgICAgICAgICAgICAgLi4ucmVsYXRlZERvYyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHJlbGF0ZWREb2MudmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmXG4gICAgICAgICAgICBmaWVsZC5oYXNNYW55ICE9PSB0cnVlICYmXG4gICAgICAgICAgICB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24odmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSB2YWx1ZS5yZWxhdGlvblRvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgIGZpZWxkQWZmZWN0c0RhdGEoY29sbGVjdGlvbkZpZWxkKSAmJiBjb2xsZWN0aW9uRmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHsgLi4udmFsdWUsIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlLnZhbHVlIGFzIHN0cmluZykgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHVua25vd24sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0gcGFyc2VGbG9hdChyZWxhdGVkRG9jIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2VzIG9mIGFycmF5cyBiZWluZyBpbnRlbnRpb25hbGx5IHNldCB0byAwXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJzAnIHx8IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAwKSB7XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgaG9va3NcbiAgICBpZiAoZmllbGQuaG9va3M/LmJlZm9yZVZhbGlkYXRlKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgYWNjZXNzIGNvbnRyb2xcbiAgICBpZiAoZmllbGQuYWNjZXNzICYmIGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdmVycmlkZUFjY2Vzc1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBhd2FpdCBmaWVsZC5hY2Nlc3Nbb3BlcmF0aW9uXSh7IGlkLCBkYXRhLCBkb2MsIHJlcSwgc2libGluZ0RhdGEgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgZGVsZXRlIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIG5vIGluY29taW5nIGRhdGEsIGJ1dCBleGlzdGluZyBkb2N1bWVudCBkYXRhIGlzIGZvdW5kLCBtZXJnZSBpdCBpblxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSBjb21wdXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBhd2FpdCBnZXRWYWx1ZVdpdGhEZWZhdWx0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICAgICAgdmFsdWU6IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyYXZlcnNlIHN1YmZpZWxkc1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgY29uc3QgZ3JvdXBEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGNvbnN0IGdyb3VwRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IGdyb3VwRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICByb3cuYmxvY2tUeXBlID0gYmxvY2tUeXBlVG9NYXRjaFxuXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiU2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IHRhYlNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJTaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiZG9jIiwiZmllbGQiLCJnbG9iYWwiLCJvcGVyYXRpb24iLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwicGFyc2VGbG9hdCIsInRvU3RyaW5nIiwidHJpbW1lZCIsInRyaW0iLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjb29yZGluYXRlIiwiaSIsInJpY2hUZXh0SlNPTiIsIkpTT04iLCJwYXJzZSIsImhhc01hbnkiLCJyZWxhdGlvblRvIiwiZm9yRWFjaCIsInJlbGF0ZWREb2MiLCJyZWxhdGVkQ29sbGVjdGlvbiIsInBheWxvYWQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImZpbmQiLCJzbHVnIiwicmVsYXRpb25zaGlwSURGaWVsZCIsImZpZWxkcyIsImNvbGxlY3Rpb25GaWVsZCIsInZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiIsImhvb2tzIiwiYmVmb3JlVmFsaWRhdGUiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFjY2VzcyIsInJlc3VsdCIsImNsb25lRGF0YUZyb21PcmlnaW5hbERvYyIsImRlZmF1bHRWYWx1ZSIsImdldFZhbHVlV2l0aERlZmF1bHQiLCJsb2NhbGUiLCJ1c2VyIiwiZ3JvdXBEYXRhIiwiZ3JvdXBEb2MiLCJ0cmF2ZXJzZUZpZWxkcyIsInJvd3MiLCJwcm9taXNlcyIsInJvdyIsInB1c2giLCJnZXRFeGlzdGluZ1Jvd0RvYyIsImFsbCIsInJvd1NpYmxpbmdEb2MiLCJibG9ja1R5cGVUb01hdGNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJ0YWJTaWJsaW5nRGF0YSIsInRhYlNpYmxpbmdEb2MiLCJ0YWJIYXNOYW1lIiwidGFicyIsInRhYiJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWtDdkJBOzs7ZUFBQUE7Ozt1QkE1QjBEO3dFQUN2QzswQ0FDUzttQ0FDUDtnQ0FDSDs7Ozs7O0FBd0J4QixNQUFNQSxVQUFVLE9BQVUsRUFDL0JDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLEdBQUcsRUFDSEMsV0FBVyxFQUNYQyxVQUFVLEVBQ0Y7SUFDUixJQUFJQyxJQUFBQSx1QkFBZ0IsRUFBQ1AsUUFBUTtRQUMzQixJQUFJQSxNQUFNUSxJQUFJLEtBQUssTUFBTTtZQUN2QixJQUFJUixNQUFNUyxJQUFJLEtBQUssWUFBWSxPQUFPSixXQUFXLENBQUNMLE1BQU1RLElBQUksQ0FBQyxLQUFLLFVBQVU7Z0JBQzFFLE1BQU1FLFFBQVFMLFdBQVcsQ0FBQ0wsTUFB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
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lLCB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgZ2V0VmFsdWVXaXRoRGVmYXVsdCBmcm9tICcuLi8uLi9nZXREZWZhdWx0VmFsdWUnXG5pbXBvcnQgeyBjbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvZ2V0RXhpc3RpbmdSb3dEb2MnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZFxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBmb2xsb3dpbmcgYWN0aW9ucywgaW4gb3JkZXI6XG4vLyAtIFNhbml0aXplIGluY29taW5nIGRhdGFcbi8vIC0gRXhlY3V0ZSBmaWVsZCBob29rc1xuLy8gLSBFeGVjdXRlIGZpZWxkIGFjY2VzcyBjb250cm9sXG4vLyAtIE1lcmdlIG9yaWdpbmFsIGRvY3VtZW50IGRhdGEgaW50byBpbmNvbWluZyBkYXRhXG4vLyAtIENvbXB1dGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuZGVmaW5lZCBmaWVsZHNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyA8VD4oe1xuICBpZCxcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ2lkJykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdcblxuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHBhcnNlRmxvYXQodmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQudHlwZSA9PT0gJ3RleHQnICYmXG4gICAgICAgIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXT8udG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0udG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNhbml0aXplIGluY29taW5nIGRhdGFcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdbXSkubWFwKChjb29yZGluYXRlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvb3JkaW5hdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gYXMgc3RyaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICd0cnVlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB0cnVlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ2ZhbHNlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBmYWxzZVxuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJpY2hUZXh0SlNPTiA9IEpTT04ucGFyc2Uoc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSByaWNoVGV4dEpTT05cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIERpc3JlZ2FyZCB0aGlzIGRhdGEgYXMgaXQgaXMgbm90IHZhbGlkLlxuICAgICAgICAgICAgLy8gV2lsbCBiZSByZXBvcnRlZCB0byB1c2VyIGJ5IGZpZWxkIHZhbGlkYXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdub25lJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnbnVsbCcgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHsgcmVsYXRpb25Ubzogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gcmVsYXRlZERvYy5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0ge1xuICAgICAgICAgICAgICAgICAgLi4ucmVsYXRlZERvYyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHJlbGF0ZWREb2MudmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmXG4gICAgICAgICAgICBmaWVsZC5oYXNNYW55ICE9PSB0cnVlICYmXG4gICAgICAgICAgICB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24odmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSB2YWx1ZS5yZWxhdGlvblRvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgIGZpZWxkQWZmZWN0c0RhdGEoY29sbGVjdGlvbkZpZWxkKSAmJiBjb2xsZWN0aW9uRmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHsgLi4udmFsdWUsIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlLnZhbHVlIGFzIHN0cmluZykgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHVua25vd24sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0gcGFyc2VGbG9hdChyZWxhdGVkRG9jIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2VzIG9mIGFycmF5cyBiZWluZyBpbnRlbnRpb25hbGx5IHNldCB0byAwXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJzAnIHx8IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAwKSB7XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgaG9va3NcbiAgICBpZiAoZmllbGQuaG9va3M/LmJlZm9yZVZhbGlkYXRlKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgYWNjZXNzIGNvbnRyb2xcbiAgICBpZiAoZmllbGQuYWNjZXNzICYmIGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdmVycmlkZUFjY2Vzc1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBhd2FpdCBmaWVsZC5hY2Nlc3Nbb3BlcmF0aW9uXSh7IGlkLCBkYXRhLCBkb2MsIHJlcSwgc2libGluZ0RhdGEgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgZGVsZXRlIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIG5vIGluY29taW5nIGRhdGEsIGJ1dCBleGlzdGluZyBkb2N1bWVudCBkYXRhIGlzIGZvdW5kLCBtZXJnZSBpdCBpblxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSBjb21wdXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBhd2FpdCBnZXRWYWx1ZVdpdGhEZWZhdWx0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICAgICAgdmFsdWU6IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyYXZlcnNlIHN1YmZpZWxkc1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgY29uc3QgZ3JvdXBEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGNvbnN0IGdyb3VwRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IGdyb3VwRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICByb3cuYmxvY2tUeXBlID0gYmxvY2tUeXBlVG9NYXRjaFxuXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiU2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IHRhYlNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJTaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJ2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24iLCJnZXRWYWx1ZVdpdGhEZWZhdWx0IiwiY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jIiwiZ2V0RXhpc3RpbmdSb3dEb2MiLCJ0cmF2ZXJzZUZpZWxkcyIsInByb21pc2UiLCJpZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImZpZWxkIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwicGFyc2VGbG9hdCIsInRvU3RyaW5nIiwidHJpbW1lZCIsInRyaW0iLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjb29yZGluYXRlIiwiaSIsInJpY2hUZXh0SlNPTiIsIkpTT04iLCJwYXJzZSIsImhhc01hbnkiLCJyZWxhdGlvblRvIiwiZm9yRWFjaCIsInJlbGF0ZWREb2MiLCJyZWxhdGVkQ29sbGVjdGlvbiIsInBheWxvYWQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImZpbmQiLCJzbHVnIiwicmVsYXRpb25zaGlwSURGaWVsZCIsImZpZWxkcyIsImNvbGxlY3Rpb25GaWVsZCIsImhvb2tzIiwiYmVmb3JlVmFsaWRhdGUiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFjY2VzcyIsInJlc3VsdCIsImRlZmF1bHRWYWx1ZSIsImxvY2FsZSIsInVzZXIiLCJncm91cERhdGEiLCJncm91cERvYyIsInJvd3MiLCJwcm9taXNlcyIsInJvdyIsInB1c2giLCJhbGwiLCJyb3dTaWJsaW5nRG9jIiwiYmxvY2tUeXBlVG9NYXRjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFicyIsInRhYiJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DLEdBTXBDLFNBQVNBLGdCQUFnQixFQUFFQyxVQUFVLEVBQUVDLHdCQUF3QixRQUFRLHFCQUFvQjtBQUMzRixPQUFPQyx5QkFBeUIsd0JBQXVCO0FBQ3ZELFNBQVNDLHdCQUF3QixRQUFRLDJDQUEwQztBQUNuRixTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBbUM7QUFDckUsU0FBU0MsY0FBYyxRQUFRLG1CQUFrQjtBQWlCakQsb0VBQW9FO0FBQ3BFLDJCQUEyQjtBQUMzQix3QkFBd0I7QUFDeEIsaUNBQWlDO0FBQ2pDLG9EQUFvRDtBQUNwRCxnREFBZ0Q7QUFFaEQsT0FBTyxNQUFNQyxVQUFVLE9BQVUsRUFDL0JDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLEdBQUcsRUFDSEMsV0FB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
@@ -1,18 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "traverseFields", {
6
- enumerable: true,
7
- get: function() {
8
- return traverseFields;
9
- }
10
- });
11
- const _promise = require("./promise");
12
- const traverseFields = async ({ id, collection, context, data, doc, fields, global, operation, overrideAccess, req, siblingData, siblingDoc })=>{
1
+ import { promise } from './promise';
2
+ export const traverseFields = async ({ id, collection, context, data, doc, fields, global, operation, overrideAccess, req, siblingData, siblingDoc })=>{
13
3
  const promises = [];
14
4
  fields.forEach((field)=>{
15
- promises.push((0, _promise.promise)({
5
+ promises.push(promise({
16
6
  id,
17
7
  collection,
18
8
  context,
@@ -30,4 +20,4 @@ const traverseFields = async ({ id, collection, context, data, doc, fields, glob
30
20
  await Promise.all(promises);
31
21
  };
32
22
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBwcm9taXNlIH0gZnJvbSAnLi9wcm9taXNlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFRcbiAgZG9jOiBUXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBwcm9taXNlcyA9IFtdXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBwcm9taXNlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pLFxuICAgIClcbiAgfSlcbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJpZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImZpZWxkcyIsImdsb2JhbCIsIm9wZXJhdGlvbiIsIm92ZXJyaWRlQWNjZXNzIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwiZmllbGQiLCJwdXNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJhbGwiXSwibWFwcGluZ3MiOiI7Ozs7K0JBc0JhQTs7O2VBQUFBOzs7eUJBakJXO0FBaUJqQixNQUFNQSxpQkFBaUIsT0FBVSxFQUN0Q0MsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGNBQWMsRUFDZEMsR0FBRyxFQUNIQyxXQUFXLEVBQ1hDLFVBQVUsRUFDRjtJQUNSLE1BQU1DLFdBQVcsRUFBRTtJQUNuQlAsT0FBT1EsT0FBTyxDQUFDLENBQUNDO1FBQ2RGLFNBQVNHLElBQUksQ0FDWEMsSUFBQUEsZ0JBQU8sRUFBQztZQUNOaEI7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQVU7WUFDQVI7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7UUFDRjtJQUVKO0lBQ0EsTUFBTU0sUUFBUUMsR0FBRyxDQUFDTjtBQUNwQiJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBwcm9taXNlIH0gZnJvbSAnLi9wcm9taXNlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFRcbiAgZG9jOiBUXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBwcm9taXNlcyA9IFtdXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBwcm9taXNlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pLFxuICAgIClcbiAgfSlcbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsInRyYXZlcnNlRmllbGRzIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJmaWVsZHMiLCJnbG9iYWwiLCJvcGVyYXRpb24iLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsInByb21pc2VzIiwiZm9yRWFjaCIsImZpZWxkIiwicHVzaCIsIlByb21pc2UiLCJhbGwiXSwibWFwcGluZ3MiOiJBQUtBLFNBQVNBLE9BQU8sUUFBUSxZQUFXO0FBaUJuQyxPQUFPLE1BQU1DLGlCQUFpQixPQUFVLEVBQ3RDQyxFQUFFLEVBQ0ZDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsY0FBYyxFQUNkQyxHQUFHLEVBQ0hDLFdBQVcsRUFDWEMsVUFBVSxFQUNGO0lBQ1IsTUFBTUMsV0FBVyxFQUFFO0lBQ25CUCxPQUFPUSxPQUFPLENBQUMsQ0FBQ0M7UUFDZEYsU0FBU0csSUFBSSxDQUNYakIsUUFBUTtZQUNORTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBVTtZQUNBUjtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztRQUNGO0lBRUo7SUFDQSxNQUFNSyxRQUFRQyxHQUFHLENBQUNMO0FBQ3BCLEVBQUMifQ==
@@ -1,29 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _deepmerge = /*#__PURE__*/ _interop_require_default(require("deepmerge"));
12
- const _types = require("./config/types");
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
1
+ import merge from 'deepmerge';
2
+ import { fieldAffectsData, fieldHasSubFields } from './config/types';
18
3
  const mergeBaseFields = (fields, baseFields)=>{
19
4
  const mergedFields = [
20
5
  ...fields || []
21
6
  ];
22
7
  baseFields.forEach((baseField)=>{
23
8
  let matchedIndex = null;
24
- if ((0, _types.fieldAffectsData)(baseField)) {
9
+ if (fieldAffectsData(baseField)) {
25
10
  const match = mergedFields.find((field, i)=>{
26
- if ((0, _types.fieldAffectsData)(field) && field.name === baseField.name) {
11
+ if (fieldAffectsData(field) && field.name === baseField.name) {
27
12
  matchedIndex = i;
28
13
  return true;
29
14
  }
@@ -34,8 +19,8 @@ const mergeBaseFields = (fields, baseFields)=>{
34
19
  ...match
35
20
  };
36
21
  mergedFields.splice(matchedIndex, 1);
37
- const mergedField = (0, _deepmerge.default)(baseField, matchCopy);
38
- if ((0, _types.fieldHasSubFields)(baseField) && (0, _types.fieldHasSubFields)(matchCopy)) {
22
+ const mergedField = merge(baseField, matchCopy);
23
+ if (fieldHasSubFields(baseField) && fieldHasSubFields(matchCopy)) {
39
24
  mergedField.fields = mergeBaseFields(matchCopy.fields, baseField.fields);
40
25
  }
41
26
  mergedFields.push(mergedField);
@@ -46,6 +31,6 @@ const mergeBaseFields = (fields, baseFields)=>{
46
31
  });
47
32
  return mergedFields;
48
33
  };
49
- const _default = mergeBaseFields;
34
+ export default mergeBaseFields;
50
35
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBmaWVsZEhhc1N1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5jb25zdCBtZXJnZUJhc2VGaWVsZHMgPSAoZmllbGRzOiBGaWVsZFtdLCBiYXNlRmllbGRzOiBGaWVsZFtdKTogRmllbGRbXSA9PiB7XG4gIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi4oZmllbGRzIHx8IFtdKV1cblxuICBiYXNlRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZCkgPT4ge1xuICAgIGxldCBtYXRjaGVkSW5kZXggPSBudWxsXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShiYXNlRmllbGQpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1lcmdlZEZpZWxkcy5maW5kKChmaWVsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gYmFzZUZpZWxkLm5hbWUpIHtcbiAgICAgICAgICBtYXRjaGVkSW5kZXggPSBpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoQ29weTogRmllbGQgPSB7IC4uLm1hdGNoIH1cbiAgICAgICAgbWVyZ2VkRmllbGRzLnNwbGljZShtYXRjaGVkSW5kZXgsIDEpXG5cbiAgICAgICAgY29uc3QgbWVyZ2VkRmllbGQgPSBtZXJnZTxGaWVsZD4oYmFzZUZpZWxkLCBtYXRjaENvcHkpXG5cbiAgICAgICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGJhc2VGaWVsZCkgJiYgZmllbGRIYXNTdWJGaWVsZHMobWF0Y2hDb3B5KSkge1xuICAgICAgICAgIDsobWVyZ2VkRmllbGQgYXMgRmllbGRXaXRoU3ViRmllbGRzKS5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoXG4gICAgICAgICAgICBtYXRjaENvcHkuZmllbGRzLFxuICAgICAgICAgICAgYmFzZUZpZWxkLmZpZWxkcyxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaChtZXJnZWRGaWVsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKGJhc2VGaWVsZClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG1lcmdlZEZpZWxkc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZUJhc2VGaWVsZHNcbiJdLCJuYW1lcyI6WyJtZXJnZUJhc2VGaWVsZHMiLCJmaWVsZHMiLCJiYXNlRmllbGRzIiwibWVyZ2VkRmllbGRzIiwiZm9yRWFjaCIsImJhc2VGaWVsZCIsIm1hdGNoZWRJbmRleCIsImZpZWxkQWZmZWN0c0RhdGEiLCJtYXRjaCIsImZpbmQiLCJmaWVsZCIsImkiLCJuYW1lIiwibWF0Y2hDb3B5Iiwic3BsaWNlIiwibWVyZ2VkRmllbGQiLCJtZXJnZSIsImZpZWxkSGFzU3ViRmllbGRzIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkE2Q0E7OztlQUFBOzs7a0VBN0NrQjt1QkFJa0M7Ozs7OztBQUVwRCxNQUFNQSxrQkFBa0IsQ0FBQ0MsUUFBaUJDO0lBQ3hDLE1BQU1DLGVBQWU7V0FBS0YsVUFBVSxFQUFFO0tBQUU7SUFFeENDLFdBQVdFLE9BQU8sQ0FBQyxDQUFDQztRQUNsQixJQUFJQyxlQUFlO1FBRW5CLElBQUlDLElBQUFBLHVCQUFnQixFQUFDRixZQUFZO1lBQy9CLE1BQU1HLFFBQVFMLGFBQWFNLElBQUksQ0FBQyxDQUFDQyxPQUFPQztnQkFDdEMsSUFBSUosSUFBQUEsdUJBQWdCLEVBQUNHLFVBQVVBLE1BQU1FLElBQUksS0FBS1AsVUFBVU8sSUFBSSxFQUFFO29CQUM1RE4sZUFBZUs7b0JBQ2YsT0FBTztnQkFDVDtnQkFFQSxPQUFPO1lBQ1Q7WUFFQSxJQUFJSCxPQUFPO2dCQUNULE1BQU1LLFlBQW1CO29CQUFFLEdBQUdMLEtBQUs7Z0JBQUM7Z0JBQ3BDTCxhQUFhVyxNQUFNLENBQUNSLGNBQWM7Z0JBRWxDLE1BQU1TLGNBQWNDLElBQUFBLGtCQUFLLEVBQVFYLFdBQVdRO2dCQUU1QyxJQUFJSSxJQUFBQSx3QkFBaUIsRUFBQ1osY0FBY1ksSUFBQUEsd0JBQWlCLEVBQUNKLFlBQVk7b0JBQzlERSxZQUFtQ2QsTUFBTSxHQUFHRCxnQkFDNUNhLFVBQVVaLE1BQU0sRUFDaEJJLFVBQVVKLE1BQU07Z0JBRXBCO2dCQUVBRSxhQUFhZSxJQUFJLENBQUNIO1lBQ3BCLE9BQU87Z0JBQ0xaLGFBQWFlLElBQUksQ0FBQ2I7WUFDcEI7UUFDRjtJQUNGO0lBRUEsT0FBT0Y7QUFDVDtNQUVBLFdBQWVIIn0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBmaWVsZEhhc1N1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5jb25zdCBtZXJnZUJhc2VGaWVsZHMgPSAoZmllbGRzOiBGaWVsZFtdLCBiYXNlRmllbGRzOiBGaWVsZFtdKTogRmllbGRbXSA9PiB7XG4gIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi4oZmllbGRzIHx8IFtdKV1cblxuICBiYXNlRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZCkgPT4ge1xuICAgIGxldCBtYXRjaGVkSW5kZXggPSBudWxsXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShiYXNlRmllbGQpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1lcmdlZEZpZWxkcy5maW5kKChmaWVsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gYmFzZUZpZWxkLm5hbWUpIHtcbiAgICAgICAgICBtYXRjaGVkSW5kZXggPSBpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoQ29weTogRmllbGQgPSB7IC4uLm1hdGNoIH1cbiAgICAgICAgbWVyZ2VkRmllbGRzLnNwbGljZShtYXRjaGVkSW5kZXgsIDEpXG5cbiAgICAgICAgY29uc3QgbWVyZ2VkRmllbGQgPSBtZXJnZTxGaWVsZD4oYmFzZUZpZWxkLCBtYXRjaENvcHkpXG5cbiAgICAgICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGJhc2VGaWVsZCkgJiYgZmllbGRIYXNTdWJGaWVsZHMobWF0Y2hDb3B5KSkge1xuICAgICAgICAgIDsobWVyZ2VkRmllbGQgYXMgRmllbGRXaXRoU3ViRmllbGRzKS5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoXG4gICAgICAgICAgICBtYXRjaENvcHkuZmllbGRzLFxuICAgICAgICAgICAgYmFzZUZpZWxkLmZpZWxkcyxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaChtZXJnZWRGaWVsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKGJhc2VGaWVsZClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG1lcmdlZEZpZWxkc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZUJhc2VGaWVsZHNcbiJdLCJuYW1lcyI6WyJtZXJnZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJmaWVsZEhhc1N1YkZpZWxkcyIsIm1lcmdlQmFzZUZpZWxkcyIsImZpZWxkcyIsImJhc2VGaWVsZHMiLCJtZXJnZWRGaWVsZHMiLCJmb3JFYWNoIiwiYmFzZUZpZWxkIiwibWF0Y2hlZEluZGV4IiwibWF0Y2giLCJmaW5kIiwiZmllbGQiLCJpIiwibmFtZSIsIm1hdGNoQ29weSIsInNwbGljZSIsIm1lcmdlZEZpZWxkIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxZQUFXO0FBSTdCLFNBQVNDLGdCQUFnQixFQUFFQyxpQkFBaUIsUUFBUSxpQkFBZ0I7QUFFcEUsTUFBTUMsa0JBQWtCLENBQUNDLFFBQWlCQztJQUN4QyxNQUFNQyxlQUFlO1dBQUtGLFVBQVUsRUFBRTtLQUFFO0lBRXhDQyxXQUFXRSxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUMsZUFBZTtRQUVuQixJQUFJUixpQkFBaUJPLFlBQVk7WUFDL0IsTUFBTUUsUUFBUUosYUFBYUssSUFBSSxDQUFDLENBQUNDLE9BQU9DO2dCQUN0QyxJQUFJWixpQkFBaUJXLFVBQVVBLE1BQU1FLElBQUksS0FBS04sVUFBVU0sSUFBSSxFQUFFO29CQUM1REwsZUFBZUk7b0JBQ2YsT0FBTztnQkFDVDtnQkFFQSxPQUFPO1lBQ1Q7WUFFQSxJQUFJSCxPQUFPO2dCQUNULE1BQU1LLFlBQW1CO29CQUFFLEdBQUdMLEtBQUs7Z0JBQUM7Z0JBQ3BDSixhQUFhVSxNQUFNLENBQUNQLGNBQWM7Z0JBRWxDLE1BQU1RLGNBQWNqQixNQUFhUSxXQUFXTztnQkFFNUMsSUFBSWIsa0JBQWtCTSxjQUFjTixrQkFBa0JhLFlBQVk7b0JBQzlERSxZQUFtQ2IsTUFBTSxHQUFHRCxnQkFDNUNZLFVBQVVYLE1BQU0sRUFDaEJJLFVBQVVKLE1BQU07Z0JBRXBCO2dCQUVBRSxhQUFhWSxJQUFJLENBQUNEO1lBQ3BCLE9BQU87Z0JBQ0xYLGFBQWFZLElBQUksQ0FBQ1Y7WUFDcEI7UUFDRjtJQUNGO0lBRUEsT0FBT0Y7QUFDVDtBQUVBLGVBQWVILGdCQUFlIn0=
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _default = [
1
+ export default [
12
2
  'text',
13
3
  'textarea',
14
4
  'code',
@@ -20,4 +10,4 @@ const _default = [
20
10
  'date'
21
11
  ];
22
12
 
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvc29ydGFibGVGaWVsZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFsndGV4dCcsICd0ZXh0YXJlYScsICdjb2RlJywgJ2pzb24nLCAnbnVtYmVyJywgJ2VtYWlsJywgJ3JhZGlvJywgJ3NlbGVjdCcsICdkYXRlJ11cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OytCQUFBOzs7ZUFBQTs7O01BQUEsV0FBZTtJQUFDO0lBQVE7SUFBWTtJQUFRO0lBQVE7SUFBVTtJQUFTO0lBQVM7SUFBVTtDQUFPIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvc29ydGFibGVGaWVsZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFsndGV4dCcsICd0ZXh0YXJlYScsICdjb2RlJywgJ2pzb24nLCAnbnVtYmVyJywgJ2VtYWlsJywgJ3JhZGlvJywgJ3NlbGVjdCcsICdkYXRlJ11cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0lBQUM7SUFBUTtJQUFZO0lBQVE7SUFBUTtJQUFVO0lBQVM7SUFBUztJQUFVO0NBQU8sQ0FBQSJ9