@payloadcms/db-postgres 0.1.0-beta.7 → 0.1.0-beta.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. package/dist/connect.d.ts +3 -0
  2. package/dist/connect.d.ts.map +1 -0
  3. package/dist/connect.js +4 -6
  4. package/dist/create.d.ts +3 -0
  5. package/dist/create.d.ts.map +1 -0
  6. package/dist/createGlobal.d.ts +5 -0
  7. package/dist/createGlobal.d.ts.map +1 -0
  8. package/dist/createGlobalVersion.d.ts +6 -0
  9. package/dist/createGlobalVersion.d.ts.map +1 -0
  10. package/dist/createMigration.d.ts +3 -0
  11. package/dist/createMigration.d.ts.map +1 -0
  12. package/dist/createVersion.d.ts +5 -0
  13. package/dist/createVersion.d.ts.map +1 -0
  14. package/dist/deleteMany.d.ts +3 -0
  15. package/dist/deleteMany.d.ts.map +1 -0
  16. package/dist/deleteOne.d.ts +3 -0
  17. package/dist/deleteOne.d.ts.map +1 -0
  18. package/dist/deleteVersions.d.ts +3 -0
  19. package/dist/deleteVersions.d.ts.map +1 -0
  20. package/dist/destroy.d.ts +3 -0
  21. package/dist/destroy.d.ts.map +1 -0
  22. package/dist/find/buildFindManyArgs.d.ts +13 -0
  23. package/dist/find/buildFindManyArgs.d.ts.map +1 -0
  24. package/dist/find/chainMethods.d.ts +15 -0
  25. package/dist/find/chainMethods.d.ts.map +1 -0
  26. package/dist/find/findMany.d.ts +22 -0
  27. package/dist/find/findMany.d.ts.map +1 -0
  28. package/dist/find/traverseFields.d.ts +16 -0
  29. package/dist/find/traverseFields.d.ts.map +1 -0
  30. package/dist/find.d.ts +3 -0
  31. package/dist/find.d.ts.map +1 -0
  32. package/dist/findGlobal.d.ts +3 -0
  33. package/dist/findGlobal.d.ts.map +1 -0
  34. package/dist/findGlobalVersions.d.ts +3 -0
  35. package/dist/findGlobalVersions.d.ts.map +1 -0
  36. package/dist/findOne.d.ts +5 -0
  37. package/dist/findOne.d.ts.map +1 -0
  38. package/dist/findVersions.d.ts +3 -0
  39. package/dist/findVersions.d.ts.map +1 -0
  40. package/dist/index.d.ts +4 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/init.d.ts +3 -0
  43. package/dist/init.d.ts.map +1 -0
  44. package/dist/migrate.d.ts +3 -0
  45. package/dist/migrate.d.ts.map +1 -0
  46. package/dist/migrateStatus.d.ts +3 -0
  47. package/dist/migrateStatus.d.ts.map +1 -0
  48. package/dist/queries/buildAndOrConditions.d.ts +17 -0
  49. package/dist/queries/buildAndOrConditions.d.ts.map +1 -0
  50. package/dist/queries/buildQuery.d.ts +30 -0
  51. package/dist/queries/buildQuery.d.ts.map +1 -0
  52. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  53. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  54. package/dist/queries/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  55. package/dist/queries/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  56. package/dist/queries/createJSONQuery/index.d.ts +10 -0
  57. package/dist/queries/createJSONQuery/index.d.ts.map +1 -0
  58. package/dist/queries/getTableColumnFromPath.d.ts +40 -0
  59. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -0
  60. package/dist/queries/operatorMap.d.ts +18 -0
  61. package/dist/queries/operatorMap.d.ts.map +1 -0
  62. package/dist/queries/parseParams.d.ts +17 -0
  63. package/dist/queries/parseParams.d.ts.map +1 -0
  64. package/dist/queries/sanitizeQueryValue.d.ts +12 -0
  65. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -0
  66. package/dist/queryDrafts.d.ts +3 -0
  67. package/dist/queryDrafts.d.ts.map +1 -0
  68. package/dist/reference.d.ts +2 -0
  69. package/dist/reference.d.ts.map +1 -0
  70. package/dist/schema/build.d.ts +22 -0
  71. package/dist/schema/build.d.ts.map +1 -0
  72. package/dist/schema/build.js +4 -4
  73. package/dist/schema/createIndex.d.ts +11 -0
  74. package/dist/schema/createIndex.d.ts.map +1 -0
  75. package/dist/schema/parentIDColumnMap.d.ts +7 -0
  76. package/dist/schema/parentIDColumnMap.d.ts.map +1 -0
  77. package/dist/schema/traverseFields.d.ts +32 -0
  78. package/dist/schema/traverseFields.d.ts.map +1 -0
  79. package/dist/schema/traverseFields.js +8 -8
  80. package/dist/schema/validateExistingBlockIsIdentical.d.ts +11 -0
  81. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -0
  82. package/dist/transactions/beginTransaction.d.ts +3 -0
  83. package/dist/transactions/beginTransaction.d.ts.map +1 -0
  84. package/dist/transactions/commitTransaction.d.ts +3 -0
  85. package/dist/transactions/commitTransaction.d.ts.map +1 -0
  86. package/dist/transactions/rollbackTransaction.d.ts +3 -0
  87. package/dist/transactions/rollbackTransaction.d.ts.map +1 -0
  88. package/dist/transform/read/hasManyNumber.d.ts +10 -0
  89. package/dist/transform/read/hasManyNumber.d.ts.map +1 -0
  90. package/dist/transform/read/index.d.ts +12 -0
  91. package/dist/transform/read/index.d.ts.map +1 -0
  92. package/dist/transform/read/relationship.d.ts +10 -0
  93. package/dist/transform/read/relationship.d.ts.map +1 -0
  94. package/dist/transform/read/traverseFields.d.ts +44 -0
  95. package/dist/transform/read/traverseFields.d.ts.map +1 -0
  96. package/dist/transform/write/array.d.ts +22 -0
  97. package/dist/transform/write/array.d.ts.map +1 -0
  98. package/dist/transform/write/blocks.d.ts +21 -0
  99. package/dist/transform/write/blocks.d.ts.map +1 -0
  100. package/dist/transform/write/index.d.ts +11 -0
  101. package/dist/transform/write/index.d.ts.map +1 -0
  102. package/dist/transform/write/numbers.d.ts +8 -0
  103. package/dist/transform/write/numbers.d.ts.map +1 -0
  104. package/dist/transform/write/relationships.d.ts +10 -0
  105. package/dist/transform/write/relationships.d.ts.map +1 -0
  106. package/dist/transform/write/selects.d.ts +7 -0
  107. package/dist/transform/write/selects.d.ts.map +1 -0
  108. package/dist/transform/write/traverseFields.d.ts +46 -0
  109. package/dist/transform/write/traverseFields.d.ts.map +1 -0
  110. package/dist/transform/write/types.d.ts +41 -0
  111. package/dist/transform/write/types.d.ts.map +1 -0
  112. package/dist/types.d.ts +67 -0
  113. package/dist/types.d.ts.map +1 -0
  114. package/dist/update.d.ts +3 -0
  115. package/dist/update.d.ts.map +1 -0
  116. package/dist/updateGlobal.d.ts +5 -0
  117. package/dist/updateGlobal.d.ts.map +1 -0
  118. package/dist/updateGlobalVersion.d.ts +6 -0
  119. package/dist/updateGlobalVersion.d.ts.map +1 -0
  120. package/dist/updateVersion.d.ts +5 -0
  121. package/dist/updateVersion.d.ts.map +1 -0
  122. package/dist/upsertRow/deleteExistingArrayRows.d.ts +10 -0
  123. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -0
  124. package/dist/upsertRow/deleteExistingRowsByPath.d.ts +14 -0
  125. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -0
  126. package/dist/upsertRow/index.d.ts +4 -0
  127. package/dist/upsertRow/index.d.ts.map +1 -0
  128. package/dist/upsertRow/insertArrays.d.ts +13 -0
  129. package/dist/upsertRow/insertArrays.d.ts.map +1 -0
  130. package/dist/upsertRow/types.d.ts +26 -0
  131. package/dist/upsertRow/types.d.ts.map +1 -0
  132. package/dist/utilities/appendPrefixToKeys.d.ts +2 -0
  133. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -0
  134. package/dist/utilities/createBlocksMap.d.ts +5 -0
  135. package/dist/utilities/createBlocksMap.d.ts.map +1 -0
  136. package/dist/utilities/createMigrationTable.d.ts +3 -0
  137. package/dist/utilities/createMigrationTable.d.ts.map +1 -0
  138. package/dist/utilities/createRelationshipMap.d.ts +2 -0
  139. package/dist/utilities/createRelationshipMap.d.ts.map +1 -0
  140. package/dist/utilities/hasLocalesTable.d.ts +3 -0
  141. package/dist/utilities/hasLocalesTable.d.ts.map +1 -0
  142. package/dist/utilities/isArrayOfRows.d.ts +2 -0
  143. package/dist/utilities/isArrayOfRows.d.ts.map +1 -0
  144. package/dist/utilities/migrationTableExists.d.ts +3 -0
  145. package/dist/utilities/migrationTableExists.d.ts.map +1 -0
  146. package/dist/webpack.d.ts +3 -0
  147. package/dist/webpack.d.ts.map +1 -0
  148. package/package.json +3 -3
