payload 2.2.2 → 2.3.0
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.
- package/components/hooks.d.ts +1 -0
- package/components/hooks.js +5 -1
- package/dist/admin/Root.d.ts.map +1 -1
- package/dist/admin/Root.js +3 -2
- package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DuplicateDocument/index.js +22 -11
- package/dist/admin/components/forms/field-types/Relationship/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Relationship/index.js +12 -4
- package/dist/admin/components/forms/field-types/RichText/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/RichText/index.js +5 -4
- package/dist/admin/components/forms/field-types/RichText/types.d.ts +5 -0
- package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Tabs/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Tabs/index.js +3 -3
- package/dist/admin/components/utilities/DocumentEvents/index.d.ts +10 -0
- package/dist/admin/components/utilities/DocumentEvents/index.d.ts.map +1 -0
- package/dist/admin/components/utilities/DocumentEvents/index.js +74 -0
- package/dist/admin/components/utilities/DocumentEvents/types.d.ts +10 -0
- package/dist/admin/components/utilities/DocumentEvents/types.d.ts.map +1 -0
- package/dist/admin/components/utilities/DocumentEvents/types.js +6 -0
- package/dist/admin/components/views/Global/index.d.ts.map +1 -1
- package/dist/admin/components/views/Global/index.js +10 -2
- package/dist/admin/components/views/LivePreview/Preview/index.d.ts.map +1 -1
- package/dist/admin/components/views/LivePreview/Preview/index.js +6 -2
- package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
- package/dist/admin/components/views/collections/Edit/Default.js +11 -2
- package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +3 -2
- package/dist/auth/getExtractJWT.d.ts.map +1 -1
- package/dist/auth/getExtractJWT.js +22 -15
- package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
- package/dist/database/migrations/readMigrationFiles.js +9 -4
- package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js +9 -2
- package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js +24 -9
- package/dist/exports/components/hooks.d.ts +1 -0
- package/dist/exports/components/hooks.d.ts.map +1 -1
- package/dist/exports/components/hooks.js +5 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +1 -1
- package/dist/exports/utilities.d.ts +2 -0
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +9 -1
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +7 -2
- package/dist/fields/config/types.d.ts +24 -10
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +3 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +33 -13
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +3 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +5 -3
- package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
- package/dist/graphql/schema/buildObjectType.js +6 -1
- package/dist/translations/en.json +2 -0
- package/dist/translations/index.d.ts +746 -0
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/translations/index.js +5 -1
- package/dist/translations/rs-latin.json +372 -0
- package/dist/translations/rs.json +372 -0
- package/dist/translations/translation-schema.json +8 -0
- package/dist/utilities/fieldSchemaToJSON.js +2 -2
- package/dist/utilities/telemetry/events/adminInit.js +3 -3
- package/package.json +1 -1
- package/types.d.ts +1 -1
- package/types.js +1 -1
- package/utilities.d.ts +2 -0
- package/utilities.js +9 -1
|
@@ -16,7 +16,7 @@ function _interop_require_default(obj) {
|
|
|
16
16
|
default: obj
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
const promise = async ({ collection, context, currentDepth, depth, doc, field, fieldPromises, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc })=>{
|
|
19
|
+
const promise = async ({ collection, context, currentDepth, depth, doc, field, fieldPromises, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
|
|
20
20
|
if ((0, _types.fieldAffectsData)(field) && field.hidden && typeof siblingDoc[field.name] !== 'undefined' && !showHiddenFields) {
|
|
21
21
|
delete siblingDoc[field.name];
|
|
22
22
|
}
|
|
@@ -79,10 +79,14 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
79
79
|
// This is run here AND in the GraphQL Resolver
|
|
80
80
|
if (editor?.populationPromise) {
|
|
81
81
|
const populationPromise = editor.populationPromise({
|
|
82
|
+
context,
|
|
82
83
|
currentDepth,
|
|
83
84
|
depth,
|
|
84
85
|
field,
|
|
86
|
+
findMany,
|
|
87
|
+
flattenLocales,
|
|
85
88
|
overrideAccess,
|
|
89
|
+
populationPromises,
|
|
86
90
|
req,
|
|
87
91
|
showHiddenFields,
|
|
88
92
|
siblingDoc
|
|
@@ -121,7 +125,7 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
121
125
|
}
|
|
122
126
|
if ((0, _types.fieldAffectsData)(field)) {
|
|
123
127
|
// Execute hooks
|
|
124
|
-
if (field.hooks?.afterRead) {
|
|
128
|
+
if (triggerHooks && field.hooks?.afterRead) {
|
|
125
129
|
await field.hooks.afterRead.reduce(async (priorHook, currentHook)=>{
|
|
126
130
|
await priorHook;
|
|
127
131
|
const shouldRunHookOnAllLocales = field.localized && (req.locale === 'all' || !flattenLocales) && typeof siblingDoc[field.name] === 'object';
|
|
@@ -165,7 +169,7 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
165
169
|
}, Promise.resolve());
|
|
166
170
|
}
|
|
167
171
|
// Execute access control
|
|
168
|
-
if (field.access && field.access.read) {
|
|
172
|
+
if (triggerAccessControl && field.access && field.access.read) {
|
|
169
173
|
const result = overrideAccess ? true : await field.access.read({
|
|
170
174
|
id: doc.id,
|
|
171
175
|
data: doc,
|
|
@@ -209,7 +213,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
209
213
|
populationPromises,
|
|
210
214
|
req,
|
|
211
215
|
showHiddenFields,
|
|
212
|
-
siblingDoc: groupDoc
|
|
216
|
+
siblingDoc: groupDoc,
|
|
217
|
+
triggerAccessControl,
|
|
218
|
+
triggerHooks
|
|
213
219
|
});
|
|
214
220
|
break;
|
|
215
221
|
}
|
|
@@ -233,7 +239,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
233
239
|
populationPromises,
|
|
234
240
|
req,
|
|
235
241
|
showHiddenFields,
|
|
236
|
-
siblingDoc: row || {}
|
|
242
|
+
siblingDoc: row || {},
|
|
243
|
+
triggerAccessControl,
|
|
244
|
+
triggerHooks
|
|
237
245
|
});
|
|
238
246
|
});
|
|
239
247
|
} else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {
|
|
@@ -255,7 +263,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
255
263
|
populationPromises,
|
|
256
264
|
req,
|
|
257
265
|
showHiddenFields,
|
|
258
|
-
siblingDoc: row || {}
|
|
266
|
+
siblingDoc: row || {},
|
|
267
|
+
triggerAccessControl,
|
|
268
|
+
triggerHooks
|
|
259
269
|
});
|
|
260
270
|
});
|
|
261
271
|
}
|
|
@@ -287,7 +297,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
287
297
|
populationPromises,
|
|
288
298
|
req,
|
|
289
299
|
showHiddenFields,
|
|
290
|
-
siblingDoc: row || {}
|
|
300
|
+
siblingDoc: row || {},
|
|
301
|
+
triggerAccessControl,
|
|
302
|
+
triggerHooks
|
|
291
303
|
});
|
|
292
304
|
}
|
|
293
305
|
});
|
|
@@ -312,7 +324,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
312
324
|
populationPromises,
|
|
313
325
|
req,
|
|
314
326
|
showHiddenFields,
|
|
315
|
-
siblingDoc: row || {}
|
|
327
|
+
siblingDoc: row || {},
|
|
328
|
+
triggerAccessControl,
|
|
329
|
+
triggerHooks
|
|
316
330
|
});
|
|
317
331
|
}
|
|
318
332
|
});
|
|
@@ -341,7 +355,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
341
355
|
populationPromises,
|
|
342
356
|
req,
|
|
343
357
|
showHiddenFields,
|
|
344
|
-
siblingDoc
|
|
358
|
+
siblingDoc,
|
|
359
|
+
triggerAccessControl,
|
|
360
|
+
triggerHooks
|
|
345
361
|
});
|
|
346
362
|
break;
|
|
347
363
|
}
|
|
@@ -352,7 +368,7 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
352
368
|
tabDoc = siblingDoc[field.name];
|
|
353
369
|
if (typeof siblingDoc[field.name] !== 'object') tabDoc = {};
|
|
354
370
|
}
|
|
355
|
-
|
|
371
|
+
(0, _traverseFields.traverseFields)({
|
|
356
372
|
collection,
|
|
357
373
|
context,
|
|
358
374
|
currentDepth,
|
|
@@ -367,7 +383,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
367
383
|
populationPromises,
|
|
368
384
|
req,
|
|
369
385
|
showHiddenFields,
|
|
370
|
-
siblingDoc: tabDoc
|
|
386
|
+
siblingDoc: tabDoc,
|
|
387
|
+
triggerAccessControl,
|
|
388
|
+
triggerHooks
|
|
371
389
|
});
|
|
372
390
|
break;
|
|
373
391
|
}
|
|
@@ -391,7 +409,9 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
391
409
|
populationPromises,
|
|
392
410
|
req,
|
|
393
411
|
showHiddenFields,
|
|
394
|
-
siblingDoc
|
|
412
|
+
siblingDoc,
|
|
413
|
+
triggerAccessControl,
|
|
414
|
+
triggerHooks
|
|
395
415
|
});
|
|
396
416
|
break;
|
|
397
417
|
}
|
|
@@ -402,4 +422,4 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
|
|
|
402
422
|
}
|
|
403
423
|
};
|
|
404
424
|
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMpXG4vLyAtIEV4ZWN1dGUgZmllbGQgaG9va3Ncbi8vIC0gRXhlY3V0ZSByZWFkIGFjY2VzcyBjb250cm9sXG4vLyAtIFBvcHVsYXRlIHJlbGF0aW9uc2hpcHNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBjdXJyZW50RGVwdGgsXG4gIGRlcHRoLFxuICBkb2MsXG4gIGZpZWxkLFxuICBmaWVsZFByb21pc2VzLFxuICBmaW5kTWFueSxcbiAgZmxhdHRlbkxvY2FsZXMsXG4gIGdsb2JhbCxcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgcmVxLFxuICBzaG93SGlkZGVuRmllbGRzLFxuICBzaWJsaW5nRG9jLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5hZnRlclJlYWQpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmFmdGVyUmVhZC5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3Qgc2hvdWxkUnVuSG9va09uQWxsTG9jYWxlcyA9XG4gICAgICAgICAgZmllbGQubG9jYWxpemVkICYmXG4gICAgICAgICAgKHJlcS5sb2NhbGUgPT09ICdhbGwnIHx8ICFmbGF0dGVuTG9jYWxlcykgJiZcbiAgICAgICAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9PT0gJ29iamVjdCdcblxuICAgICAgICBpZiAoc2hvdWxkUnVuSG9va09uQWxsTG9jYWxlcykge1xuICAgICAgICAgIGNvbnN0IGhvb2tQcm9taXNlcyA9IE9iamVjdC5lbnRyaWVzKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pLm1hcCgoW2xvY2FsZSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAncmVhZCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxEb2M6IGRvYyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHNpYmxpbmdEb2MsXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdW2xvY2FsZV0gPSBob29rZWRWYWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGhvb2tQcm9taXNlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBob29rZWRWYWx1ZSA9IGF3YWl0IGN1cnJlbnRIb29rKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgZGF0YTogZG9jLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgb3JpZ2luYWxEb2M6IGRvYyxcbiAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgdmFsdWU6IHNpYmxpbmdEb2NbZmllbGQubmFtZV0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgYWNjZXNzIGNvbnRyb2xcbiAgICBpZiAoZmllbGQuYWNjZXNzICYmIGZpZWxkLmFjY2Vzcy5yZWFkKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdmVycmlkZUFjY2Vzc1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBhd2FpdCBmaWVsZC5hY2Nlc3MucmVhZCh7XG4gICAgICAgICAgICBpZDogZG9jLmlkIGFzIG51bWJlciB8IHN0cmluZyxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgIH0pXG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGRlbGV0ZSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICBwb3B1bGF0aW9uUHJvbWlzZXMucHVzaChcbiAgICAgICAgcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGxldCBncm91cERvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIGdyb3VwRG9jID0ge31cblxuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlICYmIHR5cGVvZiByb3dzID09PSAnb2JqZWN0JyAmJiByb3dzICE9PSBudWxsKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMocm93cykuZm9yRWFjaCgobG9jYWxlUm93cykgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZVJvd3MpKSB7XG4gICAgICAgICAgICBsb2NhbGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IFtdXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2tUeXBlKSA9PiBibG9ja1R5cGUuc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUgJiYgdHlwZW9mIHJvd3MgPT09ICdvYmplY3QnICYmIHJvd3MgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhyb3dzKS5mb3JFYWNoKChsb2NhbGVSb3dzKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlUm93cykpIHtcbiAgICAgICAgICAgIGxvY2FsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gW11cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiRG9jID0gc2libGluZ0RvY1xuICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgIHRhYkRvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JykgdGFiRG9jID0ge31cbiAgICAgIH1cblxuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiY3VycmVudERlcHRoIiwiZGVwdGgiLCJkb2MiLCJmaWVsZCIsImZpZWxkUHJvbWlzZXMiLCJmaW5kTWFueSIsImZsYXR0ZW5Mb2NhbGVzIiwiZ2xvYmFsIiwib3ZlcnJpZGVBY2Nlc3MiLCJwb3B1bGF0aW9uUHJvbWlzZXMiLCJyZXEiLCJzaG93SGlkZGVuRmllbGRzIiwic2libGluZ0RvYyIsImZpZWxkQWZmZWN0c0RhdGEiLCJoaWRkZW4iLCJuYW1lIiwic2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSIsImxvY2FsaXplZCIsImxvY2FsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJ2YWx1ZSIsImZhbGxiYWNrTG9jYWxlIiwiZmFsbGJhY2siLCJob2lzdGVkVmFsdWUiLCJmYWxsYmFja1ZhbHVlIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJ0eXBlIiwidGFicyIsImZvckVhY2giLCJ0YWIiLCJ0YWJIYXNOYW1lIiwiZWRpdG9yIiwicG9wdWxhdGlvblByb21pc2UiLCJwdXNoIiwiYWZ0ZXJSZWFkUHJvbWlzZSIsImluY29taW5nRWRpdG9yU3RhdGUiLCJwb2ludERvYyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaG9va3MiLCJhZnRlclJlYWQiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsInNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMiLCJob29rUHJvbWlzZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiaG9va2VkVmFsdWUiLCJkYXRhIiwib3BlcmF0aW9uIiwib3JpZ2luYWxEb2MiLCJzaWJsaW5nRGF0YSIsIlByb21pc2UiLCJhbGwiLCJyZXNvbHZlIiwiYWNjZXNzIiwicmVhZCIsInJlc3VsdCIsImlkIiwicmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UiLCJncm91cERvYyIsInRyYXZlcnNlRmllbGRzIiwiZmllbGRzIiwicm93cyIsInJvdyIsInZhbHVlcyIsImxvY2FsZVJvd3MiLCJibG9jayIsImJsb2NrcyIsImZpbmQiLCJibG9ja1R5cGUiLCJzbHVnIiwidGFiRG9jIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBcUN2QkE7OztlQUFBQTs7O3VCQTlCZ0M7c0ZBQ0g7Z0NBQ1g7Ozs7OztBQTRCeEIsTUFBTUEsVUFBVSxPQUFPLEVBQzVCQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsWUFBWSxFQUNaQyxLQUFLLEVBQ0xDLEdBQUcsRUFDSEMsS0FBSyxFQUNMQyxhQUFhLEVBQ2JDLFFBQVEsRUFDUkMsY0FBYyxFQUNkQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsa0JBQWtCLEVBQ2xCQyxHQUFHLEVBQ0hDLGdCQUFnQixFQUNoQkMsVUFBVSxFQUNMO0lBQ0wsSUFDRUMsSUFBQUEsdUJBQWdCLEVBQUNWLFVBQ2pCQSxNQUFNVyxNQUFNLElBQ1osT0FBT0YsVUFBVSxDQUFDVCxNQUFNWSxJQUFJLENBQUMsS0FBSyxlQUNsQyxDQUFDSixrQkFDRDtRQUNBLE9B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
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMuKVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgcmVhZCBhY2Nlc3MgY29udHJvbFxuLy8gLSBQb3B1bGF0ZSByZWxhdGlvbnNoaXBzXG5cbmV4cG9ydCBjb25zdCBwcm9taXNlID0gYXN5bmMgKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZmllbGRQcm9taXNlcyxcbiAgZmluZE1hbnksXG4gIGZsYXR0ZW5Mb2NhbGVzLFxuICBnbG9iYWwsXG4gIG92ZXJyaWRlQWNjZXNzLFxuICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wgPSB0cnVlLFxuICB0cmlnZ2VySG9va3MgPSB0cnVlLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKHRyaWdnZXJIb29rcyAmJiBmaWVsZC5ob29rcz8uYWZ0ZXJSZWFkKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMgPVxuICAgICAgICAgIGZpZWxkLmxvY2FsaXplZCAmJlxuICAgICAgICAgIChyZXEubG9jYWxlID09PSAnYWxsJyB8fCAhZmxhdHRlbkxvY2FsZXMpICYmXG4gICAgICAgICAgdHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPT09ICdvYmplY3QnXG5cbiAgICAgICAgaWYgKHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMpIHtcbiAgICAgICAgICBjb25zdCBob29rUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKS5tYXAoKFtsb2NhbGUsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChob29rUHJvbWlzZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdyZWFkJyxcbiAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGFjY2VzcyBjb250cm9sXG4gICAgaWYgKHRyaWdnZXJBY2Nlc3NDb250cm9sICYmIGZpZWxkLmFjY2VzcyAmJiBmaWVsZC5hY2Nlc3MucmVhZCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVBY2Nlc3NcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogYXdhaXQgZmllbGQuYWNjZXNzLnJlYWQoe1xuICAgICAgICAgICAgaWQ6IGRvYy5pZCBhcyBudW1iZXIgfCBzdHJpbmcsXG4gICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgIHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBsZXQgZ3JvdXBEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBncm91cERvYyA9IHt9XG5cbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlICYmIHR5cGVvZiByb3dzID09PSAnb2JqZWN0JyAmJiByb3dzICE9PSBudWxsKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMocm93cykuZm9yRWFjaCgobG9jYWxlUm93cykgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZVJvd3MpKSB7XG4gICAgICAgICAgICBsb2NhbGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBbXVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlICYmIHR5cGVvZiByb3dzID09PSAnb2JqZWN0JyAmJiByb3dzICE9PSBudWxsKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMocm93cykuZm9yRWFjaCgobG9jYWxlUm93cykgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZVJvd3MpKSB7XG4gICAgICAgICAgICBsb2NhbGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gW11cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiRG9jID0gc2libGluZ0RvY1xuICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgIHRhYkRvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JykgdGFiRG9jID0ge31cbiAgICAgIH1cblxuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiY3VycmVudERlcHRoIiwiZGVwdGgiLCJkb2MiLCJmaWVsZCIsImZpZWxkUHJvbWlzZXMiLCJmaW5kTWFueSIsImZsYXR0ZW5Mb2NhbGVzIiwiZ2xvYmFsIiwib3ZlcnJpZGVBY2Nlc3MiLCJwb3B1bGF0aW9uUHJvbWlzZXMiLCJyZXEiLCJzaG93SGlkZGVuRmllbGRzIiwic2libGluZ0RvYyIsInRyaWdnZXJBY2Nlc3NDb250cm9sIiwidHJpZ2dlckhvb2tzIiwiZmllbGRBZmZlY3RzRGF0YSIsImhpZGRlbiIsIm5hbWUiLCJzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlIiwibG9jYWxpemVkIiwibG9jYWxlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsInZhbHVlIiwiZmFsbGJhY2tMb2NhbGUiLCJmYWxsYmFjayIsImhvaXN0ZWRWYWx1ZSIsImZhbGxiYWNrVmFsdWUiLCJpc051bGxPclVuZGVmaW5lZCIsInR5cGUiLCJ0YWJzIiwiZm9yRWFjaCIsInRhYiIsInRhYkhhc05hbWUiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsInB1c2giLCJhZnRlclJlYWRQcm9taXNlIiwiaW5jb21pbmdFZGl0b3JTdGF0ZSIsInBvaW50RG9jIiwiQXJyYXkiLCJpc0FycmF5IiwiY29vcmRpbmF0ZXMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJob29rcyIsImFmdGVyUmVhZCIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwic2hvdWxkUnVuSG9va09uQWxsTG9jYWxlcyIsImhvb2tQcm9taXNlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJob29rZWRWYWx1ZSIsImRhdGEiLCJvcGVyYXRpb24iLCJvcmlnaW5hbERvYyIsInNpYmxpbmdEYXRhIiwiUHJvbWlzZSIsImFsbCIsInJlc29sdmUiLCJhY2Nlc3MiLCJyZWFkIiwicmVzdWx0IiwiaWQiLCJyZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSIsImdyb3VwRG9jIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwicm93IiwidmFsdWVzIiwibG9jYWxlUm93cyIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrVHlwZSIsInNsdWciLCJ0YWJEb2MiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF1Q3ZCQTs7O2VBQUFBOzs7dUJBaENnQztzRkFDSDtnQ0FDWDs7Ozs7O0FBOEJ4QixNQUFNQSxVQUFVLE9BQU8sRUFDNUJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLEdBQUcsRUFDSEMsZ0JBQWdCLEVBQ2hCQyxVQUFVLEVBQ1ZDLHVCQUF1QixJQUFJLEVBQzNCQyxlQUFlLElBQUksRUFDZDtJQUNMLElBQ0VDLElBQUFBLHVCQUFnQixFQUFDWixVQUNqQkEsTUFBTWEsTUFBTSxJQUNaLE9BQU9KLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsQ0FBQ04sa0JBQ0Q7UUFDQSxPQUFPQyxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztJQUMvQjtJQUVBLE1BQU1DLDRCQUNKWixrQkFDQVMsSUFBQUEsdUJBQWdCLEVBQUNaLFVBQ2pCLE9BQU9TLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssWUFDbENMLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssUUFDM0JkLE1BQU1nQixTQUFTLElBQ2ZULElBQUlVLE1BQU0sS0FBSyxTQUNmVixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWTtJQUVqQyxJQUFJTCwyQkFBMkI7UUFDN0IsOERBQThEO1FBQzlELGlDQUFpQztRQUNqQyxNQUFNLEVBQUVFLE1BQU0sRUFBRSxHQUFHVjtRQUNuQixNQUFNYyxRQUFRWixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxDQUFDRyxPQUFPO1FBQzVDLE1BQU1LLGlCQUNKZixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWSxJQUMvQmIsSUFBSVcsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksRUFBRUcsWUFDakNoQixJQUFJZSxjQUFjO1FBRXBCLElBQUlFLGVBQWVIO1FBRW5CLElBQUlDLGtCQUFrQkEsbUJBQW1CTCxRQUFRO1lBQy9DLE1BQU1RLGdCQUFnQmhCLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLENBQUNRLGVBQWU7WUFDNUQsTUFBTUksb0JBQW9CLE9BQU9MLFVBQVUsZUFBZUEsVUFBVTtZQUVwRSxJQUFJSSxlQUFlO2dCQUNqQixPQUFRekIsTUFBTTJCLElBQUk7b0JBQ2hCLEtBQUs7b0JBQ0wsS0FBSzt3QkFBWTs0QkFDZixJQUFJTixVQUFVLE1BQU1LLG1CQUFtQjtnQ0FDckNGLGVBQWVDOzRCQUNqQjs0QkFDQTt3QkFDRjtvQkFFQTt3QkFBUzs0QkFDUCxJQUFJQyxtQkFBbUI7Z0NBQ3JCRixlQUFlQzs0QkFDakI7NEJBQ0E7d0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGO1FBRUFoQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHVTtJQUMzQjtJQUVBLGdDQUFnQztJQUNoQyxPQUFReEIsTUFBTTJCLElBQUk7UUFDaEIsS0FBSztZQUFTO2dCQUNaLGlGQUFpRjtnQkFDakYsb0NBQW9DO2dCQUNwQyxJQUFJLE9BQU9sQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxLQUFLLGFBQWE7b0JBQ2pETCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQzVCO2dCQUVBO1lBQ0Y7UUFDQSxLQUFLO1lBQVE7Z0JBQ1hkLE1BQU00QixJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDQztvQkFDbEIsSUFDRUMsSUFBQUEsaUJBQVUsRUFBQ0QsUUFDVixDQUFBLE9BQU9yQixVQUFVLENBQUNxQixJQUFJaEIsSUFBSSxDQUFDLEtBQUssZUFBZUwsVUFBVSxDQUFDcUIsSUFBSWhCLElBQUksQ0FBQyxLQUFLLElBQUcsR0FDNUU7d0JBQ0FMLFVBQVUsQ0FBQ3FCLElBQUloQixJQUFJLENBQUMsR0FBRyxDQUFDO29CQUMxQjtnQkFDRjtnQkFFQTtZQUNGO1FBRUEsS0FBSztZQUFZO2dCQUNmLE1BQU1rQixTQUEwQmhDLE9BQU9nQztnQkFDdkMsK0NBQStDO2dCQUMvQyxJQUFJQSxRQUFRQyxtQkFBbUI7b0JBQzdCLE1BQU1BLG9CQUFvQkQsT0FBT0MsaUJBQWlCLENBQUM7d0JBQ2pEckM7d0JBQ0FDO3dCQUNBQzt3QkFDQUU7d0JBQ0FFO3dCQUNBQzt3QkFDQUU7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO29CQUVBLElBQUl3QixtQkFBbUI7d0JBQ3JCM0IsbUJBQW1CNEIsSUFBSSxDQUFDRDtvQkFDMUI7Z0JBQ0Y7Z0JBRUEsOENBQThDO2dCQUM5QyxJQUFJRCxRQUFRRyxrQkFBa0I7b0JBQzVCLE1BQU1BLG1CQUFtQkgsUUFBUUcsaUJBQWlCO3dCQUNoRG5DO3dCQUNBb0MscUJBQXFCM0IsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUM7d0JBQzNDTDtvQkFDRjtvQkFFQSxJQUFJMEIsa0JBQWtCO3dCQUNwQjdCLG1CQUFtQjRCLElBQUksQ0FBQ0M7b0JBQzFCO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQVM7Z0JBQ1osTUFBTUUsV0FBVzVCLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO2dCQUN2QyxJQUFJd0IsTUFBTUMsT0FBTyxDQUFDRixVQUFVRyxnQkFBZ0JILFNBQVNHLFdBQVcsQ0FBQ0MsTUFBTSxLQUFLLEdBQUc7b0JBQzdFaEMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsR0FBR3VCLFNBQVNHLFdBQVc7Z0JBQy9DLE9BQU87b0JBQ0wvQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHNEI7Z0JBQzNCO2dCQUVBO1lBQ0Y7UUFFQTtZQUFTO2dCQUNQO1lBQ0Y7SUFDRjtJQUVBLElBQUk5QixJQUFBQSx1QkFBZ0IsRUFBQ1osUUFBUTtRQUMzQixnQkFBZ0I7UUFDaEIsSUFBSVcsZ0JBQWdCWCxNQUFNMkMsS0FBSyxFQUFFQyxXQUFXO1lBQzFDLE1BQU01QyxNQUFNMkMsS0FBSyxDQUFDQyxTQUFTLENBQUNDLE1BQU0sQ0FBQyxPQUFPQyxXQUFXQztnQkFDbkQsTUFBTUQ7Z0JBRU4sTUFBTUUsNEJBQ0poRCxNQUFNZ0IsU0FBUyxJQUNkVCxDQUFBQSxJQUFJVSxNQUFNLEtBQUssU0FBUyxDQUFDZCxjQUFhLEtBQ3ZDLE9BQU9NLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUs7Z0JBRXBDLElBQUlrQywyQkFBMkI7b0JBQzdCLE1BQU1DLGVBQWVDLE9BQU9DLE9BQU8sQ0FBQzFDLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEVBQUVzQyxHQUFHLENBQUMsQ0FBQyxDQUFDbkMsUUFBUUksTUFBTSxHQUM5RSxBQUFDLENBQUE7NEJBQ0MsTUFBTWdDLGNBQWMsTUFBTU4sWUFBWTtnQ0FDcENwRDtnQ0FDQUM7Z0NBQ0EwRCxNQUFNdkQ7Z0NBQ05DO2dDQUNBSTtnQ0FDQW1ELFdBQVc7Z0NBQ1hDLGFBQWF6RDtnQ0FDYlE7Z0NBQ0FrRCxhQUFhaEQ7Z0NBQ2JZOzRCQUNGOzRCQUVBLElBQUlnQyxnQkFBZ0JYLFdBQVc7Z0NBQzdCakMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsQ0FBQ0csT0FBTyxHQUFHb0M7NEJBQ25DO3dCQUNGLENBQUE7b0JBR0YsTUFBTUssUUFBUUMsR0FBRyxDQUFDVjtnQkFDcEIsT0FBTztvQkFDTCxNQUFNSSxjQUFjLE1BQU1OLFlBQVk7d0JBQ3BDcEQ7d0JBQ0FDO3dCQUNBMEQsTUFBTXZEO3dCQUNOQzt3QkFDQUU7d0JBQ0FFO3dCQUNBbUQsV0FBVzt3QkFDWEMsYUFBYXpEO3dCQUNiUTt3QkFDQWtELGFBQWFoRDt3QkFDYlksT0FBT1osVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUM7b0JBQy9CO29CQUVBLElBQUl1QyxnQkFBZ0JYLFdBQVc7d0JBQzdCakMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsR0FBR3VDO29CQUMzQjtnQkFDRjtZQUNGLEdBQUdLLFFBQVFFLE9BQU87UUFDcEI7UUFFQSx5QkFBeUI7UUFDekIsSUFBSWxELHdCQUF3QlYsTUFBTTZELE1BQU0sSUFBSTdELE1BQU02RCxNQUFNLENBQUNDLElBQUksRUFBRTtZQUM3RCxNQUFNQyxTQUFTMUQsaUJBQ1gsT0FDQSxNQUFNTCxNQUFNNkQsTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQ3RCRSxJQUFJakUsSUFBSWlFLEVBQUU7Z0JBQ1ZWLE1BQU12RDtnQkFDTkE7Z0JBQ0FRO2dCQUNBa0QsYUFBYWhEO1lBQ2Y7WUFFSixJQUFJLENBQUNzRCxRQUFRO2dCQUNYLE9BQU90RCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztZQUMvQjtRQUNGO1FBRUEsSUFBSWQsTUFBTTJCLElBQUksS0FBSyxrQkFBa0IzQixNQUFNMkIsSUFBSSxLQUFLLFVBQVU7WUFDNURyQixtQkFBbUI0QixJQUFJLENBQ3JCK0IsSUFBQUEsc0NBQTZCLEVBQUM7Z0JBQzVCcEU7Z0JBQ0FDO2dCQUNBRTtnQkFDQUs7Z0JBQ0FFO2dCQUNBQztnQkFDQUM7WUFDRjtRQUVKO0lBQ0Y7SUFFQSxPQUFRVCxNQUFNMkIsSUFBSTtRQUNoQixLQUFLO1lBQVM7Z0JBQ1osSUFBSXVDLFdBQVd6RCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztnQkFDckMsSUFBSSxPQUFPTCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxLQUFLLFVBQVVvRCxXQUFXLENBQUM7Z0JBRTVEQyxJQUFBQSw4QkFBYyxFQUFDO29CQUNieEU7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBRTtvQkFDQW1FLFFBQVFwRSxNQUFNb0UsTUFBTTtvQkFDcEJsRTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUMsWUFBWXlEO29CQUNaeEQ7b0JBQ0FDO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQVM7Z0JBQ1osTUFBTTBELE9BQU81RCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztnQkFFbkMsSUFBSXdCLE1BQU1DLE9BQU8sQ0FBQzhCLE9BQU87b0JBQ3ZCQSxLQUFLeEMsT0FBTyxDQUFDLENBQUN5Qzt3QkFDWkgsSUFBQUEsOEJBQWMsRUFBQzs0QkFDYnhFOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUU7NEJBQ0FtRSxRQUFRcEUsTUFBTW9FLE1BQU07NEJBQ3BCbEU7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDLFlBQVk2RCxPQUFPLENBQUM7NEJBQ3BCNUQ7NEJBQ0FDO3dCQUNGO29CQUNGO2dCQUNGLE9BQU8sSUFBSSxDQUFDSSw2QkFBNkIsT0FBT3NELFNBQVMsWUFBWUEsU0FBUyxNQUFNO29CQUNsRm5CLE9BQU9xQixNQUFNLENBQUNGLE1BQU14QyxPQUFPLENBQUMsQ0FBQzJDO3dCQUMzQixJQUFJbEMsTUFBTUMsT0FBTyxDQUFDaUMsYUFBYTs0QkFDN0JBLFdBQVczQyxPQUFPLENBQUMsQ0FBQ3lDO2dDQUNsQkgsSUFBQUEsOEJBQWMsRUFBQztvQ0FDYnhFO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQztvQ0FDQUU7b0NBQ0FtRSxRQUFRcEUsTUFBTW9FLE1BQU07b0NBQ3BCbEU7b0NBQ0FDO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQztvQ0FDQUM7b0NBQ0FDLFlBQVk2RCxPQUFPLENBQUM7b0NBQ3BCNUQ7b0NBQ0FDO2dDQUNGOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xGLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDN0I7Z0JBQ0E7WUFDRjtRQUVBLEtBQUs7WUFBVTtnQkFDYixNQUFNdUQsT0FBTzVELFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO2dCQUVuQyxJQUFJd0IsTUFBTUMsT0FBTyxDQUFDOEIsT0FBTztvQkFDdkJBLEtBQUt4QyxPQUFPLENBQUMsQ0FBQ3lDO3dCQUNaLE1BQU1HLFFBQVF6RSxNQUFNMEUsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsWUFBY0EsVUFBVUMsSUFBSSxLQUFLUCxJQUFJTSxTQUFTO3dCQUUvRSxJQUFJSCxPQUFPOzRCQUNUTixJQUFBQSw4QkFBYyxFQUFDO2dDQUNieEU7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBRTtnQ0FDQW1FLFFBQVFLLE1BQU1MLE1BQU07Z0NBQ3BCbEU7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDLFlBQVk2RCxPQUFPLENBQUM7Z0NBQ3BCNUQ7Z0NBQ0FDOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLE9BQU8sSUFBSSxDQUFDSSw2QkFBNkIsT0FBT3NELFNBQVMsWUFBWUEsU0FBUyxNQUFNO29CQUNsRm5CLE9BQU9xQixNQUFNLENBQUNGLE1BQU14QyxPQUFPLENBQUMsQ0FBQzJDO3dCQUMzQixJQUFJbEMsTUFBTUMsT0FBTyxDQUFDaUMsYUFBYTs0QkFDN0JBLFdBQVczQyxPQUFPLENBQUMsQ0FBQ3lDO2dDQUNsQixNQUFNRyxRQUFRekUsTUFBTTBFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFlBQWNBLFVBQVVDLElBQUksS0FBS1AsSUFBSU0sU0FBUztnQ0FFL0UsSUFBSUgsT0FBTztvQ0FDVE4sSUFBQUEsOEJBQWMsRUFBQzt3Q0FDYnhFO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQzt3Q0FDQUU7d0NBQ0FtRSxRQUFRSyxNQUFNTCxNQUFNO3dDQUNwQmxFO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQyxZQUFZNkQsT0FBTyxDQUFDO3dDQUNwQjVEO3dDQUNBQztvQ0FDRjtnQ0FDRjs0QkFDRjt3QkFDRjtvQkFDRjtnQkFDRixPQUFPO29CQUNMRixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1FBQ0wsS0FBSztZQUFlO2dCQUNsQnFELElBQUFBLDhCQUFjLEVBQUM7b0JBQ2J4RTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBbUUsUUFBUXBFLE1BQU1vRSxNQUFNO29CQUNwQmxFO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQU87Z0JBQ1YsSUFBSW1FLFNBQVNyRTtnQkFDYixJQUFJc0IsSUFBQUEsaUJBQVUsRUFBQy9CLFFBQVE7b0JBQ3JCOEUsU0FBU3JFLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO29CQUMvQixJQUFJLE9BQU9MLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssVUFBVWdFLFNBQVMsQ0FBQztnQkFDNUQ7Z0JBRUFYLElBQUFBLDhCQUFjLEVBQUM7b0JBQ2J4RTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBbUUsUUFBUXBFLE1BQU1vRSxNQUFNO29CQUNwQmxFO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQyxZQUFZcUU7b0JBQ1pwRTtvQkFDQUM7Z0JBQ0Y7Z0JBRUE7WUFDRjtRQUVBLEtBQUs7WUFBUTtnQkFDWHdELElBQUFBLDhCQUFjLEVBQUM7b0JBQ2J4RTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBbUUsUUFBUXBFLE1BQU00QixJQUFJLENBQUN3QixHQUFHLENBQUMsQ0FBQ3RCLE1BQVMsQ0FBQTs0QkFBRSxHQUFHQSxHQUFHOzRCQUFFSCxNQUFNO3dCQUFNLENBQUE7b0JBQ3ZEekI7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7Z0JBQ0Y7Z0JBQ0E7WUFDRjtRQUVBO1lBQVM7Z0JBQ1A7WUFDRjtJQUNGO0FBQ0YifQ==
|
|
@@ -18,7 +18,9 @@ type Args = {
|
|
|
18
18
|
req: PayloadRequest;
|
|
19
19
|
showHiddenFields: boolean;
|
|
20
20
|
siblingDoc: Record<string, unknown>;
|
|
21
|
+
triggerAccessControl?: boolean;
|
|
22
|
+
triggerHooks?: boolean;
|
|
21
23
|
};
|
|
22
|
-
export declare const traverseFields: ({ collection, context, currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc, }: Args) => void;
|
|
24
|
+
export declare const traverseFields: ({ collection, context, currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc, triggerAccessControl, triggerHooks, }: Args) => void;
|
|
23
25
|
export {};
|
|
24
26
|
//# sourceMappingURL=traverseFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI3D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI3D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,2NAkBxB,IAAI,KAAG,IAwBT,CAAA"}
|
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "traverseFields", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _promise = require("./promise");
|
|
12
|
-
const traverseFields = ({ collection, context, currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc })=>{
|
|
12
|
+
const traverseFields = ({ collection, context, currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, global, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
|
|
13
13
|
fields.forEach((field)=>{
|
|
14
14
|
fieldPromises.push((0, _promise.promise)({
|
|
15
15
|
collection,
|
|
@@ -26,9 +26,11 @@ const traverseFields = ({ collection, context, currentDepth, depth, doc, fieldPr
|
|
|
26
26
|
populationPromises,
|
|
27
27
|
req,
|
|
28
28
|
showHiddenFields,
|
|
29
|
-
siblingDoc
|
|
29
|
+
siblingDoc,
|
|
30
|
+
triggerAccessControl,
|
|
31
|
+
triggerHooks
|
|
30
32
|
}));
|
|
31
33
|
});
|
|
32
34
|
};
|
|
33
35
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3RyYXZlcnNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBwcm9taXNlIH0gZnJvbSAnLi9wcm9taXNlJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGN1cnJlbnREZXB0aDogbnVtYmVyXG4gIGRlcHRoOiBudW1iZXJcbiAgZG9jOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBmaWVsZFByb21pc2VzOiBQcm9taXNlPHZvaWQ+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3RyYXZlcnNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBwcm9taXNlIH0gZnJvbSAnLi9wcm9taXNlJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGN1cnJlbnREZXB0aDogbnVtYmVyXG4gIGRlcHRoOiBudW1iZXJcbiAgZG9jOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBmaWVsZFByb21pc2VzOiBQcm9taXNlPHZvaWQ+W11cbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZFByb21pc2VzLFxuICBmaWVsZHMsXG4gIGZpbmRNYW55LFxuICBmbGF0dGVuTG9jYWxlcyxcbiAgZ2xvYmFsLFxuICBvdmVycmlkZUFjY2VzcyxcbiAgcG9wdWxhdGlvblByb21pc2VzLFxuICByZXEsXG4gIHNob3dIaWRkZW5GaWVsZHMsXG4gIHNpYmxpbmdEb2MsXG4gIHRyaWdnZXJBY2Nlc3NDb250cm9sID0gdHJ1ZSxcbiAgdHJpZ2dlckhvb2tzID0gdHJ1ZSxcbn06IEFyZ3MpOiB2b2lkID0+IHtcbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgZmllbGRQcm9taXNlcy5wdXNoKFxuICAgICAgcHJvbWlzZSh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KSxcbiAgICApXG4gIH0pXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImN1cnJlbnREZXB0aCIsImRlcHRoIiwiZG9jIiwiZmllbGRQcm9taXNlcyIsImZpZWxkcyIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJnbG9iYWwiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInJlcSIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwidHJpZ2dlckFjY2Vzc0NvbnRyb2wiLCJ0cmlnZ2VySG9va3MiLCJmb3JFYWNoIiwiZmllbGQiLCJwdXNoIiwicHJvbWlzZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEyQmFBOzs7ZUFBQUE7Ozt5QkF0Qlc7QUFzQmpCLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsWUFBWSxFQUNaQyxLQUFLLEVBQ0xDLEdBQUcsRUFDSEMsYUFBYSxFQUNiQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsY0FBYyxFQUNkQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsa0JBQWtCLEVBQ2xCQyxHQUFHLEVBQ0hDLGdCQUFnQixFQUNoQkMsVUFBVSxFQUNWQyx1QkFBdUIsSUFBSSxFQUMzQkMsZUFBZSxJQUFJLEVBQ2Q7SUFDTFYsT0FBT1csT0FBTyxDQUFDLENBQUNDO1FBQ2RiLGNBQWNjLElBQUksQ0FDaEJDLElBQUFBLGdCQUFPLEVBQUM7WUFDTnBCO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FjO1lBQ0FiO1lBQ0FFO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1FBQ0Y7SUFFSjtBQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema/buildObjectType.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAE9D,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAQV,KAAK,EAcN,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAuB5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,IAAI,EACJ,UAAe,EACf,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,GACR,EAAE,IAAI,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema/buildObjectType.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAE9D,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAQV,KAAK,EAcN,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAuB5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,IAAI,EACJ,UAAe,EACf,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,GACR,EAAE,IAAI,GAAG,iBAAiB,CAkhB1B;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -322,8 +322,13 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
322
322
|
// Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.
|
|
323
323
|
if (editor?.populationPromise) {
|
|
324
324
|
await editor?.populationPromise({
|
|
325
|
+
context,
|
|
325
326
|
depth,
|
|
326
327
|
field,
|
|
328
|
+
findMany: false,
|
|
329
|
+
flattenLocales: false,
|
|
330
|
+
overrideAccess: false,
|
|
331
|
+
populationPromises: [],
|
|
327
332
|
req: context.req,
|
|
328
333
|
showHiddenFields: false,
|
|
329
334
|
siblingDoc: parent
|
|
@@ -473,4 +478,4 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
473
478
|
}
|
|
474
479
|
const _default = buildObjectType;
|
|
475
480
|
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuYXJyYXlUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJyYXlUeXBlID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgYXJyYXlUeXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgYmxvY2tzOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEJsb2NrRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrVHlwZXMgPSBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICBpZiAoIXBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSkge1xuICAgICAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICAgICAgYmxvY2s/LmludGVyZmFjZU5hbWUgfHwgYmxvY2s/LmdyYXBoUUw/LnNpbmd1bGFyTmFtZSB8fCB0b1dvcmRzKGJsb2NrLnNsdWcsIHRydWUpXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgLi4uYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2NrVHlwZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXVxuICAgICAgfSlcblxuICAgICAgY29uc3QgZnVsbE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IEdyYXBoUUxMaXN0KFxuICAgICAgICBuZXcgR3JhcGhRTE5vbk51bGwoXG4gICAgICAgICAgbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgICAgICAgICByZXNvbHZlVHlwZTogKGRhdGEpID0+IHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tkYXRhLmJsb2NrVHlwZV0ubmFtZSxcbiAgICAgICAgICAgIHR5cGVzOiBibG9ja1R5cGVzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNoZWNrYm94OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENoZWNrYm94RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxCb29sZWFuLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvZGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29kZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvbGxhcHNpYmxlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENvbGxhcHNpYmxlRmllbGQpID0+XG4gICAgICBmaWVsZC5maWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQob2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzXG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICBkYXRlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IERhdGVGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgRGF0ZVRpbWVSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBlbWFpbDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBFbWFpbEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBFbWFpbEFkZHJlc3NSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBncm91cDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBHcm91cEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvclxuXG4gICAgICAgICAgLy8gUmljaFRleHQgZmllbGRzIGhhdmUgdGhlaXIgb3duIGRlcHRoIGFyZ3VtZW50IGluIEdyYXBoUUwuXG4gICAgICAgICAgLy8gVGhpcyBpcyB3aHkgdGhlIHBvcHVsYXRpb25Qcm9taXNlICh3aGljaCBwb3B1bGF0ZXMgcmljaHRleHQgZmllbGRzIGxpa2UgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwcylcbiAgICAgICAgICAvLyBpcyBydW4gaGVyZSBhZ2Fpbiwgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguXG4gICAgICAgICAgLy8gSW4gdGhlIGdyYXBocWwgZmluZC50cyByZXNvbHZlciwgdGhlIGRlcHRoIGlzIHRoZW4gaGFyZC1jb2RlZCB0byAwLlxuICAgICAgICAgIC8vIEVmZmVjdGl2ZWx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIHBvcHVsYXRpb25Qcm9taXNlIGZvciBHcmFwaFFMIGlzIG9ubHkgcnVuIGhlcmUsIGFuZCBub3QgaW4gdGhlIGZpbmQudHMgcmVzb2x2ZXIgLyBub3JtYWwgcG9wdWxhdGlvbiBwcm9taXNlLlxuICAgICAgICAgIGlmIChlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKSB7XG4gICAgICAgICAgICBhd2FpdCBlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICAgICAgcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkczogdGFiLmZpZWxkcyxcbiAgICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRhYlNjaGVtYSxcbiAgICAgICAgICAgIFt0YWIubmFtZV06IHsgdHlwZTogcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udGFiU2NoZW1hLFxuICAgICAgICAgIC4uLnRhYi5maWVsZHMucmVkdWNlKChzdWJGaWVsZFNjaGVtYSwgc3ViRmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQoc3ViRmllbGRTY2hlbWEsIHN1YkZpZWxkKVxuICAgICAgICAgICAgcmV0dXJuIHN1YkZpZWxkU2NoZW1hXG4gICAgICAgICAgfSwgdGFiU2NoZW1hKSxcbiAgICAgICAgfVxuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgdGV4dDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgdGV4dGFyZWE6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGV4dGFyZWFGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTFN0cmluZywgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICB1cGxvYWQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVXBsb2FkRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVsYXRpb25UbyB9ID0gZmllbGRcblxuICAgICAgY29uc3QgdXBsb2FkTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIHRvV29yZHMoZmllbGQubmFtZSwgdHJ1ZSkpXG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICBjb25zdCB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uZ3JhcGhRTC50eXBlIHx8IG5ld2x5Q3JlYXRlZEJsb2NrVHlwZSxcbiAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgIClcblxuICAgICAgY29uc3QgdXBsb2FkQXJncyA9IHt9IGFzIExvY2FsZUlucHV0VHlwZVxuXG4gICAgICBpZiAocGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIHVwbG9hZEFyZ3MubG9jYWxlID0ge1xuICAgICAgICAgIHR5cGU6IHBheWxvYWQudHlwZXMubG9jYWxlSW5wdXRUeXBlLFxuICAgICAgICB9XG5cbiAgICAgICAgdXBsb2FkQXJncy5mYWxsYmFja0xvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyA9IGZpZWxkLnJlbGF0aW9uVG9cblxuICAgICAgY29uc3QgdXBsb2FkID0ge1xuICAgICAgICBhcmdzOiB1cGxvYWRBcmdzLFxuICAgICAgICBleHRlbnNpb25zOiB7IGNvbXBsZXhpdHk6IDIwIH0sXG4gICAgICAgIGFzeW5jIHJlc29sdmUocGFyZW50LCBhcmdzLCBjb250ZXh0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJlbnRbZmllbGQubmFtZV1cbiAgICAgICAgICBjb25zdCBsb2NhbGUgPSBhcmdzLmxvY2FsZSB8fCBjb250ZXh0LnJlcS5sb2NhbGVcbiAgICAgICAgICBjb25zdCBmYWxsYmFja0xvY2FsZSA9IGFyZ3MuZmFsbGJhY2tMb2NhbGUgfHwgY29udGV4dC5yZXEuZmFsbGJhY2tMb2NhbGVcbiAgICAgICAgICBjb25zdCBpZCA9IHZhbHVlXG5cbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWREb2N1bWVudCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcS50cmFuc2FjdGlvbklELFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudCB8fCBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2hlcmVGaWVsZHMgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgdXBsb2FkLmFyZ3Mud2hlcmUgPSB7XG4gICAgICAgIHR5cGU6IGJ1aWxkV2hlcmVJbnB1dFR5cGUoe1xuICAgICAgICAgIG5hbWU6IHVwbG9hZE5hbWUsXG4gICAgICAgICAgZmllbGRzOiB3aGVyZUZpZWxkcyxcbiAgICAgICAgICBwYXJlbnROYW1lOiB1cGxvYWROYW1lLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0pLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHVwbG9hZCxcbiAgICAgIH1cbiAgICB9LFxuICB9XG5cbiAgY29uc3Qgb2JqZWN0U2NoZW1hID0ge1xuICAgIG5hbWUsXG4gICAgZmllbGRzOiAoKSA9PlxuICAgICAgZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBmaWVsZFRvU2NoZW1hTWFwW2ZpZWxkLnR5cGVdXG5cbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFNjaGVtYSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgICAgLi4uZmllbGRTY2hlbWEob2JqZWN0VHlwZUNvbmZpZywgZmllbGQpLFxuICAgICAgICB9XG4gICAgICB9LCBiYXNlRmllbGRzKSxcbiAgfVxuXG4gIGNvbnN0IG5ld2x5Q3JlYXRlZEJsb2NrVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZShvYmplY3RTY2hlbWEpXG5cbiAgcmV0dXJuIG5ld2x5Q3JlYXRlZEJsb2NrVHlwZVxufVxuXG5leHBvcnQgZGVmYXVsdCBidWlsZE9iamVjdFR5cGVcbiJdLCJuYW1lcyI6WyJidWlsZE9iamVjdFR5cGUiLCJuYW1lIiwiYmFzZUZpZWxkcyIsImZpZWxkcyIsImZvcmNlTnVsbGFibGUiLCJwYXJlbnROYW1lIiwicGF5bG9hZCIsImZpZWxkVG9TY2hlbWFNYXAiLCJhcnJheSIsIm9iamVjdFR5cGVDb25maWciLCJmaWVsZCIsImludGVyZmFjZU5hbWUiLCJjb21iaW5lUGFyZW50TmFtZSIsInRvV29yZHMiLCJ0eXBlcyIsImFycmF5VHlwZXMiLCJpc0ZpZWxkTnVsbGFibGUiLCJhcnJheVR5cGUiLCJHcmFwaFFMTGlzdCIsIkdyYXBoUUxOb25OdWxsIiwidHlwZSIsIndpdGhOdWxsYWJsZVR5cGUiLCJibG9ja3MiLCJibG9ja1R5cGVzIiwibWFwIiwiYmxvY2siLCJzbHVnIiwiZ3JhcGhRTCIsInNpbmd1bGFyTmFtZSIsImZ1bGxOYW1lIiwiR3JhcGhRTFVuaW9uVHlwZSIsInJlc29sdmVUeXBlIiwiZGF0YSIsImJsb2NrVHlwZSIsImNoZWNrYm94IiwiR3JhcGhRTEJvb2xlYW4iLCJjb2RlIiwiR3JhcGhRTFN0cmluZyIsImNvbGxhcHNpYmxlIiwicmVkdWNlIiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcyIsInN1YkZpZWxkIiwiYWRkU3ViRmllbGQiLCJkYXRlIiwiRGF0ZVRpbWVSZXNvbHZlciIsImVtYWlsIiwiRW1haWxBZGRyZXNzUmVzb2x2ZXIiLCJncm91cCIsImdyb3VwVHlwZXMiLCJqc29uIiwiR3JhcGhRTEpTT04iLCJudW1iZXIiLCJHcmFwaFFMSW50IiwiR3JhcGhRTEZsb2F0IiwiaGFzTWFueSIsInBvaW50IiwicmFkaW8iLCJHcmFwaFFMRW51bVR5cGUiLCJ2YWx1ZXMiLCJmb3JtYXRPcHRpb25zIiwicmVsYXRpb25zaGlwIiwicmVsYXRpb25UbyIsImlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiaGFzTWFueVZhbHVlcyIsInJlbGF0aW9uc2hpcE5hbWUiLCJyZWxhdGlvblRvVHlwZSIsInJlbGF0aW9ucyIsInJlbGF0aW9uIiwiZm9ybWF0TmFtZSIsInZhbHVlIiwiY29sbGVjdGlvbnMiLCJHcmFwaFFMT2JqZWN0VHlwZSIsInJlcSIsImNvbGxlY3Rpb24iLCJuZXdseUNyZWF0ZWRCbG9ja1R5cGUiLCJyZWxhdGlvbnNoaXBBcmdzIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxlIiwibG9jYWxlSW5wdXRUeXBlIiwiZmFsbGJhY2tMb2NhbGUiLCJmYWxsYmFja0xvY2FsZUlucHV0VHlwZSIsImFyZ3MiLCJleHRlbnNpb25zIiwiY29tcGxleGl0eSIsInJlc29sdmUiLCJwYXJlbnQiLCJjb250ZXh0IiwicmVsYXRlZENvbGxlY3Rpb25TbHVnIiwicmVzdWx0cyIsInJlc3VsdFByb21pc2VzIiwiY3JlYXRlUG9wdWxhdGlvblByb21pc2UiLCJyZWxhdGVkRG9jIiwiaSIsImlkIiwiY29sbGVjdGlvblNsdWciLCJyZXN1bHQiLCJwYXlsb2FkRGF0YUxvYWRlciIsImxvYWQiLCJKU09OIiwic3RyaW5naWZ5IiwidHJhbnNhY3Rpb25JRCIsImZvckVhY2giLCJwdXNoIiwiUHJvbWlzZSIsImFsbCIsInJlbGF0ZWREb2N1bWVudCIsInJpY2hUZXh0IiwiZGVwdGgiLCJkZWZhdWx0RGVwdGgiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwicm93Iiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMiLCJzZWxlY3QiLCJ0YWJzIiwidGFiU2NoZW1hIiwidGFiIiwidGFiSGFzTmFtZSIsInRhYlR5cGVzIiwic3ViRmllbGRTY2hlbWEiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiLCJ1cGxvYWROYW1lIiwidXBsb2FkQXJncyIsIndoZXJlRmllbGRzIiwid2hlcmUiLCJidWlsZFdoZXJlSW5wdXRUeXBlIiwib2JqZWN0U2NoZW1hIiwiZmllbGRTY2hlbWEiXSwibWFwcGluZ3MiOiJBQUFBLDBEQUEwRCxHQUMxRCxtQ0FBbUMsR0FDbkMsdUNBQXVDOzs7OytCQW9tQnZDOzs7ZUFBQTs7O3lCQXZsQk87Z0NBQ2dEO2lDQUUzQjt1QkE0QkQ7OEJBQ0g7MEVBQ007bUVBQ1A7c0VBQ0c7NEVBQ007d0VBQ0o7eUVBQ0M7Ozs7OztBQTJCN0IsU0FBU0EsZ0JBQWdCLEVBQ3ZCQyxJQUFJ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
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuYXJyYXlUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJyYXlUeXBlID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgYXJyYXlUeXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgYmxvY2tzOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEJsb2NrRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrVHlwZXMgPSBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICBpZiAoIXBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSkge1xuICAgICAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICAgICAgYmxvY2s/LmludGVyZmFjZU5hbWUgfHwgYmxvY2s/LmdyYXBoUUw/LnNpbmd1bGFyTmFtZSB8fCB0b1dvcmRzKGJsb2NrLnNsdWcsIHRydWUpXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgLi4uYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2NrVHlwZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXVxuICAgICAgfSlcblxuICAgICAgY29uc3QgZnVsbE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IEdyYXBoUUxMaXN0KFxuICAgICAgICBuZXcgR3JhcGhRTE5vbk51bGwoXG4gICAgICAgICAgbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgICAgICAgICByZXNvbHZlVHlwZTogKGRhdGEpID0+IHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tkYXRhLmJsb2NrVHlwZV0ubmFtZSxcbiAgICAgICAgICAgIHR5cGVzOiBibG9ja1R5cGVzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNoZWNrYm94OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENoZWNrYm94RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxCb29sZWFuLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvZGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29kZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvbGxhcHNpYmxlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENvbGxhcHNpYmxlRmllbGQpID0+XG4gICAgICBmaWVsZC5maWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQob2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzXG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICBkYXRlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IERhdGVGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgRGF0ZVRpbWVSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBlbWFpbDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBFbWFpbEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBFbWFpbEFkZHJlc3NSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBncm91cDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBHcm91cEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvclxuXG4gICAgICAgICAgLy8gUmljaFRleHQgZmllbGRzIGhhdmUgdGhlaXIgb3duIGRlcHRoIGFyZ3VtZW50IGluIEdyYXBoUUwuXG4gICAgICAgICAgLy8gVGhpcyBpcyB3aHkgdGhlIHBvcHVsYXRpb25Qcm9taXNlICh3aGljaCBwb3B1bGF0ZXMgcmljaHRleHQgZmllbGRzIGxpa2UgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwcylcbiAgICAgICAgICAvLyBpcyBydW4gaGVyZSBhZ2Fpbiwgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguXG4gICAgICAgICAgLy8gSW4gdGhlIGdyYXBocWwgZmluZC50cyByZXNvbHZlciwgdGhlIGRlcHRoIGlzIHRoZW4gaGFyZC1jb2RlZCB0byAwLlxuICAgICAgICAgIC8vIEVmZmVjdGl2ZWx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIHBvcHVsYXRpb25Qcm9taXNlIGZvciBHcmFwaFFMIGlzIG9ubHkgcnVuIGhlcmUsIGFuZCBub3QgaW4gdGhlIGZpbmQudHMgcmVzb2x2ZXIgLyBub3JtYWwgcG9wdWxhdGlvbiBwcm9taXNlLlxuICAgICAgICAgIGlmIChlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKSB7XG4gICAgICAgICAgICBhd2FpdCBlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaW5kTWFueTogZmFsc2UsXG4gICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXM6IFtdLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICAgICAgcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkczogdGFiLmZpZWxkcyxcbiAgICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRhYlNjaGVtYSxcbiAgICAgICAgICAgIFt0YWIubmFtZV06IHsgdHlwZTogcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udGFiU2NoZW1hLFxuICAgICAgICAgIC4uLnRhYi5maWVsZHMucmVkdWNlKChzdWJGaWVsZFNjaGVtYSwgc3ViRmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQoc3ViRmllbGRTY2hlbWEsIHN1YkZpZWxkKVxuICAgICAgICAgICAgcmV0dXJuIHN1YkZpZWxkU2NoZW1hXG4gICAgICAgICAgfSwgdGFiU2NoZW1hKSxcbiAgICAgICAgfVxuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgdGV4dDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgdGV4dGFyZWE6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGV4dGFyZWFGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTFN0cmluZywgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICB1cGxvYWQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVXBsb2FkRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVsYXRpb25UbyB9ID0gZmllbGRcblxuICAgICAgY29uc3QgdXBsb2FkTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIHRvV29yZHMoZmllbGQubmFtZSwgdHJ1ZSkpXG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICBjb25zdCB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uZ3JhcGhRTC50eXBlIHx8IG5ld2x5Q3JlYXRlZEJsb2NrVHlwZSxcbiAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgIClcblxuICAgICAgY29uc3QgdXBsb2FkQXJncyA9IHt9IGFzIExvY2FsZUlucHV0VHlwZVxuXG4gICAgICBpZiAocGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIHVwbG9hZEFyZ3MubG9jYWxlID0ge1xuICAgICAgICAgIHR5cGU6IHBheWxvYWQudHlwZXMubG9jYWxlSW5wdXRUeXBlLFxuICAgICAgICB9XG5cbiAgICAgICAgdXBsb2FkQXJncy5mYWxsYmFja0xvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyA9IGZpZWxkLnJlbGF0aW9uVG9cblxuICAgICAgY29uc3QgdXBsb2FkID0ge1xuICAgICAgICBhcmdzOiB1cGxvYWRBcmdzLFxuICAgICAgICBleHRlbnNpb25zOiB7IGNvbXBsZXhpdHk6IDIwIH0sXG4gICAgICAgIGFzeW5jIHJlc29sdmUocGFyZW50LCBhcmdzLCBjb250ZXh0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJlbnRbZmllbGQubmFtZV1cbiAgICAgICAgICBjb25zdCBsb2NhbGUgPSBhcmdzLmxvY2FsZSB8fCBjb250ZXh0LnJlcS5sb2NhbGVcbiAgICAgICAgICBjb25zdCBmYWxsYmFja0xvY2FsZSA9IGFyZ3MuZmFsbGJhY2tMb2NhbGUgfHwgY29udGV4dC5yZXEuZmFsbGJhY2tMb2NhbGVcbiAgICAgICAgICBjb25zdCBpZCA9IHZhbHVlXG5cbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWREb2N1bWVudCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcS50cmFuc2FjdGlvbklELFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudCB8fCBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2hlcmVGaWVsZHMgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgdXBsb2FkLmFyZ3Mud2hlcmUgPSB7XG4gICAgICAgIHR5cGU6IGJ1aWxkV2hlcmVJbnB1dFR5cGUoe1xuICAgICAgICAgIG5hbWU6IHVwbG9hZE5hbWUsXG4gICAgICAgICAgZmllbGRzOiB3aGVyZUZpZWxkcyxcbiAgICAgICAgICBwYXJlbnROYW1lOiB1cGxvYWROYW1lLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0pLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHVwbG9hZCxcbiAgICAgIH1cbiAgICB9LFxuICB9XG5cbiAgY29uc3Qgb2JqZWN0U2NoZW1hID0ge1xuICAgIG5hbWUsXG4gICAgZmllbGRzOiAoKSA9PlxuICAgICAgZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBmaWVsZFRvU2NoZW1hTWFwW2ZpZWxkLnR5cGVdXG5cbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFNjaGVtYSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgICAgLi4uZmllbGRTY2hlbWEob2JqZWN0VHlwZUNvbmZpZywgZmllbGQpLFxuICAgICAgICB9XG4gICAgICB9LCBiYXNlRmllbGRzKSxcbiAgfVxuXG4gIGNvbnN0IG5ld2x5Q3JlYXRlZEJsb2NrVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZShvYmplY3RTY2hlbWEpXG5cbiAgcmV0dXJuIG5ld2x5Q3JlYXRlZEJsb2NrVHlwZVxufVxuXG5leHBvcnQgZGVmYXVsdCBidWlsZE9iamVjdFR5cGVcbiJdLCJuYW1lcyI6WyJidWlsZE9iamVjdFR5cGUiLCJuYW1lIiwiYmFzZUZpZWxkcyIsImZpZWxkcyIsImZvcmNlTnVsbGFibGUiLCJwYXJlbnROYW1lIiwicGF5bG9hZCIsImZpZWxkVG9TY2hlbWFNYXAiLCJhcnJheSIsIm9iamVjdFR5cGVDb25maWciLCJmaWVsZCIsImludGVyZmFjZU5hbWUiLCJjb21iaW5lUGFyZW50TmFtZSIsInRvV29yZHMiLCJ0eXBlcyIsImFycmF5VHlwZXMiLCJpc0ZpZWxkTnVsbGFibGUiLCJhcnJheVR5cGUiLCJHcmFwaFFMTGlzdCIsIkdyYXBoUUxOb25OdWxsIiwidHlwZSIsIndpdGhOdWxsYWJsZVR5cGUiLCJibG9ja3MiLCJibG9ja1R5cGVzIiwibWFwIiwiYmxvY2siLCJzbHVnIiwiZ3JhcGhRTCIsInNpbmd1bGFyTmFtZSIsImZ1bGxOYW1lIiwiR3JhcGhRTFVuaW9uVHlwZSIsInJlc29sdmVUeXBlIiwiZGF0YSIsImJsb2NrVHlwZSIsImNoZWNrYm94IiwiR3JhcGhRTEJvb2xlYW4iLCJjb2RlIiwiR3JhcGhRTFN0cmluZyIsImNvbGxhcHNpYmxlIiwicmVkdWNlIiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcyIsInN1YkZpZWxkIiwiYWRkU3ViRmllbGQiLCJkYXRlIiwiRGF0ZVRpbWVSZXNvbHZlciIsImVtYWlsIiwiRW1haWxBZGRyZXNzUmVzb2x2ZXIiLCJncm91cCIsImdyb3VwVHlwZXMiLCJqc29uIiwiR3JhcGhRTEpTT04iLCJudW1iZXIiLCJHcmFwaFFMSW50IiwiR3JhcGhRTEZsb2F0IiwiaGFzTWFueSIsInBvaW50IiwicmFkaW8iLCJHcmFwaFFMRW51bVR5cGUiLCJ2YWx1ZXMiLCJmb3JtYXRPcHRpb25zIiwicmVsYXRpb25zaGlwIiwicmVsYXRpb25UbyIsImlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiaGFzTWFueVZhbHVlcyIsInJlbGF0aW9uc2hpcE5hbWUiLCJyZWxhdGlvblRvVHlwZSIsInJlbGF0aW9ucyIsInJlbGF0aW9uIiwiZm9ybWF0TmFtZSIsInZhbHVlIiwiY29sbGVjdGlvbnMiLCJHcmFwaFFMT2JqZWN0VHlwZSIsInJlcSIsImNvbGxlY3Rpb24iLCJuZXdseUNyZWF0ZWRCbG9ja1R5cGUiLCJyZWxhdGlvbnNoaXBBcmdzIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxlIiwibG9jYWxlSW5wdXRUeXBlIiwiZmFsbGJhY2tMb2NhbGUiLCJmYWxsYmFja0xvY2FsZUlucHV0VHlwZSIsImFyZ3MiLCJleHRlbnNpb25zIiwiY29tcGxleGl0eSIsInJlc29sdmUiLCJwYXJlbnQiLCJjb250ZXh0IiwicmVsYXRlZENvbGxlY3Rpb25TbHVnIiwicmVzdWx0cyIsInJlc3VsdFByb21pc2VzIiwiY3JlYXRlUG9wdWxhdGlvblByb21pc2UiLCJyZWxhdGVkRG9jIiwiaSIsImlkIiwiY29sbGVjdGlvblNsdWciLCJyZXN1bHQiLCJwYXlsb2FkRGF0YUxvYWRlciIsImxvYWQiLCJKU09OIiwic3RyaW5naWZ5IiwidHJhbnNhY3Rpb25JRCIsImZvckVhY2giLCJwdXNoIiwiUHJvbWlzZSIsImFsbCIsInJlbGF0ZWREb2N1bWVudCIsInJpY2hUZXh0IiwiZGVwdGgiLCJkZWZhdWx0RGVwdGgiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwicm93Iiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMiLCJzZWxlY3QiLCJ0YWJzIiwidGFiU2NoZW1hIiwidGFiIiwidGFiSGFzTmFtZSIsInRhYlR5cGVzIiwic3ViRmllbGRTY2hlbWEiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiLCJ1cGxvYWROYW1lIiwidXBsb2FkQXJncyIsIndoZXJlRmllbGRzIiwid2hlcmUiLCJidWlsZFdoZXJlSW5wdXRUeXBlIiwib2JqZWN0U2NoZW1hIiwiZmllbGRTY2hlbWEiXSwibWFwcGluZ3MiOiJBQUFBLDBEQUEwRCxHQUMxRCxtQ0FBbUMsR0FDbkMsdUNBQXVDOzs7OytCQXltQnZDOzs7ZUFBQTs7O3lCQTVsQk87Z0NBQ2dEO2lDQUUzQjt1QkE0QkQ7OEJBQ0g7MEVBQ007bUVBQ1A7c0VBQ0c7NEVBQ007d0VBQ0o7eUVBQ0M7Ozs7OztBQTJCN0IsU0FBU0EsZ0JBQWdCLEVBQ3ZCQyxJQUFJLEVBQ0pDLGFBQWEsQ0FBQyxDQUFDLEVBQ2ZDLE1BQU0sRUFDTkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDRjtJQUNMLE1BQU1DLG1CQUFtQjtRQUN2QkMsT0FBTyxDQUFDQyxrQkFBb0NDO1lBQzFDLE1BQU1DLGdCQUNKRCxPQUFPQyxpQkFBaUJDLElBQUFBLDBCQUFpQixFQUFDUCxZQUFZUSxJQUFBQSxxQkFBTyxFQUFDSCxNQUFNVCxJQUFJLEVBQUU7WUFFNUUsSUFBSSxDQUFDSyxRQUFRUSxLQUFLLENBQUNDLFVBQVUsQ0FBQ0osY0FBYyxFQUFFO2dCQUM1Qyw2Q0FBNkM7Z0JBQzdDTCxRQUFRUSxLQUFLLENBQUNDLFVBQVUsQ0FBQ0osY0FBYyxHQUFHWCxnQkFBZ0I7b0JBQ3hEQyxNQUFNVTtvQkFDTlIsUUFBUU8sTUFBTVAsTUFBTTtvQkFDcEJDLGVBQWVZLElBQUFBLHdCQUFlLEVBQUNOLE9BQU9OO29CQUN0Q0MsWUFBWU07b0JBQ1pMO2dCQUNGO1lBQ0Y7WUFFQSxNQUFNVyxZQUFZLElBQUlDLG9CQUFXLENBQUMsSUFBSUMsdUJBQWMsQ0FBQ2IsUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWM7WUFFNUYsT0FBTztnQkFDTCxHQUFHRixnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUFFbUIsTUFBTUMsSUFBQUEseUJBQWdCLEVBQUNYLE9BQU9PO2dCQUFXO1lBQzNEO1FBQ0Y7UUFDQUssUUFBUSxDQUFDYixrQkFB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
|
|
@@ -69,6 +69,8 @@
|
|
|
69
69
|
"invalidFileType": "Invalid file type",
|
|
70
70
|
"invalidFileTypeValue": "Invalid file type: {{value}}",
|
|
71
71
|
"loadingDocument": "There was a problem loading the document with ID of {{id}}.",
|
|
72
|
+
"localesNotSaved_one": "The following locale could not be saved:",
|
|
73
|
+
"localesNotSaved_other": "The following locales could not be saved:",
|
|
72
74
|
"missingEmail": "Missing email.",
|
|
73
75
|
"missingIDOfDocument": "Missing ID of document to update.",
|
|
74
76
|
"missingIDOfVersion": "Missing ID of version.",
|