@payloadcms/db-postgres 0.8.6 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +5 -52
  3. package/dist/count.d.ts.map +1 -1
  4. package/dist/count.js +3 -3
  5. package/dist/createMigration.d.ts.map +1 -1
  6. package/dist/createMigration.js +10 -4
  7. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  8. package/dist/find/buildFindManyArgs.js +2 -1
  9. package/dist/find/findMany.d.ts.map +1 -1
  10. package/dist/find/findMany.js +3 -3
  11. package/dist/find/traverseFields.d.ts +2 -1
  12. package/dist/find/traverseFields.d.ts.map +1 -1
  13. package/dist/find/traverseFields.js +9 -3
  14. package/dist/init.js +3 -2
  15. package/dist/migrate.js +3 -3
  16. package/dist/migrateDown.js +2 -2
  17. package/dist/migrateRefresh.js +2 -2
  18. package/dist/migrateReset.js +3 -3
  19. package/dist/migrateStatus.js +2 -2
  20. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  21. package/dist/queries/getTableColumnFromPath.js +4 -3
  22. package/dist/queries/parseParams.d.ts.map +1 -1
  23. package/dist/queries/parseParams.js +3 -1
  24. package/dist/queries/sanitizeQueryValue.d.ts +2 -1
  25. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  26. package/dist/queries/sanitizeQueryValue.js +11 -2
  27. package/dist/schema/build.d.ts +10 -2
  28. package/dist/schema/build.d.ts.map +1 -1
  29. package/dist/schema/build.js +23 -6
  30. package/dist/schema/traverseFields.d.ts +6 -1
  31. package/dist/schema/traverseFields.d.ts.map +1 -1
  32. package/dist/schema/traverseFields.js +46 -17
  33. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  34. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  35. package/dist/transform/read/hasManyNumber.js +14 -4
  36. package/dist/transform/read/hasManyText.d.ts +2 -1
  37. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  38. package/dist/transform/read/hasManyText.js +14 -4
  39. package/dist/transform/read/relationship.d.ts +2 -1
  40. package/dist/transform/read/relationship.d.ts.map +1 -1
  41. package/dist/transform/read/relationship.js +16 -7
  42. package/dist/transform/read/traverseFields.d.ts +5 -1
  43. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  44. package/dist/transform/read/traverseFields.js +118 -85
  45. package/dist/transform/write/array.d.ts +6 -1
  46. package/dist/transform/write/array.d.ts.map +1 -1
  47. package/dist/transform/write/array.js +7 -3
  48. package/dist/transform/write/blocks.d.ts +6 -1
  49. package/dist/transform/write/blocks.d.ts.map +1 -1
  50. package/dist/transform/write/blocks.js +5 -3
  51. package/dist/transform/write/traverseFields.d.ts +6 -1
  52. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  53. package/dist/transform/write/traverseFields.js +40 -15
  54. package/dist/types.d.ts +9 -5
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  57. package/dist/upsertRow/insertArrays.js +5 -2
  58. package/dist/utilities/migrationTableExists.d.ts +2 -2
  59. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  60. package/dist/utilities/migrationTableExists.js +10 -6
  61. package/dist/utilities/pushDevSchema.d.ts +9 -0
  62. package/dist/utilities/pushDevSchema.d.ts.map +1 -0
  63. package/dist/utilities/pushDevSchema.js +59 -0
  64. package/dist/utilities/requireDrizzleKit.d.ts +14 -0
  65. package/dist/utilities/requireDrizzleKit.d.ts.map +1 -0
  66. package/dist/utilities/requireDrizzleKit.js +13 -0
  67. package/package.json +6 -6
@@ -8,20 +8,25 @@ Object.defineProperty(exports, "transformRelationship", {
8
8
  return transformRelationship;
9
9
  }
10
10
  });