@@ -99,7 +99,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
99
99
  acc[colName] = func(cols);
100
100
  return acc;
101
101
  }, {
102
- _localeParent: (0, _pgcore.unique)().on(cols._locale, cols._parentID)
102
+ _localeParent: (0, _pgcore.unique)(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID)
103
103
  });
104
104
  });
105
105
  adapter.tables[localeTableName] = localesTable;
@@ -182,9 +182,9 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
182
182
  const result = {};
183
183
  if (hasLocalizedRelationshipField) {
184
184
  result.localeIdx = (0, _pgcore.index)('locale_idx').on(cols.locale);
185
- result.parentPathOrderLocale = (0, _pgcore.unique)().on(cols.parent, cols.path, cols.order, cols.locale);
185
+ result.parentPathOrderLocale = (0, _pgcore.unique)(`${relationshipsTableName}_parent_id_path_order_locale_unique`).on(cols.parent, cols.path, cols.order, cols.locale);
186
186
  } else {
187
- result.parentPathOrder = (0, _pgcore.unique)().on(cols.parent, cols.path, cols.order);
187
+ result.parentPathOrder = (0, _pgcore.unique)(`${relationshipsTableName}_parent_id_path_order_unique`).on(cols.parent, cols.path, cols.order);
188
188
  }
189
189
  return result;
190
190
  });
@@ -242,4 +242,4 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
242
242
  };
243
243
  };
