payload 2.0.0-beta.13 → 2.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/admin/components/elements/ArrayAction/index.js +2 -2
  2. package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
  3. package/dist/admin/components/elements/DocumentControls/index.js +1 -2
  4. package/dist/admin/components/elements/Hamburger/index.scss +2 -2
  5. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  6. package/dist/admin/components/elements/Header/index.js +6 -6
  7. package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
  8. package/dist/admin/components/elements/Localizer/index.js +1 -3
  9. package/dist/admin/components/elements/Nav/context.d.ts +1 -1
  10. package/dist/admin/components/elements/Nav/context.d.ts.map +1 -1
  11. package/dist/admin/components/elements/Nav/context.js +12 -7
  12. package/dist/admin/components/elements/Nav/index.d.ts.map +1 -1
  13. package/dist/admin/components/elements/Nav/index.js +19 -18
  14. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +6 -6
  15. package/dist/admin/components/elements/WhereBuilder/field-types.js +2 -2
  16. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +5 -5
  17. package/dist/admin/components/forms/Form/fieldReducer.js +7 -7
  18. package/dist/admin/components/forms/Form/index.js +3 -3
  19. package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
  20. package/dist/admin/components/forms/field-types/Array/index.js +10 -10
  21. package/dist/admin/components/forms/field-types/Blocks/index.js +8 -8
  22. package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
  23. package/dist/admin/components/forms/field-types/Select/Input.js +4 -4
  24. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts +8 -0
  25. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts.map +1 -0
  26. package/dist/admin/components/icons/MinimizeMaximize/index.js +85 -0
  27. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  28. package/dist/admin/components/templates/Default/index.js +10 -10
  29. package/dist/admin/components/views/API/index.d.ts +6 -0
  30. package/dist/admin/components/views/API/index.d.ts.map +1 -0
  31. package/dist/admin/components/views/API/index.js +281 -0
  32. package/dist/admin/components/views/API/index.scss +202 -0
  33. package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
  34. package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
  35. package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
  36. package/dist/admin/components/views/Global/Routes/index.js +8 -1
  37. package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +3 -3
  38. package/dist/admin/components/views/collections/Edit/SetStepNav.js +3 -3
  39. package/dist/auth/operations/me.d.ts.map +1 -1
  40. package/dist/auth/operations/me.js +13 -5
  41. package/dist/auth/strategies/jwt.js +3 -3
  42. package/dist/bin/build.d.ts.map +1 -1
  43. package/dist/bin/build.js +2 -5
  44. package/dist/bin/index.js +2 -2
  45. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  46. package/dist/database/migrations/migrateReset.js +17 -1
  47. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  48. package/dist/database/migrations/migrationsCollection.js +1 -5
  49. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  50. package/dist/fields/hooks/beforeChange/promise.js +2 -9
  51. package/dist/fields/validations.d.ts.map +1 -1
  52. package/dist/fields/validations.js +9 -7
  53. package/package.json +1 -1
  54. package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts +0 -9
  55. package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts.map +0 -1
  56. package/dist/admin/components/views/LivePreview/useLivePreview/index.js +0 -53
  57. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts +0 -10
  58. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts.map +0 -1
  59. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.js +0 -30
  60. package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts +0 -12
  61. package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts.map +0 -1
  62. package/dist/admin/components/views/LivePreview/useLivePreview/promise.js +0 -17
  63. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts +0 -12
  64. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts.map +0 -1
  65. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.js +0 -179
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "traverseFields", {
6
- enumerable: true,
7
- get: function() {
8
- return traverseFields;
9
- }
10
- });
11
- const _promise = require("./promise");
12
- const traverseFields = ({ apiRoute, depth, fieldSchema, incomingData, populationPromises, result, serverURL })=>{
13
- fieldSchema.forEach((field)=>{
14
- if ('name' in field && typeof field.name === 'string') {
15
- // TODO: type this
16
- const fieldName = field.name;
17
- switch(field.type){
18
- case 'array':
19
- if (Array.isArray(incomingData[fieldName])) {
20
- result[fieldName] = incomingData[fieldName].map((row, i)=>{
21
- const hasExistingRow = Array.isArray(result[fieldName]) && typeof result[fieldName][i] === 'object' && result[fieldName][i] !== null;
22
- const newRow = hasExistingRow ? {
23
- ...result[fieldName][i]
24
- } : {};
25
- traverseFields({
26
- apiRoute,
27
- depth,
28
- fieldSchema: field.fields,
29
- incomingData: row,
30
- populationPromises,
31
- result: newRow,
32
- serverURL
33
- });
34
- return newRow;
35
- });
36
- }
37
- break;
38
- case 'blocks':
39
- if (Array.isArray(incomingData[fieldName])) {
40
- result[fieldName] = incomingData[fieldName].map((row, i)=>{
41
- const matchedBlock = field.blocks[row.blockType];
42
- const hasExistingRow = Array.isArray(result[fieldName]) && typeof result[fieldName][i] === 'object' && result[fieldName][i] !== null && result[fieldName][i].blockType === row.blockType;
43
- const newRow = hasExistingRow ? {
44
- ...result[fieldName][i]
45
- } : {
46
- blockType: matchedBlock.slug
47
- };
48
- traverseFields({
49
- apiRoute,
50
- depth,
51
- fieldSchema: matchedBlock.fields,
52
- incomingData: row,
53
- populationPromises,
54
- result: newRow,
55
- serverURL
56
- });
57
- return newRow;
58
- });
59
- }
60
- break;
61
- case 'tab':
62
- case 'group':
63
- if (!result[fieldName]) {
64
- result[fieldName] = {};
65
- }
66
- traverseFields({
67
- apiRoute,
68
- depth,
69
- fieldSchema: field.fields,
70
- incomingData: incomingData[fieldName] || {},
71
- populationPromises,
72
- result: result[fieldName],
73
- serverURL
74
- });
75
- break;
76
- case 'upload':
77
- case 'relationship':
78
- if (field.hasMany && Array.isArray(incomingData[fieldName])) {
79
- const existingValue = Array.isArray(result[fieldName]) ? [
80
- ...result[fieldName]
81
- ] : [];
82
- result[fieldName] = Array.isArray(result[fieldName]) ? [
83
- ...result[fieldName]
84
- ].slice(0, incomingData[fieldName].length) : [];
85
- incomingData[fieldName].forEach((relation, i)=>{
86
- // Handle `hasMany` polymorphic
87
- if (Array.isArray(field.relationTo)) {
88
- const existingID = existingValue[i]?.value?.id;
89
- if (existingID !== relation.value || existingValue[i]?.relationTo !== relation.relationTo) {
90
- result[fieldName][i] = {
91
- relationTo: relation.relationTo
92
- };
93
- populationPromises.push((0, _promise.promise)({
94
- id: relation.value,
95
- accessor: 'value',
96
- apiRoute,
97
- collection: relation.relationTo,
98
- depth,
99
- ref: result[fieldName][i],
100
- serverURL
101
- }));
102
- }
103
- } else {
104
- // Handle `hasMany` singular
105
- const existingID = existingValue[i]?.id;
106
- if (existingID !== relation) {
107
- populationPromises.push((0, _promise.promise)({
108
- id: relation,
109
- accessor: i,
110
- apiRoute,
111
- collection: String(field.relationTo),
112
- depth,
113
- ref: result[fieldName],
114
- serverURL
115
- }));
116
- }
117
- }
118
- });
119
- } else {
120
- // Handle `hasOne` polymorphic
121
- if (Array.isArray(field.relationTo)) {
122
- const hasNewValue = typeof incomingData[fieldName] === 'object' && incomingData[fieldName] !== null;
123
- const hasOldValue = typeof result[fieldName] === 'object' && result[fieldName] !== null;
124
- const newValue = hasNewValue ? incomingData[fieldName].value : '';
125
- const newRelation = hasNewValue ? incomingData[fieldName].relationTo : '';
126
- const oldValue = hasOldValue ? result[fieldName].value : '';
127
- const oldRelation = hasOldValue ? result[fieldName].relationTo : '';
128
- if (newValue !== oldValue || newRelation !== oldRelation) {
129
- if (newValue) {
130
- if (!result[fieldName]) {
131
- result[fieldName] = {
132
- relationTo: newRelation
133
- };
134
- }
135
- populationPromises.push((0, _promise.promise)({
136
- id: newValue,
137
- accessor: 'value',
138
- apiRoute,
139
- collection: newRelation,
140
- depth,
141
- ref: result[fieldName],
142
- serverURL
143
- }));
144
- }
145
- } else {
146
- result[fieldName] = null;
147
- }
148
- } else {
149
- const hasNewValue = typeof incomingData[fieldName] === 'object' && incomingData[fieldName] !== null;
150
- const hasOldValue = typeof result[fieldName] === 'object' && result[fieldName] !== null;
151
- const newValue = hasNewValue ? incomingData[fieldName].value : '';
152
- const oldValue = hasOldValue ? result[fieldName].value : '';
153
- if (newValue !== oldValue) {
154
- if (newValue) {
155
- populationPromises.push((0, _promise.promise)({
156
- id: newValue,
157
- accessor: fieldName,
158
- apiRoute,
159
- collection: String(field.relationTo),
160
- depth,
161
- ref: result,
162
- serverURL
163
- }));
164
- }
165
- } else {
166
- result[fieldName] = null;
167
- }
168
- }
169
- }
170
- break;
171
- default:
172
- result[fieldName] = incomingData[fieldName];
173
- }
174
- }
175
- });
176
- return null;
177
- };
178
-
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L3RyYXZlcnNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2UgfSBmcm9tICcuL3Byb21pc2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgYXBpUm91dGU/OiBzdHJpbmdcbiAgZGVwdGg6IG51bWJlclxuICBmaWVsZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICBpbmNvbWluZ0RhdGE6IFRcbiAgcG9wdWxhdGlvblByb21pc2VzOiBQcm9taXNlPHZvaWQ+W11cbiAgcmVzdWx0OiBUXG4gIHNlcnZlclVSTDogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9IDxUPih7XG4gIGFwaVJvdXRlLFxuICBkZXB0aCxcbiAgZmllbGRTY2hlbWEsXG4gIGluY29taW5nRGF0YSxcbiAgcG9wdWxhdGlvblByb21pc2VzLFxuICByZXN1bHQsXG4gIHNlcnZlclVSTCxcbn06IEFyZ3M8VD4pOiB2b2lkID0+IHtcbiAgZmllbGRTY2hlbWEuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIHR5cGVvZiBmaWVsZC5uYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVE9ETzogdHlwZSB0aGlzXG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC5uYW1lXG5cbiAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGROYW1lXSA9IGluY29taW5nRGF0YVtmaWVsZE5hbWVdLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc0V4aXN0aW5nUm93ID1cbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByZXN1bHRbZmllbGROYW1lXVtpXSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRbZmllbGROYW1lXVtpXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IGhhc0V4aXN0aW5nUm93ID8geyAuLi5yZXN1bHRbZmllbGROYW1lXVtpXSB9IDoge31cblxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBuZXdSb3csXG4gICAgICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdSb3dcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYmxvY2tzJzpcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbmNvbWluZ0RhdGFbZmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0ubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEJsb2NrID0gZmllbGQuYmxvY2tzW3Jvdy5ibG9ja1R5cGVdXG5cbiAgICAgICAgICAgICAgY29uc3QgaGFzRXhpc3RpbmdSb3cgPVxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzdWx0W2ZpZWxkTmFtZV0pICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdW2ldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdW2ldICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV1baV0uYmxvY2tUeXBlID09PSByb3cuYmxvY2tUeXBlXG5cbiAgICAgICAgICAgICAgY29uc3QgbmV3Um93ID0gaGFzRXhpc3RpbmdSb3dcbiAgICAgICAgICAgICAgICA/IHsgLi4ucmVzdWx0W2ZpZWxkTmFtZV1baV0gfVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICBibG9ja1R5cGU6IG1hdGNoZWRCbG9jay5zbHVnLFxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYTogbWF0Y2hlZEJsb2NrLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBuZXdSb3csXG4gICAgICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdSb3dcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgIGluY29taW5nRGF0YTogaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0gfHwge30sXG4gICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdFtmaWVsZE5hbWVdLFxuICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkgJiYgQXJyYXkuaXNBcnJheShpbmNvbWluZ0RhdGFbZmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKSA/IFsuLi5yZXN1bHRbZmllbGROYW1lXV0gOiBbXVxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV0gPSBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKVxuICAgICAgICAgICAgICA/IFsuLi5yZXN1bHRbZmllbGROYW1lXV0uc2xpY2UoMCwgaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0ubGVuZ3RoKVxuICAgICAgICAgICAgICA6IFtdXG5cbiAgICAgICAgICAgIGluY29taW5nRGF0YVtmaWVsZE5hbWVdLmZvckVhY2goKHJlbGF0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEhhbmRsZSBgaGFzTWFueWAgcG9seW1vcnBoaWNcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lEID0gZXhpc3RpbmdWYWx1ZVtpXT8udmFsdWU/LmlkXG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0lEICE9PSByZWxhdGlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdWYWx1ZVtpXT8ucmVsYXRpb25UbyAhPT0gcmVsYXRpb24ucmVsYXRpb25Ub1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV1baV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHJlbGF0aW9uLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBwcm9taXNlKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogcmVsYXRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgYWNjZXNzb3I6ICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogcmVsYXRpb24ucmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3VsdFtmaWVsZE5hbWVdW2ldLFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBgaGFzTWFueWAgc2luZ3VsYXJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lEID0gZXhpc3RpbmdWYWx1ZVtpXT8uaWRcblxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0lEICE9PSByZWxhdGlvbikge1xuICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHByb21pc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogaSxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBTdHJpbmcoZmllbGQucmVsYXRpb25UbyksXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgICAgICAgcmVmOiByZXN1bHRbZmllbGROYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJVUkwsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGBoYXNPbmVgIHBvbHltb3JwaGljXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBjb25zdCBoYXNOZXdWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGluY29taW5nRGF0YVtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiBpbmNvbWluZ0RhdGFbZmllbGROYW1lXSAhPT0gbnVsbFxuICAgICAgICAgICAgICBjb25zdCBoYXNPbGRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiByZXN1bHRbZmllbGROYW1lXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS52YWx1ZSA6ICcnXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1JlbGF0aW9uID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS5yZWxhdGlvblRvIDogJydcblxuICAgICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IGhhc09sZFZhbHVlID8gcmVzdWx0W2ZpZWxkTmFtZV0udmFsdWUgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBvbGRSZWxhdGlvbiA9IGhhc09sZFZhbHVlID8gcmVzdWx0W2ZpZWxkTmFtZV0ucmVsYXRpb25UbyA6ICcnXG5cbiAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdSZWxhdGlvbiAhPT0gb2xkUmVsYXRpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25UbzogbmV3UmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHByb21pc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBuZXdSZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3VsdFtmaWVsZE5hbWVdLFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBoYXNOZXdWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGluY29taW5nRGF0YVtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiBpbmNvbWluZ0RhdGFbZmllbGROYW1lXSAhPT0gbnVsbFxuICAgICAgICAgICAgICBjb25zdCBoYXNPbGRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiByZXN1bHRbZmllbGROYW1lXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS52YWx1ZSA6ICcnXG5cbiAgICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBoYXNPbGRWYWx1ZSA/IHJlc3VsdFtmaWVsZE5hbWVdLnZhbHVlIDogJydcblxuICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSh7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG5ld1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc29yOiBmaWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogU3RyaW5nKGZpZWxkLnJlbGF0aW9uVG8pLFxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICAgIHJlZjogcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV1cbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImFwaVJvdXRlIiwiZGVwdGgiLCJmaWVsZFNjaGVtYSIsImluY29taW5nRGF0YSIsInBvcHVsYXRpb25Qcm9taXNlcyIsInJlc3VsdCIsInNlcnZlclVSTCIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJmaWVsZE5hbWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwicm93IiwiaSIsImhhc0V4aXN0aW5nUm93IiwibmV3Um93IiwiZmllbGRzIiwibWF0Y2hlZEJsb2NrIiwiYmxvY2tzIiwiYmxvY2tUeXBlIiwic2x1ZyIsImhhc01hbnkiLCJleGlzdGluZ1ZhbHVlIiwic2xpY2UiLCJsZW5ndGgiLCJyZWxhdGlvbiIsInJlbGF0aW9uVG8iLCJleGlzdGluZ0lEIiwidmFsdWUiLCJpZCIsInB1c2giLCJwcm9taXNlIiwiYWNjZXNzb3IiLCJjb2xsZWN0aW9uIiwicmVmIiwiU3RyaW5nIiwiaGFzTmV3VmFsdWUiLCJoYXNPbGRWYWx1ZSIsIm5ld1ZhbHVlIiwibmV3UmVsYXRpb24iLCJvbGRWYWx1ZSIsIm9sZFJlbGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQVlhQTs7O2VBQUFBOzs7eUJBWlc7QUFZakIsTUFBTUEsaUJBQWlCLENBQUksRUFDaENDLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxNQUFNLEVBQ05DLFNBQVMsRUFDRDtJQUNSSixZQUFZSyxPQUFPLENBQUMsQ0FBQ0M7UUFDbkIsSUFBSSxVQUFVQSxTQUFTLE9BQU9BLE1BQU1DLElBQUksS0FBSyxVQUFVO1lBQ3JELGtCQUFrQjtZQUNsQixNQUFNQyxZQUFZRixNQUFNQyxJQUFJO1lBRTVCLE9BQVFELE1BQU1HLElBQUk7Z0JBQ2hCLEtBQUs7b0JBQ0gsSUFBSUMsTUFBTUMsT0FBTyxDQUFDVixZQUFZLENBQUNPLFVBQVUsR0FBRzt3QkFDMUNMLE1BQU0sQ0FBQ0ssVUFBVSxHQUFHUCxZQUFZLENBQUNPLFVBQVUsQ0FBQ0ksR0FBRyxDQUFDLENBQUNDLEtBQUtDOzRCQUNwRCxNQUFNQyxpQkFDSkwsTUFBTUMsT0FBTyxDQUFDUixNQUFNLENBQUNLLFVBQVUsS0FDL0IsT0FBT0wsTUFBTSxDQUFDSyxVQUFVLENBQUNNLEVBQUUsS0FBSyxZQUNoQ1gsTUFBTSxDQUFDSyxVQUFVLENBQUNNLEVBQUUsS0FBSzs0QkFFM0IsTUFBTUUsU0FBU0QsaUJBQWlCO2dDQUFFLEdBQUdaLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDTSxFQUFFOzRCQUFDLElBQUksQ0FBQzs0QkFFL0RqQixlQUFlO2dDQUNiQztnQ0FDQUM7Z0NBQ0FDLGFBQWFNLE1BQU1XLE1BQU07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