11
- const transformRelationship = ({ field, locale, ref, relations })=>{
11
+ const transformRelationship = ({ field, locale, ref, relations, withinArrayOrBlockLocale })=>{
12
12
  let result;
13
13
  if (!('hasMany' in field) || field.hasMany === false) {
14
- const relation = relations[0];
14
+ let relation = relations[0];
15
+ if (withinArrayOrBlockLocale) {
16
+ relation = relations.find((rel)=>rel.locale === withinArrayOrBlockLocale);
17
+ }
15
18
  if (relation) {
16
19
  // Handle hasOne Poly
17
20
  if (Array.isArray(field.relationTo)) {
18
- const matchedRelation = Object.entries(relation).find(([key, val])=>val !== null && ![
21
+ const matchedRelation = Object.entries(relation).find(([key, val])=>{
22
+ return val !== null && ![
19
23
  'id',
20
24
  'locale',
21
25
  'order',
22
26
  'parent',
23
27
  'path'
24
- ].includes(key));
28
+ ].includes(key);
29
+ });
25
30
  if (matchedRelation) {
26
31
  const relationTo = matchedRelation[0].replace('ID', '');
27
32
  result = {
@@ -38,10 +43,14 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
38
43
  } else {
39
44
  const transformedRelations = [];
40
45
  relations.forEach((relation)=>{
46
+ let matchedLocale = true;
47
+ if (withinArrayOrBlockLocale) {
48
+ matchedLocale = relation.locale === withinArrayOrBlockLocale;
49
+ }
41
50
  // Handle hasMany
42
51
  if (!Array.isArray(field.relationTo)) {
43
52
  const relatedData = relation[`${field.relationTo}ID`];
44
- if (relatedData) {
53
+ if (relatedData && matchedLocale) {
45
54
  transformedRelations.push(relatedData);
46
55
  }
47
56
  } else {
@@ -52,7 +61,7 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
52
61
  'order',
53
62
  'parent',
54
63
  'path'
55
- ].includes(key));
64
+ ].includes(key) && matchedLocale);
56
65
  if (matchedRelation) {
57
66
  const relationTo = matchedRelation[0].replace('ID', '');
58
67
  transformedRelations.push({
@@ -71,4 +80,4 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
71
80
  }
72
81
  };
73
82
 
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9yZWxhdGlvbnNoaXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb25zaGlwRmllbGQsIFVwbG9hZEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICByZWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbn1cblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVJlbGF0aW9uc2hpcCA9ICh7IGZpZWxkLCBsb2NhbGUsIHJlZiwgcmVsYXRpb25zIH06IEFyZ3MpID0+IHtcbiAgbGV0IHJlc3VsdDogdW5rbm93blxuXG4gIGlmICghKCdoYXNNYW55JyBpbiBmaWVsZCkgfHwgZmllbGQuaGFzTWFueSA9PT0gZmFsc2UpIHtcbiAgICBjb25zdCByZWxhdGlvbiA9IHJlbGF0aW9uc1swXVxuXG4gICAgaWYgKHJlbGF0aW9uKSB7XG4gICAgICAvLyBIYW5kbGUgaGFzT25lIFBvbHlcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uKS5maW5kKFxuICAgICAgICAgIChba2V5LCB2YWxdKSA9PlxuICAgICAgICAgICAgdmFsICE9PSBudWxsICYmICFbJ2lkJywgJ2xvY2FsZScsICdvcmRlcicsICdwYXJlbnQnLCAncGF0aCddLmluY2x1ZGVzKGtleSksXG4gICAgICAgIClcblxuICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSB7XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25UbyA9IG1hdGNoZWRSZWxhdGlvblswXS5yZXBsYWNlKCdJRCcsICcnKVxuXG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkUmVsYXRpb25bMV0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBIYW5kbGUgaGFzT25lXG4gICAgICAgIGNvbnN0IHJlbGF0ZWREYXRhID0gcmVsYXRpb25bYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdXG4gICAgICAgIHJlc3VsdCA9IHJlbGF0ZWREYXRhXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVsYXRpb25zID0gW11cblxuICAgIHJlbGF0aW9ucy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgLy8gSGFuZGxlIGhhc01hbnlcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICBjb25zdCByZWxhdGVkRGF0YSA9IHJlbGF0aW9uW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXVxuXG4gICAgICAgIGlmIChyZWxhdGVkRGF0YSkge1xuICAgICAgICAgIHRyYW5zZm9ybWVkUmVsYXRpb25zLnB1c2gocmVsYXRlZERhdGEpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSBoYXNNYW55IFBvbHlcbiAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gT2JqZWN0LmVudHJpZXMocmVsYXRpb24pLmZpbmQoXG4gICAgICAgICAgKFtrZXksIHZhbF0pID0+XG4gICAgICAgICAgICB2YWwgIT09IG51bGwgJiYgIVsnaWQnLCAnbG9jYWxlJywgJ29yZGVyJywgJ3BhcmVudCcsICdwYXRoJ10uaW5jbHVkZXMoa2V5KSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChtYXRjaGVkUmVsYXRpb24pIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gbWF0Y2hlZFJlbGF0aW9uWzBdLnJlcGxhY2UoJ0lEJywgJycpXG5cbiAgICAgICAgICB0cmFuc2Zvcm1lZFJlbGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgICAgICB2YWx1ZTogbWF0Y2hlZFJlbGF0aW9uWzFdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmVzdWx0ID0gdHJhbnNmb3JtZWRSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChsb2NhbGUpIHtcbiAgICByZWZbZmllbGQubmFtZV1bbG9jYWxlXSA9IHJlc3VsdFxuICB9IGVsc2Uge1xuICAgIHJlZltmaWVsZC5uYW1lXSA9IHJlc3VsdFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtUmVsYXRpb25zaGlwIiwiZmllbGQiLCJsb2NhbGUiLCJyZWYiLCJyZWxhdGlvbnMiLCJyZXN1bHQiLCJoYXNNYW55IiwicmVsYXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwibWF0Y2hlZFJlbGF0aW9uIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbmQiLCJrZXkiLCJ2YWwiLCJpbmNsdWRlcyIsInJlcGxhY2UiLCJ2YWx1ZSIsInJlbGF0ZWREYXRhIiwidHJhbnNmb3JtZWRSZWxhdGlvbnMiLCJmb3JFYWNoIiwicHVzaCIsIm5hbWUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFVdkJBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHdCQUF3QixDQUFDLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLFNBQVMsRUFBUTtJQUMzRSxJQUFJQztJQUVKLElBQUksQ0FBRSxDQUFBLGFBQWFKLEtBQUksS0FBTUEsTUFBTUssT0FBTyxLQUFLLE9BQU87UUFDcEQsTUFBTUMsV0FBV0gsU0FBUyxDQUFDLEVBQUU7UUFFN0IsSUFBSUcsVUFBVTtZQUNaLHFCQUFxQjtZQUNyQixJQUFJQyxNQUFNQyxPQUFPLENBQUNSLE1BQU1TLFVBQVUsR0FBRztnQkFDbkMsTUFBTUMsa0JBQWtCQyxPQUFPQyxPQUFPLENBQUNOLFVBQVVPLElBQUksQ0FDbkQsQ0FBQyxDQUFDQyxLQUFLQyxJQUFJLEdBQ1RBLFFBQVEsUUFBUSxDQUFDO3dCQUFDO3dCQUFNO3dCQUFVO3dCQUFTO3dCQUFVO3FCQUFPLENBQUNDLFFBQVEsQ0FBQ0Y7Z0JBRzFFLElBQUlKLGlCQUFpQjtvQkFDbkIsTUFBTUQsYUFBYUMsZUFBZSxDQUFDLEVBQUUsQ0FBQ08sT0FBTyxDQUFDLE1BQU07b0JBRXBEYixTQUFTO3dCQUNQSzt3QkFDQVMsT0FBT1IsZUFBZSxDQUFDLEVBQUU7b0JBQzNCO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxnQkFBZ0I7Z0JBQ2hCLE1BQU1TLGNBQWNiLFFBQVEsQ0FBQyxDQUFDLEVBQUVOLE1BQU1TLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckRMLFNBQVNlO1lBQ1g7UUFDRjtJQUNGLE9BQU87UUFDTCxNQUFNQyx1QkFBdUIsRUFBRTtRQUUvQmpCLFVBQVVrQixPQUFPLENBQUMsQ0FBQ2Y7WUFDakIsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDUixNQUFNUyxVQUFVLEdBQUc7Z0JBQ3BDLE1BQU1VLGNBQWNiLFFBQVEsQ0FBQyxDQUFDLEVBQUVOLE1BQU1TLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFckQsSUFBSVUsYUFBYTtvQkFDZkMscUJBQXFCRSxJQUFJLENBQUNIO2dCQUM1QjtZQUNGLE9BQU87Z0JBQ0wsc0JBQXNCO2dCQUN0QixNQUFNVCxrQkFBa0JDLE9BQU9DLE9BQU8sQ0FBQ04sVUFBVU8sSUFBSSxDQUNuRCxDQUFDLENBQUNDLEtBQUtDLElBQUksR0FDVEEsUUFBUSxRQUFRLENBQUM7d0JBQUM7d0JBQU07d0JBQVU7d0JBQVM7d0JBQVU7cUJBQU8sQ0FBQ0MsUUFBUSxDQUFDRjtnQkFHMUUsSUFBSUosaUJBQWlCO29CQUNuQixNQUFNRCxhQUFhQyxlQUFlLENBQUMsRUFBRSxDQUFDTyxPQUFPLENBQUMsTUFBTTtvQkFFcERHLHFCQUFxQkUsSUFBSSxDQUFDO3dCQUN4QmI7d0JBQ0FTLE9BQU9SLGVBQWUsQ0FBQyxFQUFFO29CQUMzQjtnQkFDRjtZQUNGO1FBQ0Y7UUFFQU4sU0FBU2dCO0lBQ1g7SUFFQSxJQUFJbkIsUUFBUTtRQUNWQyxHQUFHLENBQUNGLE1BQU11QixJQUFJLENBQUMsQ0FBQ3RCLE9BQU8sR0FBR0c7SUFDNUIsT0FBTztRQUNMRixHQUFHLENBQUNGLE1BQU11QixJQUFJLENBQUMsR0FBR25CO0lBQ3BCO0FBQ0YifQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9yZWxhdGlvbnNoaXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb25zaGlwRmllbGQsIFVwbG9hZEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICByZWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAgPSAoe1xuICBmaWVsZCxcbiAgbG9jYWxlLFxuICByZWYsXG4gIHJlbGF0aW9ucyxcbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxufTogQXJncykgPT4ge1xuICBsZXQgcmVzdWx0OiB1bmtub3duXG5cbiAgaWYgKCEoJ2hhc01hbnknIGluIGZpZWxkKSB8fCBmaWVsZC5oYXNNYW55ID09PSBmYWxzZSkge1xuICAgIGxldCByZWxhdGlvbiA9IHJlbGF0aW9uc1swXVxuXG4gICAgaWYgKHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSkge1xuICAgICAgcmVsYXRpb24gPSByZWxhdGlvbnMuZmluZCgocmVsKSA9PiByZWwubG9jYWxlID09PSB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uKSB7XG4gICAgICAvLyBIYW5kbGUgaGFzT25lIFBvbHlcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uKS5maW5kKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhWydpZCcsICdsb2NhbGUnLCAnb3JkZXInLCAncGFyZW50JywgJ3BhdGgnXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBtYXRjaGVkUmVsYXRpb25bMF0ucmVwbGFjZSgnSUQnLCAnJylcblxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgICAgICB2YWx1ZTogbWF0Y2hlZFJlbGF0aW9uWzFdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGFuZGxlIGhhc09uZVxuICAgICAgICBjb25zdCByZWxhdGVkRGF0YSA9IHJlbGF0aW9uW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXVxuICAgICAgICByZXN1bHQgPSByZWxhdGVkRGF0YVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFJlbGF0aW9ucyA9IFtdXG5cbiAgICByZWxhdGlvbnMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgIGxldCBtYXRjaGVkTG9jYWxlID0gdHJ1ZVxuXG4gICAgICBpZiAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKSB7XG4gICAgICAgIG1hdGNoZWRMb2NhbGUgPSByZWxhdGlvbi5sb2NhbGUgPT09IHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgaGFzTWFueVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0ZWREYXRhID0gcmVsYXRpb25bYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdXG5cbiAgICAgICAgaWYgKHJlbGF0ZWREYXRhICYmIG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1lZFJlbGF0aW9ucy5wdXNoKHJlbGF0ZWREYXRhKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBIYW5kbGUgaGFzTWFueSBQb2x5XG4gICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uKS5maW5kKFxuICAgICAgICAgIChba2V5LCB2YWxdKSA9PlxuICAgICAgICAgICAgdmFsICE9PSBudWxsICYmXG4gICAgICAgICAgICAhWydpZCcsICdsb2NhbGUnLCAnb3JkZXInLCAncGFyZW50JywgJ3BhdGgnXS5pbmNsdWRlcyhrZXkpICYmXG4gICAgICAgICAgICBtYXRjaGVkTG9jYWxlLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBtYXRjaGVkUmVsYXRpb25bMF0ucmVwbGFjZSgnSUQnLCAnJylcblxuICAgICAgICAgIHRyYW5zZm9ybWVkUmVsYXRpb25zLnB1c2goe1xuICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkUmVsYXRpb25bMV0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXN1bHQgPSB0cmFuc2Zvcm1lZFJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXAiLCJmaWVsZCIsImxvY2FsZSIsInJlZiIsInJlbGF0aW9ucyIsIndpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSIsInJlc3VsdCIsImhhc01hbnkiLCJyZWxhdGlvbiIsImZpbmQiLCJyZWwiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwibWF0Y2hlZFJlbGF0aW9uIiwiT2JqZWN0IiwiZW50cmllcyIsImtleSIsInZhbCIsImluY2x1ZGVzIiwicmVwbGFjZSIsInZhbHVlIiwicmVsYXRlZERhdGEiLCJ0cmFuc2Zvcm1lZFJlbGF0aW9ucyIsImZvckVhY2giLCJtYXRjaGVkTG9jYWxlIiwicHVzaCIsIm5hbWUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFXdkJBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHdCQUF3QixDQUFDLEVBQ3BDQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsR0FBRyxFQUNIQyxTQUFTLEVBQ1RDLHdCQUF3QixFQUNuQjtJQUNMLElBQUlDO0lBRUosSUFBSSxDQUFFLENBQUEsYUFBYUwsS0FBSSxLQUFNQSxNQUFNTSxPQUFPLEtBQUssT0FBTztRQUNwRCxJQUFJQyxXQUFXSixTQUFTLENBQUMsRUFBRTtRQUUzQixJQUFJQywwQkFBMEI7WUFDNUJHLFdBQVdKLFVBQVVLLElBQUksQ0FBQyxDQUFDQyxNQUFRQSxJQUFJUixNQUFNLEtBQUtHO1FBQ3BEO1FBRUEsSUFBSUcsVUFBVTtZQUNaLHFCQUFxQjtZQUNyQixJQUFJRyxNQUFNQyxPQUFPLENBQUNYLE1BQU1ZLFVBQVUsR0FBRztnQkFDbkMsTUFBTUMsa0JBQWtCQyxPQUFPQyxPQUFPLENBQUNSLFVBQVVDLElBQUksQ0FBQyxDQUFDLENBQUNRLEtBQUtDLElBQUk7b0JBQy9ELE9BQU9BLFFBQVEsUUFBUSxDQUFDO3dCQUFDO3dCQUFNO3dCQUFVO3dCQUFTO3dCQUFVO3FCQUFPLENBQUNDLFFBQVEsQ0FBQ0Y7Z0JBQy9FO2dCQUVBLElBQUlILGlCQUFpQjtvQkFDbkIsTUFBTUQsYUFBYUMsZUFBZSxDQUFDLEVBQUUsQ0FBQ00sT0FBTyxDQUFDLE1BQU07b0JBRXBEZCxTQUFTO3dCQUNQTzt3QkFDQVEsT0FBT1AsZUFBZSxDQUFDLEVBQUU7b0JBQzNCO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxnQkFBZ0I7Z0JBQ2hCLE1BQU1RLGNBQWNkLFFBQVEsQ0FBQyxDQUFDLEVBQUVQLE1BQU1ZLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckRQLFNBQVNnQjtZQUNYO1FBQ0Y7SUFDRixPQUFPO1FBQ0wsTUFBTUMsdUJBQXVCLEVBQUU7UUFFL0JuQixVQUFVb0IsT0FBTyxDQUFDLENBQUNoQjtZQUNqQixJQUFJaUIsZ0JBQWdCO1lBRXBCLElBQUlwQiwwQkFBMEI7Z0JBQzVCb0IsZ0JBQWdCakIsU0FBU04sTUFBTSxLQUFLRztZQUN0QztZQUVBLGlCQUFpQjtZQUNqQixJQUFJLENBQUNNLE1BQU1DLE9BQU8sQ0FBQ1gsTUFBTVksVUFBVSxHQUFHO2dCQUNwQyxNQUFNUyxjQUFjZCxRQUFRLENBQUMsQ0FBQyxFQUFFUCxNQUFNWSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXJELElBQUlTLGVBQWVHLGVBQWU7b0JBQ2hDRixxQkFBcUJHLElBQUksQ0FBQ0o7Z0JBQzVCO1lBQ0YsT0FBTztnQkFDTCxzQkFBc0I7Z0JBQ3RCLE1BQU1SLGtCQUFrQkMsT0FBT0MsT0FBTyxDQUFDUixVQUFVQyxJQUFJLENBQ25ELENBQUMsQ0FBQ1EsS0FBS0MsSUFBSSxHQUNUQSxRQUFRLFFBQ1IsQ0FBQzt3QkFBQzt3QkFBTTt3QkFBVTt3QkFBUzt3QkFBVTtxQkFBTyxDQUFDQyxRQUFRLENBQUNGLFFBQ3REUTtnQkFHSixJQUFJWCxpQkFBaUI7b0JBQ25CLE1BQU1ELGFBQWFDLGVBQWUsQ0FBQyxFQUFFLENBQUNNLE9BQU8sQ0FBQyxNQUFNO29CQUVwREcscUJBQXFCRyxJQUFJLENBQUM7d0JBQ3hCYjt3QkFDQVEsT0FBT1AsZUFBZSxDQUFDLEVBQUU7b0JBQzNCO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBUixTQUFTaUI7SUFDWDtJQUVBLElBQUlyQixRQUFRO1FBQ1ZDLEdBQUcsQ0FBQ0YsTUFBTTBCLElBQUksQ0FBQyxDQUFDekIsT0FBTyxHQUFHSTtJQUM1QixPQUFPO1FBQ0xILEdBQUcsQ0FBQ0YsTUFBTTBCLElBQUksQ0FBQyxHQUFHckI7SUFDcEI7QUFDRiJ9
@@ -46,7 +46,11 @@ type TraverseFieldsArgs = {
46
46
  * All hasMany text fields, as returned by Drizzle, keyed on an object by field path
47
47
  */
48
48
  texts: Record<string, Record<string, unknown>[]>;
49
+ /**
50
+ * Set to a locale if this group of fields is within a localized array or block.
51
+ */
52
+ withinArrayOrBlockLocale?: string;
49
53
  };
50
- export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, }: TraverseFieldsArgs) => T;
54
+ export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, withinArrayOrBlockLocale, }: TraverseFieldsArgs) => T;
51
55
  export {};
52
56
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CACjD,CAAA;AAID,eAAO,MAAM,cAAc,gJAYxB,kBAAkB,MAsdpB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,0KAaxB,kBAAkB,MAygBpB,CAAA"}
@@ -12,7 +12,7 @@ const _types = require("payload/types");
12
12
  const _hasManyNumber = require("./hasManyNumber");
13
13
  const _hasManyText = require("./hasManyText");
14
14
  const _relationship = require("./relationship");
15
- const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts })=>{
15
+ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, withinArrayOrBlockLocale })=>{
16
16
  const sanitizedPath = path ? `${path}.` : path;
17
17
  const formatted = fields.reduce((result, field)=>{
18
18
  if (field.type === 'tabs') {
@@ -30,7 +30,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
30
30
  path,
31
31
  relationships,
32
32
  table,
33
- texts
33
+ texts,
34
+ withinArrayOrBlockLocale
34
35
  });
35
36
  }
36
37
  if (field.type === 'collapsible' || field.type === 'row' || field.type === 'tab' && !('name' in field)) {
@@ -45,7 +46,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
45
46
  path,
46
47
  relationships,
47
48
  table,
48
- texts
49
+ texts,
50
+ withinArrayOrBlockLocale
49
51
  });
50
52
  }