244
244
 
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBiYXNlQ29sdW1ucz86IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgYmFzZUV4dHJhQ29uZmlnPzogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlcj5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzPzogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlOiBib29sZWFuXG4gIGZpZWxkczogRmllbGRbXVxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkVGFibGUgPSAoe1xuICBhZGFwdGVyLFxuICBiYXNlQ29sdW1ucyA9IHt9LFxuICBiYXNlRXh0cmFDb25maWcgPSB7fSxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBkaXNhYmxlVW5pcXVlID0gZmFsc2UsXG4gIGZpZWxkcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdGFibGVOYW1lLFxuICB0aW1lc3RhbXBzLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSBiYXNlQ29sdW1uc1xuICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj4gPSB7fVxuXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgY29uc3QgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7fVxuICBjb25zdCBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+ID0ge31cbiAgbGV0IGxvY2FsZXNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZEZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICBsZXQgaWRDb2xUeXBlID0gJ2ludGVnZXInXG5cbiAgaWYgKGlkRmllbGQpIHtcbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgaWRDb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICBjb2x1bW5zLmlkID0gbnVtZXJpYygnaWQnKS5wcmltYXJ5S2V5KClcbiAgICB9XG5cbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIGlkQ29sVHlwZSA9ICd2YXJjaGFyJ1xuICAgICAgY29sdW1ucy5pZCA9IHZhcmNoYXIoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gIH1cblxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFkYXB0ZXIsXG4gICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgIGNvbHVtbnMsXG4gICAgZGlzYWJsZVVuaXF1ZSxcbiAgICBmaWVsZHMsXG4gICAgaW5kZXhlcyxcbiAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICBuZXdUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICBwYXJlbnRUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ6IHJvb3RSZWxhdGlvbnNUb0J1aWxkIHx8IHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgcm9vdFRhYmxlSURDb2xUeXBlOiByb290VGFibGVJRENvbFR5cGUgfHwgaWRDb2xUeXBlLFxuICAgIHJvb3RUYWJsZU5hbWU6IHJvb3RUYWJsZU5hbWUgfHwgdGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoKS5vbihjb2xzLl9sb2NhbGUsIGNvbHMuX3BhcmVudElEKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgbnVtYmVyOiBudW1lcmljKCdudW1iZXInKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICBudW1iZXJzVGFibGUgPSBwZ1RhYmxlKG51bWJlcnNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoJ29yZGVyX3BhcmVudF9pZHgnKS5vbihjb2xzLm9yZGVyLCBjb2xzLnBhcmVudCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy5udW1iZXJJZHggPSBpbmRleCgnbnVtYmVyX2lkeCcpLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoJ2xvY2FsZV9wYXJlbnQnKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdID0gbnVtYmVyc1RhYmxlXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMobnVtYmVyc1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW251bWJlcnNUYWJsZS5wYXJlbnRdLFxuICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgfSksXG4gICAgfSkpXG5cbiAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7bnVtYmVyc1RhYmxlTmFtZX1gXSA9IG51bWJlcnNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGJ1aWxkUmVsYXRpb25zaGlwcykge1xuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKSxcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgbGV0IGNvbFR5cGUgPSAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tcbiAgICAgICAgICByZWxhdGlvblRvXG4gICAgICAgIF0uY29uZmlnLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbGF0aW9uc2hpcHNgXG5cbiAgICAgIHJlbGF0aW9uc2hpcHNUYWJsZSA9IHBnVGFibGUocmVsYXRpb25zaGlwc1RhYmxlTmFtZSwgcmVsYXRpb25zaGlwQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgcmVzdWx0LmxvY2FsZUlkeCA9IGluZGV4KCdsb2NhbGVfaWR4Jykub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlckxvY2FsZSA9IHVuaXF1ZSgpLm9uKFxuICAgICAgICAgICAgY29scy5wYXJlbnQsXG4gICAgICAgICAgICBjb2xzLnBhdGgsXG4gICAgICAgICAgICBjb2xzLm9yZGVyLFxuICAgICAgICAgICAgY29scy5sb2NhbGUsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wYXJlbnRQYXRoT3JkZXIgPSB1bmlxdWUoKS5vbihjb2xzLnBhcmVudCwgY29scy5wYXRoLCBjb2xzLm9yZGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0gPSByZWxhdGlvbnNoaXBzVGFibGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHJlbGF0aW9uc2hpcHNUYWJsZSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlLnBhcmVudF0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgICAgICAgcmVsYXRpb25OYW1lOiAnX3JlbGF0aW9uc2hpcHMnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvblRvKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVsYXRlZFRhYmxlTmFtZSA9IHRvU25ha2VDYXNlKHJlbGF0aW9uVG8pXG4gICAgICAgICAgY29uc3QgaWRDb2x1bW5OYW1lID0gYCR7cmVsYXRpb25Ub31JRGBcbiAgICAgICAgICByZXN1bHRbaWRDb2x1bW5OYW1lXSA9IG9uZShhZGFwdGVyLnRhYmxlc1tyZWxhdGVkVGFibGVOYW1lXSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlW2lkQ29sdW1uTmFtZV1dLFxuICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0pXG5cbiAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfWBdID0gcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnModGFibGUsICh7IG1hbnkgfSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7fVxuXG4gICAgcmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgfSlcblxuICAgIGlmIChoYXNMb2NhbGl6ZWRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShsb2NhbGVzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVsYXRpb25zaGlwcyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxhdGlvbnNoaXBzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IHJlbGF0aW9uc1RvQnVpbGQgfVxufVxuIl0sIm5hbWVzIjpbImJ1aWxkVGFibGUiLCJhZGFwdGVyIiwiYmFzZUNvbHVtbnMiLCJiYXNlRXh0cmFDb25maWciLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRzIiwicm9vdFJlbGF0aW9uc1RvQnVpbGQiLCJyb290VGFibGVJRENvbFR5cGUiLCJyb290VGFibGVOYW1lIiwidGFibGVOYW1lIiwidGltZXN0YW1wcyIsImNvbHVtbnMiLCJpbmRleGVzIiwiaGFzTG9jYWxpemVkRmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlOdW1iZXJGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJsb2NhbGVzVGFibGUiLCJudW1iZXJzVGFibGUiLCJyZWxhdGlvbnNoaXBzIiwiU2V0IiwicmVsYXRpb25zaGlwc1RhYmxlIiwicmVsYXRpb25zVG9CdWlsZCIsIk1hcCIsImlkRmllbGQiLCJmaW5kIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsImlkQ29sVHlwZSIsInR5cGUiLCJpZCIsIm51bWVyaWMiLCJwcmltYXJ5S2V5IiwidmFyY2hhciIsInNlcmlhbCIsInRyYXZlcnNlRmllbGRzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwiY3JlYXRlZEF0IiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImRlZmF1bHROb3ciLCJub3ROdWxsIiwidXBkYXRlZEF0IiwidGFibGUiLCJwZ1RhYmxlIiwiY29scyIsImV4dHJhQ29uZmlnIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImNvbmZpZyIsImtleSIsImZ1bmMiLCJhY2MiLCJjb2xOYW1lIiwidGFibGVzIiwibG9jYWxlVGFibGVOYW1lIiwiX2xvY2FsZSIsImVudW1zIiwiZW51bV9fbG9jYWxlcyIsIl9wYXJlbnRJRCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsIm9uRGVsZXRlIiwiX2xvY2FsZVBhcmVudCIsInVuaXF1ZSIsIm9uIiwibG9jYWxlc1RhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwibnVtYmVyc1RhYmxlTmFtZSIsIm51bWJlciIsIm9yZGVyIiwiaW50ZWdlciIsInBhcmVudCIsInBhdGgiLCJsb2NhbGUiLCJvcmRlclBhcmVudElkeCIsImluZGV4IiwibnVtYmVySWR4IiwibG9jYWxlUGFyZW50IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJ0b1NuYWtlQ2FzZSIsImNvbFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlc3VsdCIsImxvY2FsZUlkeCIsInBhcmVudFBhdGhPcmRlckxvY2FsZSIsInBhcmVudFBhdGhPcmRlciIsInJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9uTmFtZSIsInJlbGF0ZWRUYWJsZU5hbWUiLCJpZENvbHVtbk5hbWUiLCJ0YWJsZVJlbGF0aW9ucyIsIm1hbnkiLCJ2YWwiLCJfbG9jYWxlcyIsIl9udW1iZXJzIiwiX3JlbGF0aW9uc2hpcHMiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkEwQ3ZCQTs7O2VBQUFBOzs7NEJBckNhO3dCQVVuQjt1QkFDMEI7b0VBQ1Q7bUNBSVU7Z0NBQ0g7Ozs7OztBQW9CeEIsTUFBTUEsYUFBYSxDQUFDLEVBQ3pCQyxPQUFPLEVBQ1BDLGNBQWMsQ0FBQyxDQUFDLEVBQ2hCQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixLQUFLLEVB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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBiYXNlQ29sdW1ucz86IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgYmFzZUV4dHJhQ29uZmlnPzogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlcj5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzPzogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlOiBib29sZWFuXG4gIGZpZWxkczogRmllbGRbXVxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkVGFibGUgPSAoe1xuICBhZGFwdGVyLFxuICBiYXNlQ29sdW1ucyA9IHt9LFxuICBiYXNlRXh0cmFDb25maWcgPSB7fSxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBkaXNhYmxlVW5pcXVlID0gZmFsc2UsXG4gIGZpZWxkcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdGFibGVOYW1lLFxuICB0aW1lc3RhbXBzLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSBiYXNlQ29sdW1uc1xuICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj4gPSB7fVxuXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgY29uc3QgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7fVxuICBjb25zdCBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+ID0ge31cbiAgbGV0IGxvY2FsZXNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZEZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICBsZXQgaWRDb2xUeXBlID0gJ2ludGVnZXInXG5cbiAgaWYgKGlkRmllbGQpIHtcbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgaWRDb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICBjb2x1bW5zLmlkID0gbnVtZXJpYygnaWQnKS5wcmltYXJ5S2V5KClcbiAgICB9XG5cbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIGlkQ29sVHlwZSA9ICd2YXJjaGFyJ1xuICAgICAgY29sdW1ucy5pZCA9IHZhcmNoYXIoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gIH1cblxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFkYXB0ZXIsXG4gICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgIGNvbHVtbnMsXG4gICAgZGlzYWJsZVVuaXF1ZSxcbiAgICBmaWVsZHMsXG4gICAgaW5kZXhlcyxcbiAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICBuZXdUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICBwYXJlbnRUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ6IHJvb3RSZWxhdGlvbnNUb0J1aWxkIHx8IHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgcm9vdFRhYmxlSURDb2xUeXBlOiByb290VGFibGVJRENvbFR5cGUgfHwgaWRDb2xUeXBlLFxuICAgIHJvb3RUYWJsZU5hbWU6IHJvb3RUYWJsZU5hbWUgfHwgdGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoYCR7bG9jYWxlVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50X2lkX3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgbnVtYmVyOiBudW1lcmljKCdudW1iZXInKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICBudW1iZXJzVGFibGUgPSBwZ1RhYmxlKG51bWJlcnNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoJ29yZGVyX3BhcmVudF9pZHgnKS5vbihjb2xzLm9yZGVyLCBjb2xzLnBhcmVudCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy5udW1iZXJJZHggPSBpbmRleCgnbnVtYmVyX2lkeCcpLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoJ2xvY2FsZV9wYXJlbnQnKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdID0gbnVtYmVyc1RhYmxlXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMobnVtYmVyc1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW251bWJlcnNUYWJsZS5wYXJlbnRdLFxuICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgfSksXG4gICAgfSkpXG5cbiAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7bnVtYmVyc1RhYmxlTmFtZX1gXSA9IG51bWJlcnNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGJ1aWxkUmVsYXRpb25zaGlwcykge1xuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKSxcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgbGV0IGNvbFR5cGUgPSAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tcbiAgICAgICAgICByZWxhdGlvblRvXG4gICAgICAgIF0uY29uZmlnLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbGF0aW9uc2hpcHNgXG5cbiAgICAgIHJlbGF0aW9uc2hpcHNUYWJsZSA9IHBnVGFibGUocmVsYXRpb25zaGlwc1RhYmxlTmFtZSwgcmVsYXRpb25zaGlwQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgcmVzdWx0LmxvY2FsZUlkeCA9IGluZGV4KCdsb2NhbGVfaWR4Jykub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlckxvY2FsZSA9IHVuaXF1ZShcbiAgICAgICAgICAgIGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhcmVudF9pZF9wYXRoX29yZGVyX2xvY2FsZV91bmlxdWVgLFxuICAgICAgICAgICkub24oY29scy5wYXJlbnQsIGNvbHMucGF0aCwgY29scy5vcmRlciwgY29scy5sb2NhbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlciA9IHVuaXF1ZShcbiAgICAgICAgICAgIGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhcmVudF9pZF9wYXRoX29yZGVyX3VuaXF1ZWAsXG4gICAgICAgICAgKS5vbihjb2xzLnBhcmVudCwgY29scy5wYXRoLCBjb2xzLm9yZGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0gPSByZWxhdGlvbnNoaXBzVGFibGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHJlbGF0aW9uc2hpcHNUYWJsZSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlLnBhcmVudF0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgICAgICAgcmVsYXRpb25OYW1lOiAnX3JlbGF0aW9uc2hpcHMnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvblRvKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVsYXRlZFRhYmxlTmFtZSA9IHRvU25ha2VDYXNlKHJlbGF0aW9uVG8pXG4gICAgICAgICAgY29uc3QgaWRDb2x1bW5OYW1lID0gYCR7cmVsYXRpb25Ub31JRGBcbiAgICAgICAgICByZXN1bHRbaWRDb2x1bW5OYW1lXSA9IG9uZShhZGFwdGVyLnRhYmxlc1tyZWxhdGVkVGFibGVOYW1lXSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlW2lkQ29sdW1uTmFtZV1dLFxuICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0pXG5cbiAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfWBdID0gcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnModGFibGUsICh7IG1hbnkgfSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7fVxuXG4gICAgcmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgfSlcblxuICAgIGlmIChoYXNMb2NhbGl6ZWRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShsb2NhbGVzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVsYXRpb25zaGlwcyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxhdGlvbnNoaXBzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IHJlbGF0aW9uc1RvQnVpbGQgfVxufVxuIl0sIm5hbWVzIjpbImJ1aWxkVGFibGUiLCJhZGFwdGVyIiwiYmFzZUNvbHVtbnMiLCJiYXNlRXh0cmFDb25maWciLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRzIiwicm9vdFJlbGF0aW9uc1RvQnVpbGQiLCJyb290VGFibGVJRENvbFR5cGUiLCJyb290VGFibGVOYW1lIiwidGFibGVOYW1lIiwidGltZXN0YW1wcyIsImNvbHVtbnMiLCJpbmRleGVzIiwiaGFzTG9jYWxpemVkRmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlOdW1iZXJGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJsb2NhbGVzVGFibGUiLCJudW1iZXJzVGFibGUiLCJyZWxhdGlvbnNoaXBzIiwiU2V0IiwicmVsYXRpb25zaGlwc1RhYmxlIiwicmVsYXRpb25zVG9CdWlsZCIsIk1hcCIsImlkRmllbGQiLCJmaW5kIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsImlkQ29sVHlwZSIsInR5cGUiLCJpZCIsIm51bWVyaWMiLCJwcmltYXJ5S2V5IiwidmFyY2hhciIsInNlcmlhbCIsInRyYXZlcnNlRmllbGRzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwiY3JlYXRlZEF0IiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImRlZmF1bHROb3ciLCJub3ROdWxsIiwidXBkYXRlZEF0IiwidGFibGUiLCJwZ1RhYmxlIiwiY29scyIsImV4dHJhQ29uZmlnIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImNvbmZpZyIsImtleSIsImZ1bmMiLCJhY2MiLCJjb2xOYW1lIiwidGFibGVzIiwibG9jYWxlVGFibGVOYW1lIiwiX2xvY2FsZSIsImVudW1zIiwiZW51bV9fbG9jYWxlcyIsIl9wYXJlbnRJRCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsIm9uRGVsZXRlIiwiX2xvY2FsZVBhcmVudCIsInVuaXF1ZSIsIm9uIiwibG9jYWxlc1RhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwibnVtYmVyc1RhYmxlTmFtZSIsIm51bWJlciIsIm9yZGVyIiwiaW50ZWdlciIsInBhcmVudCIsInBhdGgiLCJsb2NhbGUiLCJvcmRlclBhcmVudElkeCIsImluZGV4IiwibnVtYmVySWR4IiwibG9jYWxlUGFyZW50IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJ0b1NuYWtlQ2FzZSIsImNvbFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlc3VsdCIsImxvY2FsZUlkeCIsInBhcmVudFBhdGhPcmRlckxvY2FsZSIsInBhcmVudFBhdGhPcmRlciIsInJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9uTmFtZSIsInJlbGF0ZWRUYWJsZU5hbWUiLCJpZENvbHVtbk5hbWUiLCJ0YWJsZVJlbGF0aW9ucyIsIm1hbnkiLCJ2YWwiLCJfbG9jYWxlcyIsIl9udW1iZXJzIiwiX3JlbGF0aW9uc2hpcHMiXSwibWFwcGluZ3MiOiJBQUFB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
@@ -0,0 +1,11 @@
1
+ import type { GenericColumn } from '../types';
2
+ type CreateIndexArgs = {
3
+ columnName: string;
4
+ name: string;
5
+ unique?: boolean;
6
+ };
7
+ export declare const createIndex: ({ name, columnName, unique }: CreateIndexArgs) => (table: {
8
+ [x: string]: GenericColumn;
9
+ }) => import("drizzle-orm/pg-core").IndexBuilder;
10
+ export {};
11
+ //# sourceMappingURL=createIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../src/schema/createIndex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,iCAAkC,eAAe;;gDAKxE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { integer, numeric, varchar } from 'drizzle-orm/pg-core';
2
+ export declare const parentIDColumnMap: {
3
+ integer: typeof integer;
4
+ numeric: typeof numeric;
5
+ varchar: typeof varchar;
6
+ };
7
+ //# sourceMappingURL=parentIDColumnMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parentIDColumnMap.d.ts","sourceRoot":"","sources":["../../src/schema/parentIDColumnMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;CAI7B,CAAA"}
@@ -0,0 +1,32 @@
1
+ import type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core';
2
+ import type { Field, TabAsField } from 'payload/types';
3
+ import type { GenericColumns, PostgresAdapter } from '../types';
4
+ type Args = {
5
+ adapter: PostgresAdapter;
6
+ buildRelationships: boolean;
7
+ columnPrefix?: string;
8
+ columns: Record<string, PgColumnBuilder>;
9
+ disableUnique?: boolean;
10
+ fieldPrefix?: string;
11
+ fields: (Field | TabAsField)[];
12
+ forceLocalized?: boolean;
13
+ indexes: Record<string, (cols: GenericColumns) => IndexBuilder>;
14
+ localesColumns: Record<string, PgColumnBuilder>;
15
+ localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>;
16
+ newTableName: string;
17
+ parentTableName: string;
18
+ relationsToBuild: Map<string, string>;
19
+ relationships: Set<string>;
20
+ rootRelationsToBuild?: Map<string, string>;
21
+ rootTableIDColType: string;
22
+ rootTableName: string;
23
+ };
24
+ type Result = {
25
+ hasLocalizedField: boolean;
26
+ hasLocalizedManyNumberField: boolean;
27
+ hasLocalizedRelationshipField: boolean;
28
+ hasManyNumberField: 'index' | boolean;
29
+ };
30
+ export declare const traverseFields: ({ adapter, buildRelationships, columnPrefix, columns, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, }: Args) => Result;
31
+ export {};
32
+ //# sourceMappingURL=traverseFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAqBtD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAQ/D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,cAAc,kRAmBxB,IAAI,KAAG,MAgfT,CAAA"}
@@ -120,6 +120,7 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
120
120
  return option;