51
53
  if ((0, _types.fieldAffectsData)(field)) {
@@ -78,7 +80,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
78
80
  path: `${sanitizedPath}${field.name}.${row._order - 1}`,
79
81
  relationships,
80
82
  table: row,
81
- texts
83
+ texts,
84
+ withinArrayOrBlockLocale: locale
82
85
  });
83
86
  if ('_order' in rowResult) {
84
87
  delete rowResult._order;
@@ -88,7 +91,7 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
88
91
  return arrayResult;
89
92
  }, {});
90
93
  } else {
91
- result[field.name] = fieldData.map((row, i)=>{
94
+ result[field.name] = fieldData.reduce((acc, row, i)=>{
92
95
  if (row._uuid) {
93
96
  row.id = row._uuid;
94
97
  delete row._uuid;
@@ -96,30 +99,38 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
96
99
  if ('_order' in row) {
97
100
  delete row._order;
98
101
  }
99
- return traverseFields({
100
- blocks,
101
- config,
102
- dataRef: row,
103
- deletions,
104
- fieldPrefix: '',
105
- fields: field.fields,
106
- numbers,
107
- path: `${sanitizedPath}${field.name}.${i}`,
108
- relationships,
109
- table: row,
110
- texts
111
- });
112
- });
102
+ if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
103
+ if (row._locale) {
104
+ delete row._locale;
105
+ }
106
+ acc.push(traverseFields({
107
+ blocks,
108
+ config,
109
+ dataRef: row,
110
+ deletions,
111
+ fieldPrefix: '',
112
+ fields: field.fields,
113
+ numbers,
114
+ path: `${sanitizedPath}${field.name}.${i}`,
115
+ relationships,
116
+ table: row,
117
+ texts,
118
+ withinArrayOrBlockLocale
119
+ }));
120
+ }
121
+ return acc;
122
+ }, []);
113
123
  }
114
124
  }
115
125
  return result;
116
126
  }
117
127
  if (field.type === 'blocks') {
118
128
  const blockFieldPath = `${sanitizedPath}${field.name}`;
119
- if (Array.isArray(blocks[blockFieldPath])) {
129
+ const blocksByPath = blocks[blockFieldPath];
130
+ if (Array.isArray(blocksByPath)) {
120
131
  if (field.localized) {
121
132
  result[field.name] = {};
122
- blocks[blockFieldPath].forEach((row)=>{
133
+ blocksByPath.forEach((row)=>{
123
134
  if (row._uuid) {
124
135
  row.id = row._uuid;
125
136
  delete row._uuid;
@@ -145,7 +156,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
145
156
  path: `${blockFieldPath}.${row._order - 1}`,
146
157
  relationships,
147
158
  table: row,
148
- texts
159
+ texts,
160
+ withinArrayOrBlockLocale: locale
149
161
  });
150
162
  delete blockResult._order;
151
163
  return blockResult;
@@ -154,7 +166,21 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
154
166
  });
155
167
  });
156
168
  } else {
157
- result[field.name] = blocks[blockFieldPath].map((row, i)=>{
169
+ // Add locale-specific index to have a proper blockFieldPath for current locale
170
+ // because blocks can be in the same array for different locales!
171
+ if (withinArrayOrBlockLocale && config.localization) {
172
+ for (const locale of config.localization.localeCodes){
173
+ let localeIndex = 0;
174
+ for(let i = 0; i < blocksByPath.length; i++){
175
+ const row = blocksByPath[i];
176
+ if (row._locale === locale) {
177
+ row._index = localeIndex;
178
+ localeIndex++;
179
+ }
180
+ }
181
+ }
182
+ }
183
+ result[field.name] = blocksByPath.reduce((acc, row, i)=>{
158
184
  delete row._order;
159
185
  if (row._uuid) {
160
186
  row.id = row._uuid;
@@ -162,22 +188,35 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
162
188
  }
163
189
  const block = field.blocks.find(({ slug })=>slug === row.blockType);
164
190
  if (block) {
165
- return traverseFields({
166
- blocks,
167
- config,
168
- dataRef: row,
169
- deletions,
170
- fieldPrefix: '',
171
- fields: block.fields,
172
- numbers,
173
- path: `${blockFieldPath}.${i}`,
174
- relationships,
175
- table: row,
176
- texts
177
- });
191
+ if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
192
+ if (row._locale) {
193
+ delete row._locale;
194
+ }
195
+ if (typeof row._index === 'number') {
196
+ i = row._index;
197
+ delete row._index;
198
+ }
199
+ acc.push(traverseFields({
200
+ blocks,
201
+ config,
202
+ dataRef: row,
203
+ deletions,
204
+ fieldPrefix: '',
205
+ fields: block.fields,
206
+ numbers,
207
+ path: `${blockFieldPath}.${i}`,
208
+ relationships,
209
+ table: row,
210
+ texts,
211
+ withinArrayOrBlockLocale
212
+ }));
213
+ return acc;
214
+ }
215
+ } else {
216
+ acc.push({});
178
217
  }
179
- return {};
180
- });
218
+ return acc;
219
+ }, []);
181
220
  }
182
221
  }