121
121
  }));
122
122
  if (field.type === 'select' && field.hasMany) {
123
+ const selectTableName = `${newTableName}_${(0, _tosnakecase.default)(fieldName)}`;
123
124
  const baseColumns = {
124
125
  order: (0, _pgcore.integer)('order').notNull(),
125
126
  parent: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('parent_id').references(()=>adapter.tables[parentTableName].id, {
@@ -130,7 +131,7 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
130
131
  const baseExtraConfig = {};
131
132
  if (field.localized) {
132
133
  baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
133
- baseExtraConfig.parentOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols.parent, cols.order, cols.locale);
134
+ baseExtraConfig.parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${selectTableName}_parent_id_order_locale_unique`).on(cols.parent, cols.order, cols.locale);
134
135
  } else {
135
136
  baseExtraConfig.parent = (cols)=>(0, _pgcore.index)('parent_idx').on(cols.parent);
136
137
  baseExtraConfig.order = (cols)=>(0, _pgcore.index)('order_idx').on(cols.order);
@@ -138,7 +139,6 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
138
139
  if (field.index) {
139
140
  baseExtraConfig.value = (cols)=>(0, _pgcore.index)('value_idx').on(cols.value);
140
141
  }
141
- const selectTableName = `${newTableName}_${(0, _tosnakecase.default)(fieldName)}`;
142
142
  (0, _build.buildTable)({
143
143
  adapter,
144
144
  baseColumns,
@@ -174,6 +174,7 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
174
174
  }
175
175
  case 'array':
176
176
  {
177
+ const arrayTableName = `${newTableName}_${(0, _tosnakecase.default)(field.name)}`;
177
178
  const baseColumns = {
178
179
  _order: (0, _pgcore.integer)('_order').notNull(),
179
180
  _parentID: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('_parent_id').references(()=>adapter.tables[parentTableName].id, {
@@ -183,11 +184,10 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
183
184
  const baseExtraConfig = {};
184
185
  if (field.localized && adapter.payload.config.localization) {
185
186
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
186
- baseExtraConfig._parentOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._order, cols._locale);
187
+ baseExtraConfig._parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_parent_id_order_locale_unique`).on(cols._parentID, cols._order, cols._locale);
187
188
  } else {
188
- baseExtraConfig._parentOrder = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._order);
189
+ baseExtraConfig._parentOrder = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_parent_id_order_unique`).on(cols._parentID, cols._order);
189
190
  }
190
- const arrayTableName = `${newTableName}_${(0, _tosnakecase.default)(field.name)}`;
191
191
  const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
192
192
  adapter,
193
193
  baseColumns,
@@ -237,9 +237,9 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
237
237
  const baseExtraConfig = {};
238
238
  if (field.localized && adapter.payload.config.localization) {
239
239
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
240
- baseExtraConfig._parentPathOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._path, cols._order, cols._locale);
240
+ baseExtraConfig._parentPathOrderLocale = (cols)=>(0, _pgcore.unique)(`${blockTableName}_parent_id_path_order_locale_unique`).on(cols._parentID, cols._path, cols._order, cols._locale);
241
241
  } else {
242
- baseExtraConfig._parentPathOrder = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._path, cols._order);
242
+ baseExtraConfig._parentPathOrder = (cols)=>(0, _pgcore.unique)(`${blockTableName}_parent_id_path_order_unique`).on(cols._parentID, cols._path, cols._order);
243
243
  }
244
244
  const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
245
245
  adapter,
@@ -427,4 +427,4 @@ const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, di
427
427
  };
428
428
  };
429
429
 
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHVuaXF1ZSxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIH0gZnJvbSAnLi92YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGNvbHVtblByZWZpeD86IHN0cmluZ1xuICBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGRpc2FibGVVbmlxdWU/OiBib29sZWFuXG4gIGZpZWxkUHJlZml4Pzogc3RyaW5nXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBmb3JjZUxvY2FsaXplZD86IGJvb2xlYW5cbiAgaW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGxvY2FsZXNJbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbmV3VGFibGVOYW1lOiBzdHJpbmdcbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxuICByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPlxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlOiBzdHJpbmdcbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG59XG5cbnR5cGUgUmVzdWx0ID0ge1xuICBoYXNMb2NhbGl6ZWRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGxldCBwYXJlbnRJRENvbFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHVuaXF1ZTogZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGBlbnVtXyR7bmV3VGFibGVOYW1lfV8ke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge31cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50T3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5wYXJlbnQsIGNvbHMub3JkZXIsIGNvbHMubG9jYWxlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50ID0gKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWR4Jykub24oY29scy5wYXJlbnQpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcub3JkZXIgPSAoY29scykgPT4gaW5kZXgoJ29yZGVyX2lkeCcpLm9uKGNvbHMub3JkZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoJ3ZhbHVlX2lkeCcpLm9uKGNvbHMudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkTmFtZSl9YFxuXG4gICAgICAgICAgYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgX29yZGVyOiBpbnRlZ2VyKCdfb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgID4gPSB7fVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRPcmRlckxvY2FsZSA9IChjb2xzKSA9PlxuICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX29yZGVyLCBjb2xzLl9sb2NhbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRPcmRlciA9IChjb2xzKSA9PiB1bmlxdWUoKS5vbihjb2xzLl9wYXJlbnRJRCwgY29scy5fb3JkZXIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG5cbiAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YXJyYXlUYWJsZU5hbWV9YF0gPSBhcnJheVRhYmxlUmVsYXRpb25zXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7fVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRQYXRoT3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUoKS5vbihjb2xzLl9wYXJlbnRJRCwgY29scy5fcGF0aCwgY29scy5fb3JkZXIsIGNvbHMuX2xvY2FsZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50UGF0aE9yZGVyID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX3BhdGgsIGNvbHMuX29yZGVyKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGJsb2NrLmZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoYWRhcHRlci50YWJsZXNbYCR7YmxvY2tUYWJsZU5hbWV9X2xvY2FsZXNgXSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YmxvY2tUYWJsZU5hbWV9YF0gPSBibG9ja1RhYmxlUmVsYXRpb25zXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCh7XG4gICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICBsb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQuc2V0KGBfYmxvY2tzXyR7YmxvY2suc2x1Z31gLCBibG9ja1RhYmxlTmFtZSlcbiAgICAgICAgfSlcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWInOlxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmICghKCduYW1lJyBpbiBmaWVsZCkpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogdGFiSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGZpZWxkLnJlbGF0aW9uVG8uZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uc2hpcHMuYWRkKHJlbGF0aW9uKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLmFkZChmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAodGFyZ2V0VGFibGVbZmllbGROYW1lXSAmJiAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkICYmICFjb25kaXRpb24pIHtcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0ubm90TnVsbCgpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImNvbHVtblByZWZpeCIsImNvbHVtbnMiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicGFyZW50SURDb2xUeXBlIiwiaWQiLCJQZ051bWVyaWNCdWlsZGVyIiwiUGdWYXJjaGFyQnVpbGRlciIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJjb2x1bW5OYW1lIiwiZmllbGROYW1lIiwidGFyZ2V0VGFibGUiLCJ0YXJnZXRJbmRleGVzIiwiZmllbGRBZmZlY3RzRGF0YSIsInRvU25ha2VDYXNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNyZWF0ZUluZGV4IiwidmFyY2hhciIsIkludmFsaWRDb25maWd1cmF0aW9uIiwibnVtZXJpYyIsImpzb25iIiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImVudW1OYW1lIiwiZW51bXMiLCJwZ0VudW0iLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwib3B0aW9uSXNPYmplY3QiLCJ2YWx1ZSIsImJhc2VDb2x1bW5zIiwib3JkZXIiLCJpbnRlZ2VyIiwibm90TnVsbCIsInBhcmVudCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsInRhYmxlcyIsIm9uRGVsZXRlIiwiYmFzZUV4dHJhQ29uZmlnIiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsInBhcmVudE9yZGVyTG9jYWxlIiwiY29scyIsIm9uIiwic2VsZWN0VGFibGVOYW1lIiwiYnVpbGRUYWJsZSIsInRhYmxlTmFtZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwiYm9vbGVhbiIsIl9vcmRlciIsIl9wYXJlbnRJRCIsIl9sb2NhbGUiLCJfcGFyZW50T3JkZXJMb2NhbGUiLCJfcGFyZW50T3JkZXIiLCJhcnJheVRhYmxlTmFtZSIsInN1YlJlbGF0aW9uc1RvQnVpbGQiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwidmFsIiwia2V5IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja1RhYmxlTmFtZSIsInNsdWciLCJfcGF0aCIsInRleHQiLCJfcGFyZW50UGF0aE9yZGVyTG9jYWxlIiwiX3BhcmVudFBhdGhPcmRlciIsImJsb2NrVGFibGVSZWxhdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsInRhYmxlIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYnMiLCJ0YWIiLCJyb3dIYXNMb2NhbGl6ZWRGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwiY29uZGl0aW9uIiwiYWRtaW4iLCJyZXF1aXJlZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTREdkJBOzs7ZUFBQUE7Ozs0QkF2RGE7d0JBY25CO3dCQUM4Qjt1QkFDWTtvRUFDekI7aUNBSVE7dUJBQ0w7NkJBQ0M7bUNBQ007a0RBQ2U7Ozs7OztBQThCMUMsTUFBTUEsaUJBQWlCLENBQUMsRUFDN0JDLE9BQU8sRUFDUEMsa0JBQWtCLEVBQ2xCQyxZQUFZLEVBQ1pDLE9BQU8sRUFDUEMsZ0JBQWdCLEtBQUssRUFDckJDLFdBQVcsRUFDWEMsTUFBTSxFQUNOQyxjQUFjLEVBQ2RDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxjQUFj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
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHVuaXF1ZSxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIH0gZnJvbSAnLi92YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGNvbHVtblByZWZpeD86IHN0cmluZ1xuICBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGRpc2FibGVVbmlxdWU/OiBib29sZWFuXG4gIGZpZWxkUHJlZml4Pzogc3RyaW5nXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBmb3JjZUxvY2FsaXplZD86IGJvb2xlYW5cbiAgaW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGxvY2FsZXNJbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbmV3VGFibGVOYW1lOiBzdHJpbmdcbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxuICByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPlxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlOiBzdHJpbmdcbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG59XG5cbnR5cGUgUmVzdWx0ID0ge1xuICBoYXNMb2NhbGl6ZWRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGxldCBwYXJlbnRJRENvbFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHVuaXF1ZTogZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGBlbnVtXyR7bmV3VGFibGVOYW1lfV8ke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZE5hbWUpfWBcbiAgICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgICAgICB2YWx1ZTogYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oJ3ZhbHVlJyksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBSZWNvcmQ8XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgICAgPiA9IHt9XG5cbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBiYXNlQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLnBhcmVudE9yZGVyTG9jYWxlID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgIHVuaXF1ZShgJHtzZWxlY3RUYWJsZU5hbWV9X3BhcmVudF9pZF9vcmRlcl9sb2NhbGVfdW5pcXVlYCkub24oXG4gICAgICAgICAgICAgICAgY29scy5wYXJlbnQsXG4gICAgICAgICAgICAgICAgY29scy5vcmRlcixcbiAgICAgICAgICAgICAgICBjb2xzLmxvY2FsZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50ID0gKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWR4Jykub24oY29scy5wYXJlbnQpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcub3JkZXIgPSAoY29scykgPT4gaW5kZXgoJ29yZGVyX2lkeCcpLm9uKGNvbHMub3JkZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoJ3ZhbHVlX2lkeCcpLm9uKGNvbHMudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgYXJyYXlUYWJsZU5hbWUgPSBgJHtuZXdUYWJsZU5hbWV9XyR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBSZWNvcmQ8XG4gICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgPiA9IHt9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX3BhcmVudE9yZGVyTG9jYWxlID0gKGNvbHMpID0+XG4gICAgICAgICAgICB1bmlxdWUoYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9vcmRlcl9sb2NhbGVfdW5pcXVlYCkub24oXG4gICAgICAgICAgICAgIGNvbHMuX3BhcmVudElELFxuICAgICAgICAgICAgICBjb2xzLl9vcmRlcixcbiAgICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50T3JkZXIgPSAoY29scykgPT5cbiAgICAgICAgICAgIHVuaXF1ZShgJHthcnJheVRhYmxlTmFtZX1fcGFyZW50X2lkX29yZGVyX3VuaXF1ZWApLm9uKGNvbHMuX3BhcmVudElELCBjb2xzLl9vcmRlcilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgYXJyYXlUYWJsZU5hbWUpXG5cbiAgICAgICAgY29uc3QgYXJyYXlUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhhZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0sICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChoYXNMb2NhbGVzVGFibGUoZmllbGQuZmllbGRzKSkge1xuICAgICAgICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShhZGFwdGVyLnRhYmxlc1tgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlc2BdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgZmllbGQuYmxvY2tzLmZvckVhY2goKGJsb2NrKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2tUYWJsZU5hbWUgPSBgJHtyb290VGFibGVOYW1lfV9ibG9ja3NfJHt0b1NuYWtlQ2FzZShibG9jay5zbHVnKX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtyb290VGFibGVJRENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhdGg6IHRleHQoJ19wYXRoJykubm90TnVsbCgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgICAgICA+ID0ge31cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50UGF0aE9yZGVyTG9jYWxlID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgdW5pcXVlKGAke2Jsb2NrVGFibGVOYW1lfV9wYXJlbnRfaWRfcGF0aF9vcmRlcl9sb2NhbGVfdW5pcXVlYCkub24oXG4gICAgICAgICAgICAgICAgICBjb2xzLl9wYXJlbnRJRCxcbiAgICAgICAgICAgICAgICAgIGNvbHMuX3BhdGgsXG4gICAgICAgICAgICAgICAgICBjb2xzLl9vcmRlcixcbiAgICAgICAgICAgICAgICAgIGNvbHMuX2xvY2FsZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX3BhcmVudFBhdGhPcmRlciA9IChjb2xzKSA9PlxuICAgICAgICAgICAgICAgIHVuaXF1ZShgJHtibG9ja1RhYmxlTmFtZX1fcGFyZW50X2lkX3BhdGhfb3JkZXJfdW5pcXVlYCkub24oXG4gICAgICAgICAgICAgICAgICBjb2xzLl9wYXJlbnRJRCxcbiAgICAgICAgICAgICAgICAgIGNvbHMuX3BhdGgsXG4gICAgICAgICAgICAgICAgICBjb2xzLl9vcmRlcixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IGJsb2NrVGFibGVOYW1lLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY29uc3QgYmxvY2tUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICAoeyBtYW55LCBvbmUgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICAgICAgICBfcGFyZW50SUQ6IG9uZShhZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChoYXNMb2NhbGVzVGFibGUoYmxvY2suZmllbGRzKSkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX1fbG9jYWxlc2BdKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtibG9ja1RhYmxlTmFtZX1gXSA9IGJsb2NrVGFibGVSZWxhdGlvbnNcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsKHtcbiAgICAgICAgICAgICAgYmxvY2ssXG4gICAgICAgICAgICAgIGxvY2FsaXplZDogZmllbGQubG9jYWxpemVkLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZC5zZXQoYF9ibG9ja3NfJHtibG9jay5zbHVnfWAsIGJsb2NrVGFibGVOYW1lKVxuICAgICAgICB9KVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYic6XG4gICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgaWYgKCEoJ25hbWUnIGluIGZpZWxkKSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiBncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWU6IHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uTmFtZX1fYCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXg6IGAke2ZpZWxkTmFtZX1fYCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZDogZmllbGQubG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBgJHtwYXJlbnRUYWJsZU5hbWV9XyR7Y29sdW1uTmFtZX1gLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFicyc6IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiB0YWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncm93JzpcbiAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IHJvd0hhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgZmllbGQucmVsYXRpb25Uby5mb3JFYWNoKChyZWxhdGlvbikgPT4gcmVsYXRpb25zaGlwcy5hZGQocmVsYXRpb24pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbGF0aW9uc2hpcHMuYWRkKGZpZWxkLnJlbGF0aW9uVG8pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb25zdCBjb25kaXRpb24gPSBmaWVsZC5hZG1pbiAmJiBmaWVsZC5hZG1pbi5jb25kaXRpb25cblxuICAgIGlmICh0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmICdyZXF1aXJlZCcgaW4gZmllbGQgJiYgZmllbGQucmVxdWlyZWQgJiYgIWNvbmRpdGlvbikge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJhZGFwdGVyIiwiYnVpbGRSZWxhdGlvbnNoaXBzIiwiY29sdW1uUHJlZml4IiwiY29sdW1ucyIsImRpc2FibGVVbmlxdWUiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlTG9jYWxpemVkIiwiaW5kZXhlcyIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJyZWxhdGlvbnNUb0J1aWxkIiwicmVsYXRpb25zaGlwcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxpemVkIiwidW5pcXVlIiwiaW5kZXgiLCJpbmNsdWRlcyIsInR5cGUiLCJoYXNNYW55IiwiY3JlYXRlSW5kZXgiLCJ2YXJjaGFyIiwiSW52YWxpZENvbmZpZ3VyYXRpb24iLCJudW1lcmljIiwianNvbmIiLCJ0aW1lc3RhbXAiLCJtb2RlIiwicHJlY2lzaW9uIiwid2l0aFRpbWV6b25lIiwiZW51bU5hbWUiLCJlbnVtcyIsInBnRW51bSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJvcHRpb25Jc09iamVjdCIsInZhbHVlIiwic2VsZWN0VGFibGVOYW1lIiwiYmFzZUNvbHVtbnMiLCJvcmRlciIsImludGVnZXIiLCJub3ROdWxsIiwicGFyZW50IiwicGFyZW50SURDb2x1bW5NYXAiLCJyZWZlcmVuY2VzIiwidGFibGVzIiwib25EZWxldGUiLCJiYXNlRXh0cmFDb25maWciLCJsb2NhbGUiLCJlbnVtX19sb2NhbGVzIiwicGFyZW50T3JkZXJMb2NhbGUiLCJjb2xzIiwib24iLCJidWlsZFRhYmxlIiwidGFibGVOYW1lIiwic2V0Iiwic2VsZWN0VGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbnMiLCJvbmUiLCJyZXN1bHQiLCJib29sZWFuIiwiYXJyYXlUYWJsZU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfbG9jYWxlIiwiX3BhcmVudE9yZGVyTG9jYWxlIiwiX3BhcmVudE9yZGVyIiwic3ViUmVsYXRpb25zVG9CdWlsZCIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJ2YWwiLCJrZXkiLCJibG9ja3MiLCJibG9jayIsImJsb2NrVGFibGVOYW1lIiwic2x1ZyIsIl9wYXRoIiwidGV4dCIsIl9wYXJlbnRQYXRoT3JkZXJMb2NhbGUiLCJfcGFyZW50UGF0aE9yZGVyIiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwidGFiSGFzTWFueU51bWJlckZpZWxkIiwidGFicyIsInRhYiIsInJvd0hhc0xvY2FsaXplZEZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55TnVtYmVyRmllbGQiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwicmVsYXRpb24iLCJhZGQiLCJjb25kaXRpb24iLCJhZG1pbiIsInJlcXVpcmVkIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBNER2QkE7OztlQUFBQTs7OzRCQXZEYTt3QkFjbkI7d0JBQzhCO3VCQUNZO29FQUN6QjtpQ0FJUTt1QkFDTDs2QkFDQzttQ0FDTTtrREFDZTs7Ozs7O0FBOEIxQyxNQUFNQSxpQkFBaUIsQ0FBQyxFQUM3QkMsT0FBTyxFQUNQQyxrQkFBa0IsRUFDbEJDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxnQkFBZ0IsS0FBSyxFQUNyQkMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNSO0lBQ0wsSUFBSUMsb0JBQW9CO0lBQ3hCLElBQUlDLGdDQUFnQztJQUNwQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsOEJBQThCO0lBRWxDLElBQUlDLGtCQUFrQjtJQUN0QixJQUFJbkIsUUFBUW9CLEVBQUUsWUFBWUMsd0JBQWdCLEVBQUVGLGtCQUFrQjtJQUM5RCxJQUFJbkIsUUFBUW9CLEVBQUUsWUFBWUUsd0JBQWdCLEVBQUVILGtCQUFrQjtJQUU5RGhCLE9BQU9vQixPQUFPLENBQUMsQ0FBQ0M7UUFDZCxJQUFJLFVBQVVBLFNBQVNBLE1BQU1D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
@@ -0,0 +1,11 @@
1
+ import type { Block } from 'payload/types';
2
+ import type { GenericTable } from '../types';
3
+ type Args = {
4
+ block: Block;
5
+ localized: boolean;
6
+ rootTableName: string;
7
+ table: GenericTable;
8
+ };
9
+ export declare const validateExistingBlockIsIdentical: ({ block, localized, rootTableName, table, }: Args) => void;
10
+ export {};
11
+ //# sourceMappingURL=validateExistingBlockIsIdentical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gCAAgC,gDAK1C,IAAI,KAAG,IAoBT,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { BeginTransaction } from 'payload/database';
2
+ export declare const beginTransaction: BeginTransaction;
3
+ //# sourceMappingURL=beginTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAMxD,eAAO,MAAM,gBAAgB,EAAE,gBAgD9B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { CommitTransaction } from 'payload/database';
2
+ export declare const commitTransaction: CommitTransaction;
3
+ //# sourceMappingURL=commitTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,iBAAiB,EAAE,iBAa/B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { RollbackTransaction } from 'payload/database';
2
+ export declare const rollbackTransaction: RollbackTransaction;
3
+ //# sourceMappingURL=rollbackTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollbackTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/rollbackTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,mBAWjC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { NumberField } from 'payload/types';
2
+ type Args = {
3
+ field: NumberField;
4
+ locale?: string;
5
+ numberRows: Record<string, unknown>[];
6
+ ref: Record<string, unknown>;
7
+ };
8
+ export declare const transformHasManyNumber: ({ field, locale, numberRows, ref }: Args) => void;
9
+ export {};
10
+ //# sourceMappingURL=hasManyNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,sBAAsB,uCAAwC,IAAI,SAQ9E,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { SanitizedConfig } from 'payload/config';
2
+ import type { Field, TypeWithID } from 'payload/types';
3
+ type TransformArgs = {
4
+ config: SanitizedConfig;
5
+ data: Record<string, unknown>;
6
+ fallbackLocale?: false | string;
7
+ fields: Field[];
8
+ locale?: string;
9
+ };
10
+ export declare const transform: <T extends TypeWithID>({ config, data, fields }: TransformArgs) => T;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAMtD,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,SAAS,mDAAoD,aAAa,MA+BtF,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { RelationshipField, UploadField } from 'payload/types';
2
+ type Args = {
3
+ field: RelationshipField | UploadField;
4
+ locale?: string;
5
+ ref: Record<string, unknown>;
6
+ relations: Record<string, unknown>[];
7
+ };
8
+ export declare const transformRelationship: ({ field, locale, ref, relations }: Args) => void;
9
+ export {};
10
+ //# sourceMappingURL=relationship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnE,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,qBAAqB,sCAAuC,IAAI,SAiE5E,CAAA"}
@@ -0,0 +1,44 @@
1
+ import type { SanitizedConfig } from 'payload/config';
2
+ import type { Field, TabAsField } from 'payload/types';
3
+ import type { BlocksMap } from '../../utilities/createBlocksMap';
4
+ type TraverseFieldsArgs = {
5
+ /**
6
+ * Pre-formatted blocks map
7
+ */
8
+ blocks: BlocksMap;
9
+ /**
10
+ * The full Payload config
11
+ */
12
+ config: SanitizedConfig;
13
+ /**
14
+ * The data reference to be mutated within this recursive function
15
+ */
16
+ dataRef: Record<string, unknown>;
17
+ /**
18
+ * Column prefix can be built up by group and named tab fields
19
+ */
20
+ fieldPrefix: string;
21
+ /**
22
+ * An array of Payload fields to traverse
23
+ */
24
+ fields: (Field | TabAsField)[];
25
+ /**
26
+ * All hasMany number fields, as returned by Drizzle, keyed on an object by field path
27
+ */
28
+ numbers: Record<string, Record<string, unknown>[]>;
29
+ /**
30
+ * The current field path (in dot notation), used to merge in relationships
31
+ */
32
+ path: string;
33
+ /**
34
+ * All related documents, as returned by Drizzle, keyed on an object by field path
35
+ */
36
+ relationships: Record<string, Record<string, unknown>[]>;
37
+ /**
38
+ * Data structure representing the nearest table from db
39
+ */
40
+ table: Record<string, unknown>;
41
+ };
42
+ export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, fieldPrefix, fields, numbers, path, relationships, table, }: TraverseFieldsArgs) => T;
43
+ export {};
44
+ //# sourceMappingURL=traverseFields.d.ts.map
@@ -0,0 +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;AAKhE,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,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;CAC/B,CAAA;AAID,eAAO,MAAM,cAAc,8HAUxB,kBAAkB,MAkWpB,CAAA"}