183
222
  return result;
@@ -217,7 +256,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
217
256
  (0, _relationship.transformRelationship)({
218
257
  field,
219
258
  ref: result,
220
- relations: relationPathMatch
259
+ relations: relationPathMatch,
260
+ withinArrayOrBlockLocale
221
261
  });
222
262
  }
223
263
  return result;
@@ -246,7 +286,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
246
286
  (0, _hasManyText.transformHasManyText)({
247
287
  field,
248
288
  ref: result,
249
- textRows: textPathMatch
289
+ textRows: textPathMatch,
290
+ withinArrayOrBlockLocale
250
291
  });
251
292
  }
252
293
  return result;
@@ -275,7 +316,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
275
316
  (0, _hasManyNumber.transformHasManyNumber)({
276
317
  field,
277
318
  numberRows: numberPathMatch,
278
- ref: result
319
+ ref: result,
320
+ withinArrayOrBlockLocale
279
321
  });
280
322
  }
281
323
  return result;
@@ -291,7 +333,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
291
333
  return selectResult;
292
334
  }, {});
293
335
  } else {
294
- result[field.name] = fieldData.map(({ value })=>value);
336
+ let selectData = fieldData;
337
+ if (withinArrayOrBlockLocale) {
338
+ selectData = selectData.filter(({ locale })=>locale === withinArrayOrBlockLocale);
339
+ }
340
+ result[field.name] = selectData.map(({ value })=>value);
295
341
  }
296
342
  }
297
343
  return result;
@@ -299,10 +345,18 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
299
345
  const localizedFieldData = {};
300
346
  const valuesToTransform = [];
301
347
  if (field.localized && Array.isArray(table._locales)) {
348
+ if (!table._locales.length && config.localization) {
349
+ config.localization.localeCodes.forEach((_locale)=>table._locales.push({
350
+ _locale
351
+ }));
352
+ }
302
353
  table._locales.forEach((localeRow)=>{
303
354
  valuesToTransform.push({
304
355
  ref: localizedFieldData,
305
- table: localeRow
356
+ table: {
357
+ ...table,
358
+ ...localeRow
359
+ }
306
360
  });
307
361
  });
308
362
  } else {
@@ -319,47 +373,26 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
319
373
  case 'group':
320
374
  {
321
375
  const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`;
322
- if (field.localized) {
323
- if (typeof locale === 'string' && !ref[locale]) {
324
- ref[locale] = {};
325
- delete table._locale;
326
- }
327
- Object.entries(ref).forEach(([groupLocale, groupLocaleData])=>{
328
- ref[groupLocale] = traverseFields({
329
- blocks,
330
- config,
331
- dataRef: groupLocaleData,
332
- deletions,
333
- fieldPrefix: groupFieldPrefix,
334
- fields: field.fields,
335
- numbers,
336
- path: `${sanitizedPath}${field.name}`,
337
- relationships,
338
- table,
339
- texts
340
- });
341
- });
342
- if ('_order' in ref) {
343
- delete ref._order;
344
- }
345
- } else {
346
- const groupData = {};
347
- ref[field.name] = traverseFields({
348
- blocks,
349
- config,
350
- dataRef: groupData,
351
- deletions,
352
- fieldPrefix: groupFieldPrefix,
353
- fields: field.fields,
354
- numbers,
355
- path: `${sanitizedPath}${field.name}`,
356
- relationships,
357
- table,
358
- texts
359
- });
360
- if ('_order' in ref) {
361
- delete ref._order;
362
- }
376
+ const groupData = {};
377
+ const locale = table._locale;
378
+ const refKey = field.localized && locale ? locale : field.name;
379
+ if (field.localized && locale) delete table._locale;
380
+ ref[refKey] = traverseFields({
381
+ blocks,
382
+ config,
383
+ dataRef: groupData,
384
+ deletions,
385
+ fieldPrefix: groupFieldPrefix,
386
+ fields: field.fields,
387
+ numbers,
388
+ path: `${sanitizedPath}${field.name}`,
389
+ relationships,
390
+ table,
391
+ texts,
392
+ withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale
393
+ });
394
+ if ('_order' in ref) {
395
+ delete ref._order;
363
396
  }
364
397
  break;
365
398
  }
@@ -426,4 +459,4 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
426
459
  return formatted;
427
460
  };
428
461
 
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtSGFzTWFueVRleHQgfSBmcm9tICcuL2hhc01hbnlUZXh0J1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IG51bWJlciBmaWVsZHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICBudW1iZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmllbGQgcGF0aCAoaW4gZG90IG5vdGF0aW9uKSwgdXNlZCB0byBtZXJnZSBpbiByZWxhdGlvbnNoaXBzXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCByZWxhdGVkIGRvY3VtZW50cywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIG5lYXJlc3QgdGFibGUgZnJvbSBkYlxuICAgKi9cbiAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSB0ZXh0IGZpZWxkcywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBudW1iZXJzLFxuICBwYXRoLFxuICByZWxhdGlvbnNoaXBzLFxuICB0YWJsZSxcbiAgdGV4dHMsXG59OiBUcmF2ZXJzZUZpZWxkc0FyZ3MpOiBUID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkUGF0aCA9IHBhdGggPyBgJHtwYXRofS5gIDogcGF0aFxuXG4gIGNvbnN0IGZvcm1hdHRlZCA9IGZpZWxkcy5yZWR1Y2UoKHJlc3VsdCwgZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGJsb2NrcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhUmVmLFxuICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgICAgdGV4dHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdjb2xsYXBzaWJsZScgfHxcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdyb3cnIHx8XG4gICAgICAoZmllbGQudHlwZSA9PT0gJ3RhYicgJiYgISgnbmFtZScgaW4gZmllbGQpKVxuICAgICkge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBibG9ja3MsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YVJlZixcbiAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0ZXh0cyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuXG4gICAgICBpZiAoZmllbGRQcmVmaXgpIHtcbiAgICAgICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlW2ZpZWxkTmFtZV0pXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChhcnJheVJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93Ll9sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJheVJlc3VsdFtyb3cuX2xvY2FsZV0pIGFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByb3dSZXN1bHQgPSB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7cm93Ll9vcmRlciAtIDF9YCxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByb3dSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3dSZXN1bHQuX29yZGVyXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYXJyYXlSZXN1bHRbbG9jYWxlXS5wdXNoKHJvd1Jlc3VsdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhcnJheVJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJvdykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX29yZGVyXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX0uJHtpfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYmxvY2tzJykge1xuICAgICAgICBjb25zdCBibG9ja0ZpZWxkUGF0aCA9IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShibG9ja3NbYmxvY2tGaWVsZFBhdGhdKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgICAgIGJsb2Nrc1tibG9ja0ZpZWxkUGF0aF0uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyb3cuX3V1aWQpIHtcbiAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll91dWlkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cuX2xvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0pIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3VsdFtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxpemVkQmxvY2tzXSkgPT4ge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV1bbG9jYWxlXSA9IGxvY2FsaXplZEJsb2Nrcy5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1Jlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtyb3cuX29yZGVyIC0gMX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBibG9ja1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1Jlc3VsdFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gYmxvY2tzW2Jsb2NrRmllbGRQYXRoXS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBkZWxldGUgcm93Ll9vcmRlclxuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtpfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGU6IHJvdyxcbiAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25QYXRoTWF0Y2ggPSByZWxhdGlvbnNoaXBzW2Ake3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGlmICghcmVsYXRpb25QYXRoTWF0Y2gpIHtcbiAgICAgICAgICBpZiAoJ2hhc01hbnknIGluIGZpZWxkICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbiAmJiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZXMpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIFtjb25maWcubG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGVdOiBbXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCByZWxhdGlvbnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgcmVsYXRpb25QYXRoTWF0Y2guZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmICghcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0pIHJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uc0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCByZWxhdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgcmVsYXRpb25zOiByZWxhdGlvblBhdGhNYXRjaCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkPy5oYXNNYW55KSB7XG4gICAgICAgIGNvbnN0IHRleHRQYXRoTWF0Y2ggPSB0ZXh0c1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIXRleHRQYXRoTWF0Y2gpIHJldHVybiByZXN1bHRcblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCB0ZXh0c0J5TG9jYWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICAgICAgICB0ZXh0UGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIXRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0pIHRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICB0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyh0ZXh0c0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCB0ZXh0c10pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlUZXh0KHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICAgIHRleHRSb3dzOiB0ZXh0cyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55VGV4dCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgdGV4dFJvd3M6IHRleHRQYXRoTWF0Y2gsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0aE1hdGNoID0gbnVtYmVyc1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIW51bWJlclBhdGhNYXRjaCkgcmV0dXJuIHJlc3VsdFxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICAgIGNvbnN0IG51bWJlcnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgbnVtYmVyUGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIW51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXSkgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhudW1iZXJzQnlMb2NhbGUpLmZvckVhY2goKFtsb2NhbGUsIG51bWJlcnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgbnVtYmVyUm93czogbnVtYmVycyxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtSGFzTWFueU51bWJlcih7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIG51bWJlclJvd3M6IG51bWJlclBhdGhNYXRjaCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChzZWxlY3RSZXN1bHQsIHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0pIHNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdLnB1c2gocm93LnZhbHVlKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdFJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxpemVkRmllbGREYXRhID0ge31cbiAgICAgIGNvbnN0IHZhbHVlc1RvVHJhbnNmb3JtOiB7XG4gICAgICAgIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9W10gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgICAgIHRhYmxlLl9sb2NhbGVzLmZvckVhY2goKGxvY2FsZVJvdykgPT4ge1xuICAgICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goeyByZWY6IGxvY2FsaXplZEZpZWxkRGF0YSwgdGFibGU6IGxvY2FsZVJvdyB9KVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0ucHVzaCh7IHJlZjogcmVzdWx0LCB0YWJsZSB9KVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5mb3JFYWNoKCh7IHJlZiwgdGFibGUgfSkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZERhdGEgPSB0YWJsZVtgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGFibGU/Ll9sb2NhbGVcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZFByZWZpeCA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1fYFxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyAmJiAhcmVmW2xvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHt9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRhYmxlLl9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlZikuZm9yRWFjaCgoW2dyb3VwTG9jYWxlLCBncm91cExvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVmW2dyb3VwTG9jYWxlXSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cExvY2FsZURhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBpZiAoJ19vcmRlcicgaW4gcmVmKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlZi5fb3JkZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBEYXRhID0ge31cblxuICAgICAgICAgICAgICByZWZbZmllbGQubmFtZV0gPSB0cmF2ZXJzZUZpZWxkczxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogZ3JvdXBEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJlZikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZWYuX29yZGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IFN0cmluZyhmaWVsZERhdGEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IE51bWJlci5wYXJzZUZsb2F0KGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gbmV3IERhdGUoZmllbGREYXRhKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gZmllbGREYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhsb2NhbGl6ZWRGaWVsZERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gbG9jYWxpemVkRmllbGREYXRhXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIGRhdGFSZWYpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlLl9sb2NhbGVzKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZCBhcyBUXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJibG9ja3MiLCJjb25maWciLCJkYXRhUmVmIiwiZGVsZXRpb25zIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJudW1iZXJzIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJ0YWJsZSIsInRleHRzIiwic2FuaXRpemVkUGF0aCIsImZvcm1hdHRlZCIsInJlZHVjZSIsInJlc3VsdCIsImZpZWxkIiwidHlwZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJmaWVsZEFmZmVjdHNEYXRhIiwiZmllbGROYW1lIiwibmFtZSIsImZpZWxkRGF0YSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGl6ZWQiLCJhcnJheVJlc3VsdCIsInJvdyIsIl9sb2NhbGUiLCJsb2NhbGUiLCJkYXRhIiwiX3V1aWQiLCJpZCIsInJvd1Jlc3VsdCIsIl9vcmRlciIsImkiLCJibG9ja0ZpZWxkUGF0aCIsImZvckVhY2giLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxpemVkQmxvY2tzIiwiYmxvY2siLCJmaW5kIiwic2x1ZyIsImJsb2NrVHlwZSIsImJsb2NrUmVzdWx0IiwicmVsYXRpb25QYXRoTWF0Y2giLCJoYXNNYW55IiwibG9jYWxpemF0aW9uIiwibG9jYWxlcyIsImRlZmF1bHRMb2NhbGUiLCJyZWxhdGlvbnNCeUxvY2FsZSIsInJlbGF0aW9ucyIsInRyYW5zZm9ybVJlbGF0aW9uc2hpcCIsInJlZiIsInRleHRQYXRoTWF0Y2giLCJ0ZXh0c0J5TG9jYWxlIiwidHJhbnNmb3JtSGFzTWFueVRleHQiLCJ0ZXh0Um93cyIsIm51bWJlclBhdGhNYXRjaCIsIm51bWJlcnNCeUxvY2FsZSIsInRyYW5zZm9ybUhhc01hbnlOdW1iZXIiLCJudW1iZXJSb3dzIiwic2VsZWN0UmVzdWx0IiwidmFsdWUiLCJsb2NhbGl6ZWRGaWVsZERhdGEiLCJ2YWx1ZXNUb1RyYW5zZm9ybSIsIl9sb2NhbGVzIiwibG9jYWxlUm93IiwiZ3JvdXBGaWVsZFByZWZpeCIsImdyb3VwTG9jYWxlIiwiZ3JvdXBMb2NhbGVEYXRhIiwiZ3JvdXBEYXRhIiwidmFsIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImtleXMiLCJsZW5ndGgiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtSGFzTWFueVRleHQgfSBmcm9tICcuL2hhc01hbnlUZXh0J1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IG51bWJlciBmaWVsZHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICBudW1iZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmllbGQgcGF0aCAoaW4gZG90IG5vdGF0aW9uKSwgdXNlZCB0byBtZXJnZSBpbiByZWxhdGlvbnNoaXBzXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCByZWxhdGVkIGRvY3VtZW50cywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIG5lYXJlc3QgdGFibGUgZnJvbSBkYlxuICAgKi9cbiAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSB0ZXh0IGZpZWxkcywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogU2V0IHRvIGEgbG9jYWxlIGlmIHRoaXMgZ3JvdXAgb2YgZmllbGRzIGlzIHdpdGhpbiBhIGxvY2FsaXplZCBhcnJheSBvciBibG9jay5cbiAgICovXG4gIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZT86IHN0cmluZ1xufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBudW1iZXJzLFxuICBwYXRoLFxuICByZWxhdGlvbnNoaXBzLFxuICB0YWJsZSxcbiAgdGV4dHMsXG4gIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbn06IFRyYXZlcnNlRmllbGRzQXJncyk6IFQgPT4ge1xuICBjb25zdCBzYW5pdGl6ZWRQYXRoID0gcGF0aCA/IGAke3BhdGh9LmAgOiBwYXRoXG5cbiAgY29uc3QgZm9ybWF0dGVkID0gZmllbGRzLnJlZHVjZSgocmVzdWx0LCBmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRhdGFSZWYsXG4gICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0ZXh0cyxcbiAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBmaWVsZC50eXBlID09PSAnY29sbGFwc2libGUnIHx8XG4gICAgICBmaWVsZC50eXBlID09PSAncm93JyB8fFxuICAgICAgKGZpZWxkLnR5cGUgPT09ICd0YWInICYmICEoJ25hbWUnIGluIGZpZWxkKSlcbiAgICApIHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRhdGFSZWYsXG4gICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgICAgdGV4dHMsXG4gICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuXG4gICAgICBpZiAoZmllbGRQcmVmaXgpIHtcbiAgICAgICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlW2ZpZWxkTmFtZV0pXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChhcnJheVJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93Ll9sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJheVJlc3VsdFtyb3cuX2xvY2FsZV0pIGFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByb3dSZXN1bHQgPSB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7cm93Ll9vcmRlciAtIDF9YCxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJvd1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvd1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcnJheVJlc3VsdFtsb2NhbGVdLnB1c2gocm93UmVzdWx0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGFycmF5UmVzdWx0XG4gICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gZmllbGREYXRhLnJlZHVjZSgoYWNjLCByb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByb3cpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9vcmRlclxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlICYmIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSA9PT0gcm93Ll9sb2NhbGUpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuX2xvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2goXG4gICAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7aX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdibG9ja3MnKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrRmllbGRQYXRoID0gYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YFxuICAgICAgICBjb25zdCBibG9ja3NCeVBhdGggPSBibG9ja3NbYmxvY2tGaWVsZFBhdGhdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYmxvY2tzQnlQYXRoKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgICAgIGJsb2Nrc0J5UGF0aC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5fbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSkgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzdWx0W2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlLCBsb2NhbGl6ZWRCbG9ja3NdKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtsb2NhbGVdID0gbG9jYWxpemVkQmxvY2tzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVzdWx0ID0gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGAke2Jsb2NrRmllbGRQYXRofS4ke3Jvdy5fb3JkZXIgLSAxfWAsXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBibG9ja1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1Jlc3VsdFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQWRkIGxvY2FsZS1zcGVjaWZpYyBpbmRleCB0byBoYXZlIGEgcHJvcGVyIGJsb2NrRmllbGRQYXRoIGZvciBjdXJyZW50IGxvY2FsZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSBibG9ja3MgY2FuIGJlIGluIHRoZSBzYW1lIGFycmF5IGZvciBkaWZmZXJlbnQgbG9jYWxlcyFcbiAgICAgICAgICAgIGlmICh3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZUluZGV4ID0gMFxuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBibG9ja3NCeVBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IGJsb2Nrc0J5UGF0aFtpXVxuICAgICAgICAgICAgICAgICAgaWYgKHJvdy5fbG9jYWxlID09PSBsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93Ll9pbmRleCA9IGxvY2FsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZUluZGV4KytcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gYmxvY2tzQnlQYXRoLnJlZHVjZSgoYWNjLCByb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fb3JkZXJcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlICYmIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSA9PT0gcm93Ll9sb2NhbGUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAocm93Ll9sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5faW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSByb3cuX2luZGV4XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX2luZGV4XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGAke2Jsb2NrRmllbGRQYXRofS4ke2l9YCxcbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY2MucHVzaCh7fSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uUGF0aE1hdGNoID0gcmVsYXRpb25zaGlwc1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIXJlbGF0aW9uUGF0aE1hdGNoKSB7XG4gICAgICAgICAgaWYgKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGNvbmZpZy5sb2NhbGl6YXRpb24gJiYgY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVzKSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBbY29uZmlnLmxvY2FsaXphdGlvbi5kZWZhdWx0TG9jYWxlXTogW10sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25zQnlMb2NhbGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgICAgICAgIHJlbGF0aW9uUGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIXJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdKSByZWxhdGlvbnNCeUxvY2FsZVtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgIHJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbnNCeUxvY2FsZSkuZm9yRWFjaCgoW2xvY2FsZSwgcmVsYXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICAgIHJlbGF0aW9ucyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHJlbGF0aW9uczogcmVsYXRpb25QYXRoTWF0Y2gsXG4gICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZD8uaGFzTWFueSkge1xuICAgICAgICBjb25zdCB0ZXh0UGF0aE1hdGNoID0gdGV4dHNbYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgaWYgKCF0ZXh0UGF0aE1hdGNoKSByZXR1cm4gcmVzdWx0XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgICAgY29uc3QgdGV4dHNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgdGV4dFBhdGhNYXRjaC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgaWYgKCF0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdKSB0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgdGV4dHNCeUxvY2FsZVtyb3cubG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXModGV4dHNCeUxvY2FsZSkuZm9yRWFjaCgoW2xvY2FsZSwgdGV4dHNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55VGV4dCh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgICB0ZXh0Um93czogdGV4dHMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtSGFzTWFueVRleHQoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHRleHRSb3dzOiB0ZXh0UGF0aE1hdGNoLFxuICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIGNvbnN0IG51bWJlclBhdGhNYXRjaCA9IG51bWJlcnNbYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgaWYgKCFudW1iZXJQYXRoTWF0Y2gpIHJldHVybiByZXN1bHRcblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCBudW1iZXJzQnlMb2NhbGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgICAgICAgIG51bWJlclBhdGhNYXRjaC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgaWYgKCFudW1iZXJzQnlMb2NhbGVbcm93LmxvY2FsZV0pIG51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgIG51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMobnVtYmVyc0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCBudW1iZXJzXSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtSGFzTWFueU51bWJlcih7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIG51bWJlclJvd3M6IG51bWJlcnMsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlOdW1iZXIoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBudW1iZXJSb3dzOiBudW1iZXJQYXRoTWF0Y2gsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gZmllbGREYXRhLnJlZHVjZSgoc2VsZWN0UmVzdWx0LCByb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdKSBzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICAgIHNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXS5wdXNoKHJvdy52YWx1ZSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RSZXN1bHRcbiAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0RGF0YSA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSkge1xuICAgICAgICAgICAgICBzZWxlY3REYXRhID0gc2VsZWN0RGF0YS5maWx0ZXIoKHsgbG9jYWxlIH0pID0+IGxvY2FsZSA9PT0gd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gc2VsZWN0RGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxpemVkRmllbGREYXRhID0ge31cbiAgICAgIGNvbnN0IHZhbHVlc1RvVHJhbnNmb3JtOiB7XG4gICAgICAgIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9W10gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgICAgIGlmICghdGFibGUuX2xvY2FsZXMubGVuZ3RoICYmIGNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLmZvckVhY2goKF9sb2NhbGUpID0+XG4gICAgICAgICAgICAodGFibGUuX2xvY2FsZXMgYXMgdW5rbm93bltdKS5wdXNoKHsgX2xvY2FsZSB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZS5fbG9jYWxlcy5mb3JFYWNoKChsb2NhbGVSb3cpID0+IHtcbiAgICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHtcbiAgICAgICAgICAgIHJlZjogbG9jYWxpemVkRmllbGREYXRhLFxuICAgICAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICAgICAgLi4udGFibGUsXG4gICAgICAgICAgICAgIC4uLmxvY2FsZVJvdyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goeyByZWY6IHJlc3VsdCwgdGFibGUgfSlcbiAgICAgIH1cblxuICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0uZm9yRWFjaCgoeyByZWYsIHRhYmxlIH0pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRhYmxlPy5fbG9jYWxlXG5cbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGRQcmVmaXggPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9X2BcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRGF0YSA9IHt9XG4gICAgICAgICAgICBjb25zdCBsb2NhbGUgPSB0YWJsZS5fbG9jYWxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgY29uc3QgcmVmS2V5ID0gZmllbGQubG9jYWxpemVkICYmIGxvY2FsZSA/IGxvY2FsZSA6IGZpZWxkLm5hbWVcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBsb2NhbGUpIGRlbGV0ZSB0YWJsZS5fbG9jYWxlXG4gICAgICAgICAgICByZWZbcmVmS2V5XSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGdyb3VwRmllbGRQcmVmaXgsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZTogbG9jYWxlIHx8IHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByZWYpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHJlZi5fb3JkZXJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IFN0cmluZyhmaWVsZERhdGEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IE51bWJlci5wYXJzZUZsb2F0KGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gbmV3IERhdGUoZmllbGREYXRhKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gZmllbGREYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhsb2NhbGl6ZWRGaWVsZERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gbG9jYWxpemVkRmllbGREYXRhXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIGRhdGFSZWYpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlLl9sb2NhbGVzKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZCBhcyBUXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJibG9ja3MiLCJjb25maWciLCJkYXRhUmVmIiwiZGVsZXRpb25zIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJudW1iZXJzIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJ0YWJsZSIsInRleHRzIiwid2l0aGluQXJyYXlPckJsb2NrTG9jYWxlIiwic2FuaXRpemVkUGF0aCIsImZvcm1hdHRlZCIsInJlZHVjZSIsInJlc3VsdCIsImZpZWxkIiwidHlwZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJmaWVsZEFmZmVjdHNEYXRhIiwiZmllbGROYW1lIiwibmFtZSIsImZpZWxkRGF0YSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGl6ZWQiLCJhcnJheVJlc3VsdCIsInJvdyIsIl9sb2NhbGUiLCJsb2NhbGUiLCJkYXRhIiwiX3V1aWQiLCJpZCIsInJvd1Jlc3VsdCIsIl9vcmRlciIsImFjYyIsImkiLCJibG9ja0ZpZWxkUGF0aCIsImJsb2Nrc0J5UGF0aCIsImZvckVhY2giLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxpemVkQmxvY2tzIiwiYmxvY2siLCJmaW5kIiwic2x1ZyIsImJsb2NrVHlwZSIsImJsb2NrUmVzdWx0IiwibG9jYWxpemF0aW9uIiwibG9jYWxlQ29kZXMiLCJsb2NhbGVJbmRleCIsImxlbmd0aCIsIl9pbmRleCIsInJlbGF0aW9uUGF0aE1hdGNoIiwiaGFzTWFueSIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwicmVsYXRpb25zQnlMb2NhbGUiLCJyZWxhdGlvbnMiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXAiLCJyZWYiLCJ0ZXh0UGF0aE1hdGNoIiwidGV4dHNCeUxvY2FsZSIsInRyYW5zZm9ybUhhc01hbnlUZXh0IiwidGV4dFJvd3MiLCJudW1iZXJQYXRoTWF0Y2giLCJudW1iZXJzQnlMb2NhbGUiLCJ0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIiwibnVtYmVyUm93cyIsInNlbGVjdFJlc3VsdCIsInZhbHVlIiwic2VsZWN0RGF0YSIsImZpbHRlciIsImxvY2FsaXplZEZpZWxkRGF0YSIsInZhbHVlc1RvVHJhbnNmb3JtIiwiX2xvY2FsZXMiLCJsb2NhbGVSb3ciLCJncm91cEZpZWxkUHJlZml4IiwiZ3JvdXBEYXRhIiwicmVmS2V5IiwidmFsIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImtleXMiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBaUV2QkE7OztlQUFBQTs7O3VCQTdEb0I7K0JBSU07NkJBQ0Y7OEJBQ0M7QUF1RC9CLE1BQU1BLGlCQUFpQixDQUFvQyxFQUNoRUMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLE9BQU8sRUFDUEMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLE1B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
@@ -20,7 +20,12 @@ type Args = {
20
20
  [tableName: string]: Record<string, unknown>[];
21
21
  };
22
22
  texts: Record<string, unknown>[];
23
+ /**
24
+ * Set to a locale code if this set of fields is traversed within a
25
+ * localized array or block field
26
+ */
27
+ withinArrayOrBlockLocale?: string;
23
28
  };
24
- export declare const transformArray: ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, }: Args) => ArrayRowToInsert[];
29
+ export declare const transformArray: ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, withinArrayOrBlockLocale, }: Args) => ArrayRowToInsert[];
25
30
  export {};
26
31
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/transform/write/array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKvF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,cAAc,kKAexB,IAAI,uBA6DN,CAAA"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/transform/write/array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKvF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,4LAgBxB,IAAI,uBAkEN,CAAA"}