payload-auth 1.6.6 → 1.7.1
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/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +29 -15
- package/dist/better-auth/adapter/transform/index.d.ts +7 -4
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +25 -8
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +9 -2
- package/dist/better-auth/plugin/helpers/get-collection.d.ts +13 -1
- package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-collection.js +23 -2
- package/dist/better-auth/plugin/index.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +2 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +3 -1
- package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/team-members.js +3 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +33 -23
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +5 -4
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +4 -3
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +22 -3
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +1 -2
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +7 -4
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +22 -2
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +2 -5
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +3 -3
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-payload-auth.js +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +4 -4
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +6 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +14 -8
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.js +20 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.js +20 -0
- package/dist/better-auth/plugin/types.d.ts +38 -40
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/package.json +5 -5
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getAuthTables } from "better-auth/db";
|
|
2
|
+
import { getCollectionByModelKey, getCollectionFieldNameByFieldKeyUntyped, getFieldKeyByCollectionFieldName } from "../../plugin/helpers/get-collection";
|
|
2
3
|
export const createTransform = (options, enableDebugLogs)=>{
|
|
3
4
|
const schema = getAuthTables(options);
|
|
4
5
|
function debugLog(message) {
|
|
@@ -255,6 +256,10 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
255
256
|
});
|
|
256
257
|
}
|
|
257
258
|
}
|
|
259
|
+
// Handle role fields (Coming from better auth, will be a single string seperated by commas if theres multiple roles)
|
|
260
|
+
if (key === 'role' || key === 'roles') {
|
|
261
|
+
return value.split(',').map((role)=>role.trim().toLowerCase());
|
|
262
|
+
}
|
|
258
263
|
// Return original value if no conversion was needed or applicable
|
|
259
264
|
return value;
|
|
260
265
|
}
|
|
@@ -270,7 +275,7 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
270
275
|
* @param model - The model name in the schema
|
|
271
276
|
* @param idType - The expected ID type ('number' or 'text')
|
|
272
277
|
* @returns Transformed data compatible with Payload CMS
|
|
273
|
-
*/ function transformInput({ data, model, idType }) {
|
|
278
|
+
*/ function transformInput({ data, model, idType, payload }) {
|
|
274
279
|
const transformedData = {};
|
|
275
280
|
const schemaFields = schema?.[model]?.fields ?? {};
|
|
276
281
|
// Process each field in the input data
|
|
@@ -292,7 +297,8 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
292
297
|
});
|
|
293
298
|
// Use the schema-defined field name if available, otherwise use original key
|
|
294
299
|
const targetFieldName = schemaFieldName || key;
|
|
295
|
-
|
|
300
|
+
const targetFieldKey = getCollectionFieldNameByFieldKeyUntyped(getCollectionByModelKey(payload.collections, model), targetFieldName);
|
|
301
|
+
transformedData[targetFieldKey] = normalizedData;
|
|
296
302
|
});
|
|
297
303
|
return transformedData;
|
|
298
304
|
}
|
|
@@ -315,7 +321,7 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
315
321
|
* @param doc - The document returned from Payload CMS
|
|
316
322
|
* @param model - The model name in the BetterAuth schema
|
|
317
323
|
* @returns The transformed document compatible with BetterAuth
|
|
318
|
-
*/ function transformOutput({ doc, model }) {
|
|
324
|
+
*/ function transformOutput({ doc, model, payload }) {
|
|
319
325
|
if (!doc || typeof doc !== 'object') return doc;
|
|
320
326
|
const result = {
|
|
321
327
|
...doc
|
|
@@ -324,6 +330,14 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
324
330
|
// Identify relationship fields with custom field name mappings
|
|
325
331
|
const relationshipFields = Object.fromEntries(Object.entries(schemaFields).filter(([key])=>isRelationshipField(key, schemaFields)));
|
|
326
332
|
const dateFields = Object.fromEntries(Object.entries(schemaFields).filter(([_, value])=>value.type === 'date'));
|
|
333
|
+
// First make sure all the fields keys are correct
|
|
334
|
+
Object.keys(result).forEach((key)=>{
|
|
335
|
+
const targetFieldKey = getFieldKeyByCollectionFieldName(getCollectionByModelKey(payload.collections, model), key);
|
|
336
|
+
if (targetFieldKey !== key) {
|
|
337
|
+
result[targetFieldKey] = result[key];
|
|
338
|
+
delete result[key];
|
|
339
|
+
}
|
|
340
|
+
});
|
|
327
341
|
Object.entries(doc).forEach(([key, value])=>{
|
|
328
342
|
if (value === null || value === undefined) return;
|
|
329
343
|
// Convert ID fields to strings for BetterAuth compatibility
|
|
@@ -522,9 +536,12 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
522
536
|
* @param model - The model/collection name to query
|
|
523
537
|
* @param where - Array of Better Auth where conditions
|
|
524
538
|
* @returns A Payload-compatible where clause object
|
|
525
|
-
*/ function convertWhereClause({ idType, model, where }) {
|
|
539
|
+
*/ function convertWhereClause({ idType, model, where, payload }) {
|
|
526
540
|
// Handle empty where clause
|
|
527
541
|
if (!where) return {};
|
|
542
|
+
function getPayloadFieldName(fieldKey) {
|
|
543
|
+
return getCollectionFieldNameByFieldKeyUntyped(getCollectionByModelKey(payload.collections, model), fieldKey);
|
|
544
|
+
}
|
|
528
545
|
// Handle single condition case for optimization
|
|
529
546
|
if (where.length === 1) {
|
|
530
547
|
const w = where[0];
|
|
@@ -540,7 +557,7 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
540
557
|
});
|
|
541
558
|
// Create the Payload where condition with proper operator
|
|
542
559
|
const res = {
|
|
543
|
-
[fieldName]: operatorToPayload(w.operator ?? '', value)
|
|
560
|
+
[getPayloadFieldName(fieldName)]: operatorToPayload(w.operator ?? '', value)
|
|
544
561
|
};
|
|
545
562
|
return res;
|
|
546
563
|
}
|
|
@@ -557,7 +574,7 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
557
574
|
idType
|
|
558
575
|
});
|
|
559
576
|
return {
|
|
560
|
-
[fieldName]: operatorToPayload(w.operator ?? '', value)
|
|
577
|
+
[getPayloadFieldName(fieldName)]: operatorToPayload(w.operator ?? '', value)
|
|
561
578
|
};
|
|
562
579
|
});
|
|
563
580
|
// Process OR conditions
|
|
@@ -569,7 +586,7 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
569
586
|
idType
|
|
570
587
|
});
|
|
571
588
|
return {
|
|
572
|
-
[fieldName]: operatorToPayload(w.operator ?? '', value)
|
|
589
|
+
[getPayloadFieldName(fieldName)]: operatorToPayload(w.operator ?? '', value)
|
|
573
590
|
};
|
|
574
591
|
});
|
|
575
592
|
// Combine AND and OR clauses into final Payload where object
|
|
@@ -644,4 +661,4 @@ export const createTransform = (options, enableDebugLogs)=>{
|
|
|
644
661
|
};
|
|
645
662
|
};
|
|
646
663
|
|
|
647
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3RyYW5zZm9ybS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBdXRoVGFibGVzIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgdHlwZSB7IE1vZGVsS2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhPcHRpb25zLCBXaGVyZSB9IGZyb20gJ2JldHRlci1hdXRoJ1xuaW1wb3J0IHR5cGUgeyBEQkZpZWxkQXR0cmlidXRlIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25TbHVnLCBXaGVyZSBhcyBQYXlsb2FkV2hlcmUgfSBmcm9tICdwYXlsb2FkJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVHJhbnNmb3JtID0gKG9wdGlvbnM6IEJldHRlckF1dGhPcHRpb25zLCBlbmFibGVEZWJ1Z0xvZ3M6IGJvb2xlYW4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0gZ2V0QXV0aFRhYmxlcyhvcHRpb25zKVxuXG4gIGZ1bmN0aW9uIGRlYnVnTG9nKG1lc3NhZ2U6IGFueVtdKSB7XG4gICAgaWYgKGVuYWJsZURlYnVnTG9ncykge1xuICAgICAgY29uc29sZS5sb2coYFtwYXlsb2FkLWRiLWFkYXB0ZXJdYCwgLi4ubWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhIEJldHRlckF1dGggc2NoZW1hIG1vZGVsIG5hbWUgdG8gaXRzIGNvcnJlc3BvbmRpbmcgUGF5bG9hZCBDTVMgY29sbGVjdGlvbiBzbHVnLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJlc29sdmVzIHRoZSBhcHByb3ByaWF0ZSBjb2xsZWN0aW9uIHNsdWcgYnk6XG4gICAqIDEuIExvb2tpbmcgdXAgdGhlIG1vZGVsIGluIHRoZSBCZXR0ZXJBdXRoIHNjaGVtYSB0byBmaW5kIGl0cyBjb25maWd1cmVkIG1vZGVsTmFtZVxuICAgKiAyLiBGYWxsaW5nIGJhY2sgdG8gdGhlIG9yaWdpbmFsIG1vZGVsIG5hbWUgaWYgbm8gbWFwcGluZyBleGlzdHNcbiAgICpcbiAgICogQ29sbGVjdGlvbiBzbHVnIHJlc29sdXRpb24gZm9sbG93cyB0aGVzZSBydWxlczpcbiAgICogLSBGb3IgYmFzZSBjb2xsZWN0aW9uczogVGhlIHNhbml0aXplQmV0dGVyQXV0aE9wdGlvbnMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgY29sbGVjdGlvbiBzbHVnXG4gICAqICAgZnJvbSBwbHVnaW4gb3B0aW9ucyBpcyBzZXQgYXMgdGhlIG1vZGVsIG5hbWUgaW4gdGhlIHNjaGVtYVxuICAgKiAtIEZvciBwbHVnaW5zOiBUaGUgYmV0dGVyQXV0aFBsdWdpblNsdWdzIGNvbnN0YW50IGlzIHVzZWQgYXMgdGhlIG1vZGVsTmFtZVxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgQmV0dGVyQXV0aCBtb2RlbCBuYW1lIHRvIHJlc29sdmVcbiAgICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgUGF5bG9hZCBDTVMgY29sbGVjdGlvbiBzbHVnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYVsndXNlciddLm1vZGVsTmFtZSBpcyAndXNlcnMnXG4gICAqIGdldENvbGxlY3Rpb25TbHVnKCd1c2VyJykgLy8gUmV0dXJucyAndXNlcnMnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIG1vZGVsIGRvZXNuJ3QgZXhpc3QgaW4gc2NoZW1hXG4gICAqIGdldENvbGxlY3Rpb25TbHVnKCdjdXN0b20nKSAvLyBSZXR1cm5zICdjdXN0b20nXG4gICAqXG4gICAqIEB3YXJuaW5nIElmIGEgY29sbGVjdGlvbiBpcyBvdmVycmlkZGVuIHVzaW5nIHRoZSBjb2xsZWN0aW9uT3ZlcnJpZGUgb3B0aW9uXG4gICAqIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHNjaGVtYSBtYXBwaW5nLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gaW5jb3JyZWN0IHNsdWdzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uU2x1Zyhtb2RlbDogTW9kZWxLZXkpOiBDb2xsZWN0aW9uU2x1ZyB7XG4gICAgLy8gRmlyc3QgdHJ5IHRvIGdldCB0aGUgbW9kZWxOYW1lIGZyb20gc2NoZW1hLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtb2RlbCBuYW1lXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHNjaGVtYT8uW21vZGVsXT8ubW9kZWxOYW1lIHx8IG1vZGVsXG4gICAgZGVidWdMb2coWydnZXRDb2xsZWN0aW9uU2x1ZzonLCB7IG1vZGVsLCByZXNvbHZlZFNsdWc6IGNvbGxlY3Rpb24gfV0pXG4gICAgcmV0dXJuIGNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvblNsdWdcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgQmV0dGVyQXV0aCBzY2hlbWEgZmllbGQgdG8gaXRzIGNvcnJlc3BvbmRpbmcgUGF5bG9hZCBDTVMgZmllbGQgbmFtZS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiByZXNvbHZlcyB0aGUgYXBwcm9wcmlhdGUgZmllbGQgbmFtZSBieTpcbiAgICogMS4gUHJlc2VydmluZyAnaWQnIG9yICdfaWQnIGZpZWxkcyBhcy1pcyAoc3BlY2lhbCBjYXNlIGhhbmRsaW5nKVxuICAgKiAyLiBMb29raW5nIHVwIHRoZSBmaWVsZCBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWEgdG8gZmluZCBpdHMgY29uZmlndXJlZCBmaWVsZE5hbWVcbiAgICogMy4gRmFsbGluZyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBmaWVsZCBuYW1lIGlmIG5vIG1hcHBpbmcgZXhpc3RzXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBCZXR0ZXJBdXRoIG1vZGVsIG5hbWUgY29udGFpbmluZyB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIC0gVGhlIG9yaWdpbmFsIGZpZWxkIG5hbWUgdG8gcmVzb2x2ZVxuICAgKiBAcmV0dXJucyBUaGUgY29ycmVzcG9uZGluZyBQYXlsb2FkIENNUyBmaWVsZCBuYW1lXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYVsndXNlciddLmZpZWxkc1snZW1haWwnXS5maWVsZE5hbWUgaXMgJ2VtYWlsQWRkcmVzcydcbiAgICogZ2V0RmllbGROYW1lKCd1c2VyJywgJ2VtYWlsJykgLy8gUmV0dXJucyAnZW1haWxBZGRyZXNzJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBTcGVjaWFsIGNhc2UgZm9yIElEIGZpZWxkc1xuICAgKiBnZXRGaWVsZE5hbWUoJ3VzZXInLCAnaWQnKSAvLyBBbHdheXMgcmV0dXJucyAnaWQnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIGZpZWxkIGRvZXNuJ3QgZXhpc3QgaW4gc2NoZW1hIG9yIGhhcyBubyBmaWVsZE5hbWUgbWFwcGluZ1xuICAgKiBnZXRGaWVsZE5hbWUoJ3VzZXInLCAnY3VzdG9tJykgLy8gUmV0dXJucyAnY3VzdG9tJ1xuICAgKlxuICAgKiBAd2FybmluZyBJZiBhIGZpZWxkTmFtZSBpcyBvdmVycmlkZGVuIGluIHRoZSBwYXlsb2FkIGNvbGxlY3Rpb24gY29uZmlnIHVzaW5nIHRoZSBjb2xsZWN0aW9uT3ZlcnJpZGUgb3B0aW9uXG4gICAqIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHNjaGVtYSBtYXBwaW5nLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gaW5jb3JyZWN0IGZpZWxkIG5hbWVzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRGaWVsZE5hbWUobW9kZWw6IE1vZGVsS2V5LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6ICdpZCcgb3IgJ19pZCcgaXMgYWx3YXlzIHByZXNlcnZlZCBhcy1pc1xuICAgIGlmIChbJ2lkJywgJ19pZCddLmluY2x1ZGVzKGZpZWxkKSkge1xuICAgICAgcmV0dXJuIGZpZWxkXG4gICAgfVxuXG4gICAgLy8gTG9vayB1cCB0aGUgZmllbGQgaW4gdGhlIHNjaGVtYVxuICAgIGNvbnN0IGZpZWxkRGVmaW5pdGlvbiA9IHNjaGVtYVttb2RlbF0/LmZpZWxkc1tmaWVsZF1cblxuICAgIC8vIFVzZSB0aGUgY29uZmlndXJlZCBmaWVsZE5hbWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIG9yaWdpbmFsXG4gICAgY29uc3QgZmllbGROYW1lID0gZmllbGREZWZpbml0aW9uPy5maWVsZE5hbWUgfHwgZmllbGRcblxuICAgIC8vIExvZyB0aGUgZmllbGQgcmVzb2x1dGlvbiBmb3IgZGVidWdnaW5nXG4gICAgZGVidWdMb2coWydnZXRGaWVsZDogJywgeyBtb2RlbCwgb3JpZ2luYWxGaWVsZDogZmllbGQsIGZpZWxkTmFtZSB9XSlcblxuICAgIHJldHVybiBmaWVsZE5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZmllbGQgaXMgYSByZWxhdGlvbnNoaXAgZmllbGQgYnkgY2hlY2tpbmcgZm9yIGEgcmVmZXJlbmNlcyBwcm9wZXJ0eS5cbiAgICpcbiAgICogUmVsYXRpb25zaGlwIGZpZWxkcyBpbiB0aGUgc2NoZW1hIGhhdmUgYSAncmVmZXJlbmNlcycgcHJvcGVydHkgdGhhdCBwb2ludHMgdG8gYW5vdGhlciBtb2RlbC5cbiAgICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhpcyBwcm9wZXJ0eSBleGlzdHMgdG8gaWRlbnRpZnkgcmVsYXRpb25zaGlwIGZpZWxkcy5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkS2V5IC0gVGhlIGtleSBvZiB0aGUgZmllbGQgdG8gY2hlY2sgaW4gdGhlIHNjaGVtYVxuICAgKiBAcGFyYW0gc2NoZW1hRmllbGRzIC0gT2JqZWN0IGNvbnRhaW5pbmcgYWxsIGZpZWxkcyBmcm9tIHRoZSBzY2hlbWEgZm9yIGEgc3BlY2lmaWMgbW9kZWxcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZmllbGQgaXMgYSByZWxhdGlvbnNoaXAgZmllbGQgKGhhcyByZWZlcmVuY2VzKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYS51c2VyLmZpZWxkcy5wb3N0cyBoYXMgeyByZWZlcmVuY2VzOiB7fSB9XG4gICAqIGlzUmVsYXRpb25zaGlwRmllbGQoJ3Bvc3RzJywgc2NoZW1hLnVzZXIuZmllbGRzKSAvLyBSZXR1cm5zIHRydWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgc2NoZW1hLnVzZXIuZmllbGRzLmVtYWlsIGhhcyBubyByZWZlcmVuY2VzIHByb3BlcnR5XG4gICAqIGlzUmVsYXRpb25zaGlwRmllbGQoJ2VtYWlsJywgc2NoZW1hLnVzZXIuZmllbGRzKSAvLyBSZXR1cm5zIGZhbHNlXG4gICAqL1xuICBmdW5jdGlvbiBpc1JlbGF0aW9uc2hpcEZpZWxkKGZpZWxkS2V5OiBzdHJpbmcsIHNjaGVtYUZpZWxkczogUmVjb3JkPHN0cmluZywgREJGaWVsZEF0dHJpYnV0ZT4pOiBib29sZWFuIHtcbiAgICAvLyBBIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkIGlmIGl0IGhhcyBhICdyZWZlcmVuY2VzJyBwcm9wZXJ0eSBkZWZpbmVkXG4gICAgcmV0dXJuIHNjaGVtYUZpZWxkc1tmaWVsZEtleV0/LnJlZmVyZW5jZXMgIT09IHVuZGVmaW5lZFxuICB9XG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhIHNpbmdsZSBJRCB2YWx1ZSBmcm9tIGEgUGF5bG9hZCB3aGVyZSBjbGF1c2UgaWYgaXQgcmVwcmVzZW50cyBhIHNpbXBsZSBJRCBxdWVyeS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBhbmFseXplcyBhIFBheWxvYWQgd2hlcmUgY2xhdXNlIHRvIGRldGVybWluZSBpZiBpdCdzIGEgc2ltcGxlIHF1ZXJ5IGZvciBhXG4gICAqIHNpbmdsZSBkb2N1bWVudCBieSBJRC4gSXQgc3VwcG9ydHMgYm90aCAnaWQnIGFuZCAnX2lkJyBmaWVsZHMgd2l0aCAnZXF1YWxzJyBvciAnY29udGFpbnMnXG4gICAqIG9wZXJhdG9ycy4gVGhpcyBpcyB1c2VmdWwgZm9yIG9wdGltaXppbmcgcXVlcmllcyB3aGVuIHdlIG9ubHkgbmVlZCB0byBmZXRjaCBhIHNpbmdsZSBkb2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHdoZXJlIC0gVGhlIFBheWxvYWQgd2hlcmUgY2xhdXNlIHRvIGFuYWx5emVcbiAgICogQHJldHVybnMgVGhlIElEIHZhbHVlIChzdHJpbmcgb3IgbnVtYmVyKSBpZiB0aGUgd2hlcmUgY2xhdXNlIGlzIGEgc2ltcGxlIElEIHF1ZXJ5LCBudWxsIG90aGVyd2lzZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zICcxMjMnIGZvciBhIHNpbXBsZSBlcXVhbHMgcXVlcnlcbiAgICogc2luZ2xlSWRRdWVyeSh7IGlkOiB7IGVxdWFsczogJzEyMycgfSB9KSAvLyAnMTIzJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIDQ1NiBmb3IgYSBzaW1wbGUgZXF1YWxzIHF1ZXJ5IHdpdGggbnVtYmVyIElEXG4gICAqIHNpbmdsZUlkUXVlcnkoeyBfaWQ6IHsgZXF1YWxzOiA0NTYgfSB9KSAvLyA0NTZcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyAnNzg5JyBmb3IgYSBjb250YWlucyBxdWVyeSB3aXRoIGEgc2luZ2xlIHZhbHVlXG4gICAqIHNpbmdsZUlkUXVlcnkoeyBpZDogeyBjb250YWluczogWyc3ODknXSB9IH0pIC8vICc3ODknXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgbnVsbCBmb3IgY29tcGxleCBxdWVyaWVzXG4gICAqIHNpbmdsZUlkUXVlcnkoeyBhbmQ6IFt7IGlkOiB7IGVxdWFsczogJzEyMycgfSB9XSB9KSAvLyBudWxsXG4gICAqL1xuICBmdW5jdGlvbiBzaW5nbGVJZFF1ZXJ5KHdoZXJlOiBQYXlsb2FkV2hlcmUpIHtcbiAgICAvLyBSZXR1cm4gbnVsbCBmb3IgZW1wdHkgd2hlcmUgY2xhdXNlcyBvciBjb21wbGV4IHF1ZXJpZXMgd2l0aCAnYW5kJy8nb3InIG9wZXJhdG9yc1xuICAgIGlmICghd2hlcmUgfHwgJ2FuZCcgaW4gd2hlcmUgfHwgJ29yJyBpbiB3aGVyZSkgcmV0dXJuIG51bGxcblxuICAgIC8vIENoZWNrIGlmIHRoZSB3aGVyZSBjbGF1c2UgY29udGFpbnMgZWl0aGVyICdpZCcgb3IgJ19pZCcgZmllbGRcbiAgICBpZiAoWydpZCcsICdfaWQnXS5zb21lKChmaWVsZCkgPT4gZmllbGQgaW4gd2hlcmUpKSB7XG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggSUQgZmllbGQgaXMgYmVpbmcgdXNlZCAoc3VwcG9ydCBib3RoICdpZCcgYW5kICdfaWQnKVxuICAgICAgY29uc3QgaWRGaWVsZCA9ICdpZCcgaW4gd2hlcmUgPyAnaWQnIDogJ19pZCdcbiAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHdoZXJlW2lkRmllbGRdXG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIGVxdWFscyBvcGVyYXRvciBjYXNlXG4gICAgICBpZiAoY29uZGl0aW9uICYmIHR5cGVvZiBjb25kaXRpb24gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGNvbmRpdGlvbikgJiYgJ2VxdWFscycgaW4gY29uZGl0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29uZGl0aW9uLmVxdWFsc1xuICAgICAgICAvLyBPbmx5IHJldHVybiBzdHJpbmcgb3IgbnVtYmVyIElEIHZhbHVlc1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgY29udGFpbnMgb3BlcmF0b3IgY2FzZSB3aXRoIGEgc2luZ2xlIHZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIGNvbmRpdGlvbiAmJlxuICAgICAgICB0eXBlb2YgY29uZGl0aW9uID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAhQXJyYXkuaXNBcnJheShjb25kaXRpb24pICYmXG4gICAgICAgICdjb250YWlucycgaW4gY29uZGl0aW9uICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29uZGl0aW9uLmNvbnRhaW5zKSAmJlxuICAgICAgICBjb25kaXRpb24uY29udGFpbnMubGVuZ3RoID09PSAxXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb25kaXRpb24uY29udGFpbnNbMF1cbiAgICAgICAgLy8gT25seSByZXR1cm4gc3RyaW5nIG9yIG51bWJlciBJRCB2YWx1ZXNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIG51bGwgaWYgbm8gdmFsaWQgSUQgcXVlcnkgd2FzIGZvdW5kXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGRhdGEgdmFsdWVzIGJhc2VkIG9uIGZpZWxkIHR5cGUgYW5kIHJlcXVpcmVkIElEIHR5cGVcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHR5cGUgY29udmVyc2lvbiBmb3IgcmVsYXRpb25zaGlwIGZpZWxkcyB0byBlbnN1cmVcbiAgICogSURzIGFyZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQgKHN0cmluZyBvciBudW1iZXIpIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGZpZWxkIGtleS9uYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBub3JtYWxpemVcbiAgICogQHBhcmFtIGlzUmVsYXRlZEZpZWxkIC0gV2hldGhlciB0aGlzIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkXG4gICAqIEBwYXJhbSBpZFR5cGUgLSBUaGUgZXhwZWN0ZWQgSUQgdHlwZSAoJ251bWJlcicgb3IgJ3RleHQnKVxuICAgKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCB2YWx1ZVxuICAgKi9cbiAgZnVuY3Rpb24gbm9ybWFsaXplRGF0YSh7XG4gICAga2V5LFxuICAgIHZhbHVlLFxuICAgIGlzUmVsYXRlZEZpZWxkLFxuICAgIGlkVHlwZVxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogYW55XG4gICAgaXNSZWxhdGVkRmllbGQ6IGJvb2xlYW5cbiAgICBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnXG4gIH0pIHtcbiAgICAvLyBTa2lwIHByb2Nlc3NpbmcgZm9yIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBpZFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMClcbiAgICAgICAgaWYgKCFpc05hTihwYXJzZWQpKSB7XG4gICAgICAgICAgZGVidWdMb2coW2BJRCBjb252ZXJzaW9uOiAke2tleX0gY29udmVydGluZyBzdHJpbmcgSUQgdG8gbnVtYmVyYCwgeyBvcmlnaW5hbDogdmFsdWUsIGNvbnZlcnRlZDogcGFyc2VkIH1dKVxuICAgICAgICAgIHJldHVybiBwYXJzZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaWRUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nSWQgPSBTdHJpbmcodmFsdWUpXG4gICAgICAgIGRlYnVnTG9nKFtgSUQgY29udmVyc2lvbjogJHtrZXl9IGNvbnZlcnRpbmcgbnVtYmVyIElEIHRvIHN0cmluZ2AsIHsgb3JpZ2luYWw6IHZhbHVlLCBjb252ZXJ0ZWQ6IHN0cmluZ0lkIH1dKVxuICAgICAgICByZXR1cm4gc3RyaW5nSWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPbmx5IHByb2Nlc3MgcmVsYXRpb25zaGlwIGZpZWxkcyB0aGF0IG5lZWQgdHlwZSBjb252ZXJzaW9uXG4gICAgaWYgKGlzUmVsYXRlZEZpZWxkKSB7XG4gICAgICAvLyBIYW5kbGUgc2luZ2xlIElEIHZhbHVlIGNvbnZlcnNpb25cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIGlkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFsdWUsIDEwKVxuICAgICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIHN0cmluZyBJRCB0byBudW1iZXJgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBwYXJzZWQgfV0pXG4gICAgICAgICAgcmV0dXJuIHBhcnNlZFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaWRUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nSWQgPSBTdHJpbmcodmFsdWUpXG4gICAgICAgIGRlYnVnTG9nKFtgSUQgY29udmVyc2lvbjogJHtrZXl9IGNvbnZlcnRpbmcgbnVtYmVyIElEIHRvIHN0cmluZ2AsIHsgb3JpZ2luYWw6IHZhbHVlLCBjb252ZXJ0ZWQ6IHN0cmluZ0lkIH1dKVxuICAgICAgICByZXR1cm4gc3RyaW5nSWRcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGFycmF5IG9mIElEcyAtIG1hcCBlYWNoIHZhbHVlIHRvIHRoZSBjb3JyZWN0IHR5cGVcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubWFwKChpZCkgPT4ge1xuICAgICAgICAgIC8vIFNraXAgbnVsbC91bmRlZmluZWQgdmFsdWVzIGluIGFycmF5c1xuICAgICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gaWRcblxuICAgICAgICAgIGlmIChpZFR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KGlkLCAxMClcbiAgICAgICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VkKSA/IHBhcnNlZCA6IGlkXG4gICAgICAgICAgfSBlbHNlIGlmIChpZFR5cGUgPT09ICd0ZXh0JyAmJiB0eXBlb2YgaWQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKGlkKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaWRcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gb3JpZ2luYWwgdmFsdWUgaWYgbm8gY29udmVyc2lvbiB3YXMgbmVlZGVkIG9yIGFwcGxpY2FibGVcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGlucHV0IGRhdGEgZnJvbSBiZXR0ZXItYXV0aCB0byBQYXlsb2FkIENNUyBmb3JtYXRcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzOlxuICAgKiAxLiBGaWVsZCBuYW1lIG1hcHBpbmcgYWNjb3JkaW5nIHRvIHNjaGVtYSBkZWZpbml0aW9uc1xuICAgKiAyLiBJRCB0eXBlIGNvbnZlcnNpb24gZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHNcbiAgICogMy4gUHJvcGVyIGRhdGEgbm9ybWFsaXphdGlvbiBiYXNlZCBvbiBmaWVsZCB0eXBlc1xuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBpbnB1dCBkYXRhIGZyb20gYmV0dGVyLWF1dGhcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsIG5hbWUgaW4gdGhlIHNjaGVtYVxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGV4cGVjdGVkIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHJldHVybnMgVHJhbnNmb3JtZWQgZGF0YSBjb21wYXRpYmxlIHdpdGggUGF5bG9hZCBDTVNcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUlucHV0KHtcbiAgICBkYXRhLFxuICAgIG1vZGVsLFxuICAgIGlkVHlwZVxuICB9OiB7XG4gICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PlxuICAgIG1vZGVsOiBNb2RlbEtleVxuICAgIGlkVHlwZTogJ251bWJlcicgfCAndGV4dCdcbiAgfSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gICAgY29uc3Qgc2NoZW1hRmllbGRzID0gc2NoZW1hPy5bbW9kZWxdPy5maWVsZHMgPz8ge31cblxuICAgIC8vIFByb2Nlc3MgZWFjaCBmaWVsZCBpbiB0aGUgaW5wdXQgZGF0YVxuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZFxuICAgICAgY29uc3QgaXNSZWxhdGVkRmllbGQgPSBpc1JlbGF0aW9uc2hpcEZpZWxkKGtleSwgc2NoZW1hRmllbGRzKVxuXG4gICAgICAvLyBHZXQgdGhlIG1hcHBlZCBmaWVsZCBuYW1lIGZyb20gc2NoZW1hIChpZiBhbnkpXG4gICAgICBjb25zdCBzY2hlbWFGaWVsZE5hbWUgPSBzY2hlbWFGaWVsZHNba2V5XT8uZmllbGROYW1lXG5cbiAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgZGF0YSB2YWx1ZSBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCBJRCB0eXBlXG4gICAgICBjb25zdCBub3JtYWxpemVkRGF0YSA9IG5vcm1hbGl6ZURhdGEoe1xuICAgICAgICBpZFR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGlzUmVsYXRlZEZpZWxkXG4gICAgICB9KVxuXG4gICAgICAvLyBVc2UgdGhlIHNjaGVtYS1kZWZpbmVkIGZpZWxkIG5hbWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgdXNlIG9yaWdpbmFsIGtleVxuICAgICAgY29uc3QgdGFyZ2V0RmllbGROYW1lID0gc2NoZW1hRmllbGROYW1lIHx8IGtleVxuICAgICAgdHJhbnNmb3JtZWREYXRhW3RhcmdldEZpZWxkTmFtZV0gPSBub3JtYWxpemVkRGF0YVxuICAgIH0pXG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBQYXlsb2FkIENNUyBkb2N1bWVudCBvdXRwdXQgdG8gbWF0Y2ggQmV0dGVyQXV0aCBzY2hlbWEgZXhwZWN0YXRpb25zLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgc2V2ZXJhbCBjcml0aWNhbCB0cmFuc2Zvcm1hdGlvbnM6XG4gICAqXG4gICAqIDEuIElEIENvbnZlcnNpb246IEVuc3VyZXMgYWxsIElEIGZpZWxkcyBhcmUgc3RyaW5ncyBhcyByZXF1aXJlZCBieSBCZXR0ZXJBdXRoXG4gICAqICAgIChzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZXR0ZXItYXV0aC9iZXR0ZXItYXV0aC9ibG9iL21haW4vcGFja2FnZXMvYmV0dGVyLWF1dGgvc3JjL2RiL3NjaGVtYS50cyNMMTI1KVxuICAgKlxuICAgKiAyLiBSZWxhdGlvbnNoaXAgRmllbGQgTWFwcGluZzogQWxpZ25zIHJlbGF0aW9uc2hpcCBmaWVsZHMgd2l0aCBCZXR0ZXJBdXRoIHNjaGVtYSBuYW1pbmcgY29udmVudGlvbnNcbiAgICogICAgYW5kIGVuc3VyZXMgcHJvcGVyIElEIHR5cGUgaGFuZGxpbmdcbiAgICpcbiAgICogMy4gRGF0ZSBDb252ZXJzaW9uOiBUcmFuc2Zvcm1zIGRhdGUgc3RyaW5ncyBmcm9tIFBheWxvYWQgaW50byBEYXRlIG9iamVjdHMgZm9yIEJldHRlckF1dGhcbiAgICpcbiAgICogTm90ZTogV2hpbGUgc2V0dGluZyBkZXB0aDogMSBpbiBQYXlsb2FkIG9wZXJhdGlvbnMgc2ltcGxpZmllcyB0aGlzIHByb2Nlc3MgYnkgYXZvaWRpbmdcbiAgICogZGVlcGx5IG5lc3RlZCBvYmplY3RzLCB3ZSBtYWludGFpbiBjb21wcmVoZW5zaXZlIGNoZWNrcyBmb3Igcm9idXN0bmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCByZXR1cm5lZCBmcm9tIFBheWxvYWQgQ01TXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbCBuYW1lIGluIHRoZSBCZXR0ZXJBdXRoIHNjaGVtYVxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgZG9jdW1lbnQgY29tcGF0aWJsZSB3aXRoIEJldHRlckF1dGhcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybU91dHB1dDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw+KHsgZG9jLCBtb2RlbCB9OiB7IGRvYzogVDsgbW9kZWw6IE1vZGVsS2V5IH0pOiBUIHtcbiAgICBpZiAoIWRvYyB8fCB0eXBlb2YgZG9jICE9PSAnb2JqZWN0JykgcmV0dXJuIGRvY1xuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5kb2MgfVxuICAgIGNvbnN0IHNjaGVtYUZpZWxkcyA9IHNjaGVtYT8uW21vZGVsXT8uZmllbGRzID8/IHt9XG5cbiAgICAvLyBJZGVudGlmeSByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggY3VzdG9tIGZpZWxkIG5hbWUgbWFwcGluZ3NcbiAgICBjb25zdCByZWxhdGlvbnNoaXBGaWVsZHMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2NoZW1hRmllbGRzKS5maWx0ZXIoKFtrZXldKSA9PiBpc1JlbGF0aW9uc2hpcEZpZWxkKGtleSwgc2NoZW1hRmllbGRzKSkpXG4gICAgY29uc3QgZGF0ZUZpZWxkcyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzY2hlbWFGaWVsZHMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUudHlwZSA9PT0gJ2RhdGUnKSlcblxuICAgIE9iamVjdC5lbnRyaWVzKGRvYykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG5cbiAgICAgIC8vIENvbnZlcnQgSUQgZmllbGRzIHRvIHN0cmluZ3MgZm9yIEJldHRlckF1dGggY29tcGF0aWJpbGl0eVxuICAgICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggcmVuYW1lZCBmaWVsZE5hbWVzXG4gICAgICBjb25zdCBvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSA9IE9iamVjdC5rZXlzKHJlbGF0aW9uc2hpcEZpZWxkcykuZmluZCgoaykgPT4gcmVsYXRpb25zaGlwRmllbGRzW2tdLmZpZWxkTmFtZSA9PT0ga2V5KVxuICAgICAgaWYgKG9yaWdpbmFsUmVsYXRlZEZpZWxkS2V5KSB7XG4gICAgICAgIG5vcm1hbGl6ZURvY3VtZW50SWRzKHJlc3VsdCwgb3JpZ2luYWxSZWxhdGVkRmllbGRLZXksIGtleSwgdmFsdWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmlnaW5hbERhdGVGaWVsZEtleSA9IE9iamVjdC5rZXlzKGRhdGVGaWVsZHMpLmZpbmQoKGspID0+IGRhdGVGaWVsZHNba10uZmllbGROYW1lID09PSBrZXkpXG4gICAgICBpZiAob3JpZ2luYWxEYXRlRmllbGRLZXkpIHtcbiAgICAgICAgLy8gQ29udmVydCBJU08gZGF0ZSBzdHJpbmdzIHRvIERhdGUgb2JqZWN0cyBmb3IgQmV0dGVyQXV0aFxuICAgICAgICByZXN1bHRba2V5XSA9IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBUXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBJRCBmaWVsZHMgZm9yIGJvdGggcHJpbWFyeSBhbmQgcmVsYXRpb25zaGlwIGRvY3VtZW50cy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIGNvbnNpc3RlbnQgSUQgaGFuZGxpbmcgYmV0d2VlbiBCZXR0ZXJBdXRoIGFuZCBQYXlsb2FkIENNUyBieTpcbiAgICogMS4gQ29udmVydGluZyBhbGwgSURzIHRvIHN0cmluZ3MgZm9yIEJldHRlckF1dGggKHN0b3JlZCBpbiBvcmlnaW5hbEtleSlcbiAgICogMi4gUHJlc2VydmluZyBvcmlnaW5hbCBJRCB0eXBlcyBmb3IgUGF5bG9hZCBDTVMgKHN0b3JlZCBpbiBmaWVsZE5hbWUpXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBoYW5kbGVzIHZhcmlvdXMgSUQgZm9ybWF0czpcbiAgICogLSBQcmltaXRpdmUgdmFsdWVzIChzdHJpbmcvbnVtYmVyIElEcylcbiAgICogLSBPYmplY3QgcmVmZXJlbmNlcyB3aXRoIElEIHByb3BlcnRpZXNcbiAgICogLSBBcnJheXMgb2YgZWl0aGVyIHByaW1pdGl2ZSBJRHMgb3Igb2JqZWN0IHJlZmVyZW5jZXNcbiAgICpcbiAgICogQHBhcmFtIHJlc3VsdCAtIFRoZSByZXN1bHQgb2JqZWN0IGJlaW5nIHRyYW5zZm9ybWVkXG4gICAqIEBwYXJhbSBvcmlnaW5hbEtleSAtIFRoZSBvcmlnaW5hbCBmaWVsZCBrZXkgZnJvbSBCZXR0ZXJBdXRoIHNjaGVtYVxuICAgKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIHJlbmFtZWQgZmllbGQgYXMgdXNlZCBpbiBQYXlsb2FkIENNU1xuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgSUQgdmFsdWUgdG8gbm9ybWFsaXplIChwcmltaXRpdmUsIG9iamVjdCwgb3IgYXJyYXkpXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemVEb2N1bWVudElkcyhyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9yaWdpbmFsS2V5OiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gQ2FzZSAxOiBQcmltaXRpdmUgSUQgdmFsdWUgKHN0cmluZyBvciBudW1iZXIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gRm9yIEJldHRlckF1dGg6IEFsd2F5cyB1c2Ugc3RyaW5nIElEc1xuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBLZWVwIG9yaWdpbmFsIHR5cGVcbiAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWVcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc2UgMjogT2JqZWN0IHdpdGggSUQgcHJvcGVydHlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAvLyBGb3IgQmV0dGVyQXV0aDogRXh0cmFjdCBhbmQgc3RyaW5naWZ5IHRoZSBJRFxuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZS5pZClcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBFeHRyYWN0IElEIGJ1dCBwcmVzZXJ2ZSB0eXBlXG4gICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlLmlkXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNlIDM6IEFycmF5IG9mIElEcyBvciByZWZlcmVuY2VzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENoZWNrIGlmIGFycmF5IGNvbnRhaW5zIG9iamVjdHMgd2l0aCBJRCBwcm9wZXJ0aWVzXG4gICAgICBpZiAodmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsICYmICdpZCcgaW4gaXRlbSkpIHtcbiAgICAgICAgLy8gQXJyYXkgb2Ygb2JqZWN0cyB3aXRoIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbS5pZCkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtLmlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXJyYXkgb2YgcHJpbWl0aXZlIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbSkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm90ZTogSWYgdmFsdWUgZG9lc24ndCBtYXRjaCBhbnkgZXhwZWN0ZWQgZm9ybWF0LCBubyBjaGFuZ2VzIGFyZSBtYWRlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHRvIHRoZSBlcXVpdmFsZW50IFBheWxvYWQgQ01TIHF1ZXJ5IG9wZXJhdG9yXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gbWFwcyBzdGFuZGFyZCBxdWVyeSBvcGVyYXRvcnMgZnJvbSBCZXR0ZXJBdXRoJ3MgZm9ybWF0IHRvXG4gICAqIHRoZSBzcGVjaWZpYyBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBlbmdpbmUuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRvciAtIFRoZSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHN0cmluZyAoZS5nLiwgJ2VxJywgJ2d0JywgJ2NvbnRhaW5zJylcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHVzZWQgd2l0aCB0aGUgb3BlcmF0b3JcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIFBheWxvYWQtY29tcGF0aWJsZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB7IGVxdWFsczogJ3Rlc3RAZXhhbXBsZS5jb20nIH1cbiAgICogb3BlcmF0b3JUb1BheWxvYWQoJ2VxJywgJ3Rlc3RAZXhhbXBsZS5jb20nKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIHsgZ3JlYXRlcl90aGFuOiAxMDAgfVxuICAgKiBvcGVyYXRvclRvUGF5bG9hZCgnZ3QnLCAxMDApXG4gICAqL1xuICBmdW5jdGlvbiBvcGVyYXRvclRvUGF5bG9hZChvcGVyYXRvcjogc3RyaW5nLCB2YWx1ZTogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSAnZXEnOlxuICAgICAgICByZXR1cm4geyBlcXVhbHM6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ25lJzpcbiAgICAgICAgcmV0dXJuIHsgbm90X2VxdWFsczogdmFsdWUgfVxuICAgICAgY2FzZSAnZ3QnOlxuICAgICAgICByZXR1cm4geyBncmVhdGVyX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2d0ZSc6XG4gICAgICAgIHJldHVybiB7IGdyZWF0ZXJfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnbHQnOlxuICAgICAgICByZXR1cm4geyBsZXNzX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2x0ZSc6XG4gICAgICAgIHJldHVybiB7IGxlc3NfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICByZXR1cm4geyBjb250YWluczogdmFsdWUgfVxuICAgICAgY2FzZSAnaW4nOlxuICAgICAgICByZXR1cm4geyBpbjogdmFsdWUgfVxuICAgICAgY2FzZSAnc3RhcnRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJHt2YWx1ZX0lYCB9XG4gICAgICBjYXNlICdlbmRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJSR7dmFsdWV9YCB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZXF1YWxzIGZvciB1bnJlY29nbml6ZWQgb3BlcmF0b3JzXG4gICAgICAgIHJldHVybiB7IGVxdWFsczogdmFsdWUgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdoZXJlIGNsYXVzZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZSBiYXNlZCBvbiBmaWVsZCBuYW1lIGFuZCBJRCB0eXBlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHR3byBtYWluIHNjZW5hcmlvczpcbiAgICogMS4gSUQgZmllbGQgY29udmVyc2lvbiAtIGVuc3VyZXMgSURzIG1hdGNoIHRoZSBkYXRhYmFzZSdzIGV4cGVjdGVkIHR5cGUgKG51bWJlciBvciBzdHJpbmcpXG4gICAqIDIuIE9iamVjdCB3aXRoIGVtYmVkZGVkIElEIC0gZXh0cmFjdHMgYW5kIGNvbnZlcnRzIHRoZSBJRCBwcm9wZXJ0eSBmcm9tIG9iamVjdHNcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgKGNhbiBiZSBwcmltaXRpdmUsIG9iamVjdCB3aXRoIElELCBvciBhcnJheSlcbiAgICogQHBhcmFtIGZpZWxkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBiZWluZyBxdWVyaWVkXG4gICAqIEBwYXJhbSBpZFR5cGUgLSBUaGUgZXhwZWN0ZWQgSUQgdHlwZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCB2YWx1ZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGRhdGFiYXNlIHF1ZXJ5XG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0V2hlcmVWYWx1ZSh7IHZhbHVlLCBmaWVsZE5hbWUsIGlkVHlwZSB9OiB7IHZhbHVlOiBhbnk7IGZpZWxkTmFtZTogc3RyaW5nOyBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnIH0pIHtcbiAgICAvLyBDaGVjayBpZiBmaWVsZCBpcyBhbiBJRCBmaWVsZCAoc3VwcG9ydGluZyBib3RoIE1vbmdvREItc3R5bGUgX2lkIGFuZCBzdGFuZGFyZCBpZClcbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhmaWVsZE5hbWUpKSB7XG4gICAgICAvLyBDYXNlIDE6IFZhbHVlIGlzIGFuIG9iamVjdCBjb250YWluaW5nIGFuIElEIHByb3BlcnR5XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBvYmplY3RcbiAgICAgICAgY29uc3QgaWQgPSB2YWx1ZS5pZFxuXG4gICAgICAgIC8vIFVzZSB0eXBlIGNvbnZlcnNpb24gYmFzZWQgb24gZGF0YWJhc2UgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoaWRUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgbnVtSWQgPSBOdW1iZXIoaWQpXG4gICAgICAgICAgcmV0dXJuICFpc05hTihudW1JZCkgPyBudW1JZCA6IGlkXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaWQpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWRcbiAgICAgIH1cbiAgICAgIC8vIENhc2UgMjogVmFsdWUgaXMgYSBzdGFuZGFsb25lIElEIHRoYXQgbmVlZHMgdHlwZSBjb252ZXJzaW9uXG4gICAgICAvLyBDb252ZXJ0IHN0cmluZyBJRCB0byBudW1iZXIgaWYgZGF0YWJhc2UgZXhwZWN0cyBudW1lcmljIElEc1xuICAgICAgaWYgKGlkVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSlcbiAgICAgIH1cbiAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBJRCB0byBzdHJpbmcgaWYgZGF0YWJhc2UgZXhwZWN0cyB0ZXh0IElEc1xuICAgICAgZWxzZSBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgLy8gRm9yIG5vbi1JRCBmaWVsZHMsIHJldHVybiB0aGUgdmFsdWUgdW5jaGFuZ2VkXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgQmV0dGVyIEF1dGggd2hlcmUgY2xhdXNlcyB0byBQYXlsb2FkIENNUyBjb21wYXRpYmxlIHdoZXJlIGNvbmRpdGlvbnNcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBCZXR0ZXIgQXV0aCBxdWVyeSBmb3JtYXQgaW50byBQYXlsb2FkJ3MgcXVlcnkgZm9ybWF0LFxuICAgKiBoYW5kbGluZyBmaWVsZCBuYW1lIG1hcHBpbmcsIHZhbHVlIHR5cGUgY29udmVyc2lvbiwgYW5kIGxvZ2ljYWwgb3BlcmF0b3JzIChBTkQvT1IpLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaGFuZGxlcyB0aHJlZSBtYWluIGNhc2VzOlxuICAgKiAxLiBFbXB0eSBvciB1bmRlZmluZWQgd2hlcmUgY2xhdXNlIC0gcmV0dXJucyBlbXB0eSBvYmplY3RcbiAgICogMi4gU2luZ2xlIGNvbmRpdGlvbiAtIGNvbnZlcnRzIHRvIGEgc2ltcGxlIGZpZWxkLXZhbHVlIHBhaXJcbiAgICogMy4gTXVsdGlwbGUgY29uZGl0aW9ucyAtIGdyb3VwcyBieSBBTkQvT1IgY29ubmVjdG9ycyBhbmQgYnVpbGRzIGEgY29tcGxleCBxdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGRhdGFiYXNlIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBxdWVyeVxuICAgKiBAcGFyYW0gd2hlcmUgLSBBcnJheSBvZiBCZXR0ZXIgQXV0aCB3aGVyZSBjb25kaXRpb25zXG4gICAqIEByZXR1cm5zIEEgUGF5bG9hZC1jb21wYXRpYmxlIHdoZXJlIGNsYXVzZSBvYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGNvbnZlcnRXaGVyZUNsYXVzZSh7IGlkVHlwZSwgbW9kZWwsIHdoZXJlIH06IHsgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0JzsgbW9kZWw6IE1vZGVsS2V5OyB3aGVyZT86IFdoZXJlW10gfSk6IFBheWxvYWRXaGVyZSB7XG4gICAgLy8gSGFuZGxlIGVtcHR5IHdoZXJlIGNsYXVzZVxuICAgIGlmICghd2hlcmUpIHJldHVybiB7fVxuXG4gICAgLy8gSGFuZGxlIHNpbmdsZSBjb25kaXRpb24gY2FzZSBmb3Igb3B0aW1pemF0aW9uXG4gICAgaWYgKHdoZXJlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgdyA9IHdoZXJlWzBdXG4gICAgICBpZiAoIXcpIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgICB9XG5cbiAgICAgIC8vIE1hcCBmaWVsZCBuYW1lIGFjY29yZGluZyB0byBzY2hlbWEgYW5kIGNvbnZlcnQgdmFsdWUgdG8gYXBwcm9wcmlhdGUgdHlwZVxuICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0RmllbGROYW1lKG1vZGVsLCB3LmZpZWxkKVxuICAgICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0V2hlcmVWYWx1ZSh7XG4gICAgICAgIHZhbHVlOiB3LnZhbHVlLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGlkVHlwZVxuICAgICAgfSlcblxuICAgICAgLy8gQ3JlYXRlIHRoZSBQYXlsb2FkIHdoZXJlIGNvbmRpdGlvbiB3aXRoIHByb3BlciBvcGVyYXRvclxuICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICBbZmllbGROYW1lXTogb3BlcmF0b3JUb1BheWxvYWQody5vcGVyYXRvciA/PyAnJywgdmFsdWUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgbXVsdGlwbGUgY29uZGl0aW9ucyBieSBzZXBhcmF0aW5nIEFORC9PUiBjbGF1c2VzXG4gICAgLy8gRGVmYXVsdCB0byBBTkQgaWYgbm8gY29ubmVjdG9yIGlzIHNwZWNpZmllZFxuICAgIGNvbnN0IGFuZCA9IHdoZXJlLmZpbHRlcigodykgPT4gdy5jb25uZWN0b3IgPT09ICdBTkQnIHx8ICF3LmNvbm5lY3RvcilcbiAgICBjb25zdCBvciA9IHdoZXJlLmZpbHRlcigodykgPT4gdy5jb25uZWN0b3IgPT09ICdPUicpXG5cbiAgICAvLyBQcm9jZXNzIEFORCBjb25kaXRpb25zXG4gICAgY29uc3QgYW5kQ2xhdXNlID0gYW5kLm1hcCgodykgPT4ge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0RmllbGROYW1lKG1vZGVsLCB3LmZpZWxkKVxuICAgICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0V2hlcmVWYWx1ZSh7XG4gICAgICAgIHZhbHVlOiB3LnZhbHVlLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGlkVHlwZVxuICAgICAgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtmaWVsZE5hbWVdOiBvcGVyYXRvclRvUGF5bG9hZCh3Lm9wZXJhdG9yID8/ICcnLCB2YWx1ZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gUHJvY2VzcyBPUiBjb25kaXRpb25zXG4gICAgY29uc3Qgb3JDbGF1c2UgPSBvci5tYXAoKHcpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbZmllbGROYW1lXTogb3BlcmF0b3JUb1BheWxvYWQody5vcGVyYXRvciA/PyAnJywgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIENvbWJpbmUgQU5EIGFuZCBPUiBjbGF1c2VzIGludG8gZmluYWwgUGF5bG9hZCB3aGVyZSBvYmplY3RcbiAgICAvLyBPbmx5IGluY2x1ZGUgbm9uLWVtcHR5IGNsYXVzZSBhcnJheXNcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGFuZENsYXVzZS5sZW5ndGggPyB7IEFORDogYW5kQ2xhdXNlIH0gOiB7fSksXG4gICAgICAuLi4ob3JDbGF1c2UubGVuZ3RoID8geyBPUjogb3JDbGF1c2UgfSA6IHt9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGJldHRlci1hdXRoIHNlbGVjdCBhcnJheSB0byBhIFBheWxvYWQgc2VsZWN0IG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgdGhlIGJldHRlci1hdXRoIHNlbGVjdCBhcnJheSAod2hpY2ggY29udGFpbnMgZmllbGQgbmFtZXMpXG4gICAqIGludG8gdGhlIGZvcm1hdCBleHBlY3RlZCBieSBQYXlsb2FkIENNUydzIHF1ZXJ5IEFQSSAoYW4gb2JqZWN0IHdpdGggZmllbGQgbmFtZXMgYXMga2V5c1xuICAgKiBhbmQgYm9vbGVhbiB0cnVlIGFzIHZhbHVlcykuXG4gICAqXG4gICAqIEl0IGFsc28gaGFuZGxlcyBmaWVsZCBuYW1lIG1hcHBpbmcgYmV0d2VlbiBiZXR0ZXItYXV0aCBzY2hlbWEgYW5kIFBheWxvYWQgY29sbGVjdGlvbnNcbiAgICogYnkgdXNpbmcgdGhlIGdldEZpZWxkTmFtZSBoZWxwZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVjdCBmaWVsZCBuYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBnZXQgZmllbGQgbWFwcGluZ3MgZnJvbVxuICAgKiBAcGFyYW0gc2VsZWN0IC0gT3B0aW9uYWwgYXJyYXkgb2YgZmllbGQgbmFtZXMgdG8gc2VsZWN0XG4gICAqIEByZXR1cm5zIEEgUGF5bG9hZC1jb21wYXRpYmxlIHNlbGVjdCBvYmplY3Qgb3IgdW5kZWZpbmVkIGlmIG5vIGZpZWxkcyB0byBzZWxlY3RcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSW5wdXQ6IFsnZW1haWwnLCAnbmFtZSddXG4gICAqIC8vIE91dHB1dDogeyBlbWFpbDogdHJ1ZSwgbmFtZTogdHJ1ZSB9XG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0U2VsZWN0KG1vZGVsOiBNb2RlbEtleSwgc2VsZWN0Pzogc3RyaW5nW10pIHtcbiAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGlmIHNlbGVjdCBpcyBlbXB0eSBvciBub3QgcHJvdmlkZWRcbiAgICBpZiAoIXNlbGVjdCB8fCBzZWxlY3QubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIGFycmF5IG9mIGZpZWxkIG5hbWVzIGludG8gYSBQYXlsb2FkIHNlbGVjdCBvYmplY3RcbiAgICAvLyB3aGlsZSBhbHNvIG1hcHBpbmcgYW55IGZpZWxkIG5hbWVzIHRoYXQgbWlnaHQgYmUgZGlmZmVyZW50IGluIFBheWxvYWRcbiAgICByZXR1cm4gc2VsZWN0LnJlZHVjZSgoYWNjLCBmaWVsZCkgPT4gKHsgLi4uYWNjLCBbZ2V0RmllbGROYW1lKG1vZGVsLCBmaWVsZCldOiB0cnVlIH0pLCB7fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGJldHRlci1hdXRoIHNvcnQgb2JqZWN0IHRvIGEgUGF5bG9hZCBzb3J0IHN0cmluZ1xuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgdGhlIGJldHRlci1hdXRoIHNvcnQgb2JqZWN0ICh3aGljaCBjb250YWlucyBmaWVsZCBuYW1lIGFuZCBkaXJlY3Rpb24pXG4gICAqIGludG8gdGhlIGZvcm1hdCBleHBlY3RlZCBieSBQYXlsb2FkIENNUydzIHF1ZXJ5IEFQSSAoYSBzdHJpbmcgd2l0aCBvcHRpb25hbCAnLScgcHJlZml4IGZvciBkZXNjZW5kaW5nIG9yZGVyKS5cbiAgICpcbiAgICogSXQgYWxzbyBoYW5kbGVzIGZpZWxkIG5hbWUgbWFwcGluZyBiZXR3ZWVuIGJldHRlci1hdXRoIHNjaGVtYSBhbmQgUGF5bG9hZCBjb2xsZWN0aW9uc1xuICAgKiBieSB1c2luZyB0aGUgZ2V0RmllbGROYW1lIGhlbHBlciB0byByZXNvbHZlIHRoZSBjb3JyZWN0IGZpZWxkIG5hbWVzLlxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgbW9kZWwvY29sbGVjdGlvbiBuYW1lIHRvIGdldCBmaWVsZCBtYXBwaW5ncyBmcm9tXG4gICAqIEBwYXJhbSBzb3J0QnkgLSBPcHRpb25hbCBvYmplY3QgY29udGFpbmluZyBmaWVsZCBuYW1lIGFuZCBzb3J0IGRpcmVjdGlvblxuICAgKiBAcmV0dXJucyBBIFBheWxvYWQtY29tcGF0aWJsZSBzb3J0IHN0cmluZyBvciB1bmRlZmluZWQgaWYgbm8gc29ydCBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSW5wdXQ6IHsgZmllbGQ6ICdlbWFpbCcsIGRpcmVjdGlvbjogJ2Rlc2MnIH1cbiAgICogLy8gT3V0cHV0OiAnLWVtYWlsJ1xuICAgKiAvLyBJbnB1dDogeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2FzYycgfVxuICAgKiAvLyBPdXRwdXQ6ICdjcmVhdGVkQXQnXG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0U29ydChtb2RlbDogTW9kZWxLZXksIHNvcnRCeT86IHsgZmllbGQ6IHN0cmluZzsgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNvcnRCeSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgc29ydEJ5LmZpZWxkKVxuICAgIGNvbnN0IHByZWZpeCA9IHNvcnRCeS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICctJyA6ICcnXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke2ZpZWxkTmFtZX1gXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdldEZpZWxkTmFtZSxcbiAgICBnZXRDb2xsZWN0aW9uU2x1ZyxcbiAgICBzaW5nbGVJZFF1ZXJ5LFxuICAgIHRyYW5zZm9ybUlucHV0LFxuICAgIHRyYW5zZm9ybU91dHB1dCxcbiAgICBjb252ZXJ0V2hlcmVDbGF1c2UsXG4gICAgY29udmVydFNlbGVjdCxcbiAgICBjb252ZXJ0U29ydFxuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0QXV0aFRhYmxlcyIsImNyZWF0ZVRyYW5zZm9ybSIsIm9wdGlvbnMiLCJlbmFibGVEZWJ1Z0xvZ3MiLCJzY2hlbWEiLCJkZWJ1Z0xvZyIsIm1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiZ2V0Q29sbGVjdGlvblNsdWciLCJtb2RlbCIsImNvbGxlY3Rpb24iLCJtb2RlbE5hbWUiLCJyZXNvbHZlZFNsdWciLCJnZXRGaWVsZE5hbWUiLCJmaWVsZCIsImluY2x1ZGVzIiwiZmllbGREZWZpbml0aW9uIiwiZmllbGRzIiwiZmllbGROYW1lIiwib3JpZ2luYWxGaWVsZCIsImlzUmVsYXRpb25zaGlwRmllbGQiLCJmaWVsZEtleSIsInNjaGVtYUZpZWxkcyIsInJlZmVyZW5jZXMiLCJ1bmRlZmluZWQiLCJzaW5nbGVJZFF1ZXJ5Iiwid2hlcmUiLCJzb21lIiwiaWRGaWVsZCIsImNvbmRpdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsInZhbHVlIiwiZXF1YWxzIiwiY29udGFpbnMiLCJsZW5ndGgiLCJub3JtYWxpemVEYXRhIiwia2V5IiwiaXNSZWxhdGVkRmllbGQiLCJpZFR5cGUiLCJwYXJzZWQiLCJwYXJzZUludCIsImlzTmFOIiwib3JpZ2luYWwiLCJjb252ZXJ0ZWQiLCJzdHJpbmdJZCIsIlN0cmluZyIsIm1hcCIsImlkIiwidHJhbnNmb3JtSW5wdXQiLCJkYXRhIiwidHJhbnNmb3JtZWREYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJzY2hlbWFGaWVsZE5hbWUiLCJub3JtYWxpemVkRGF0YSIsInRhcmdldEZpZWxkTmFtZSIsInRyYW5zZm9ybU91dHB1dCIsImRvYyIsInJlc3VsdCIsInJlbGF0aW9uc2hpcEZpZWxkcyIsImZyb21FbnRyaWVzIiwiZmlsdGVyIiwiZGF0ZUZpZWxkcyIsIl8iLCJ0eXBlIiwib3JpZ2luYWxSZWxhdGVkRmllbGRLZXkiLCJrZXlzIiwiZmluZCIsImsiLCJub3JtYWxpemVEb2N1bWVudElkcyIsIm9yaWdpbmFsRGF0ZUZpZWxkS2V5IiwiRGF0ZSIsIm9yaWdpbmFsS2V5IiwiZXZlcnkiLCJpdGVtIiwib3BlcmF0b3JUb1BheWxvYWQiLCJvcGVyYXRvciIsIm5vdF9lcXVhbHMiLCJncmVhdGVyX3RoYW4iLCJncmVhdGVyX3RoYW5fZXF1YWwiLCJsZXNzX3RoYW4iLCJsZXNzX3RoYW5fZXF1YWwiLCJpbiIsImxpa2UiLCJjb252ZXJ0V2hlcmVWYWx1ZSIsIm51bUlkIiwiTnVtYmVyIiwiY29udmVydFdoZXJlQ2xhdXNlIiwidyIsInJlcyIsImFuZCIsImNvbm5lY3RvciIsIm9yIiwiYW5kQ2xhdXNlIiwib3JDbGF1c2UiLCJBTkQiLCJPUiIsImNvbnZlcnRTZWxlY3QiLCJzZWxlY3QiLCJyZWR1Y2UiLCJhY2MiLCJjb252ZXJ0U29ydCIsInNvcnRCeSIsInByZWZpeCIsImRpcmVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFRLGlCQUFnQjtBQU05QyxPQUFPLE1BQU1DLGtCQUFrQixDQUFDQyxTQUE0QkM7SUFDMUQsTUFBTUMsU0FBU0osY0FBY0U7SUFFN0IsU0FBU0csU0FBU0MsT0FBYztRQUM5QixJQUFJSCxpQkFBaUI7WUFDbkJJLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUtGO1FBQ3pDO0lBQ0Y7SUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCQyxHQUNELFNBQVNHLGtCQUFrQkMsS0FBZTtRQUN4Qyw2RkFBNkY7UUFDN0YsTUFBTUMsYUFBYVAsUUFBUSxDQUFDTSxNQUFNLEVBQUVFLGFBQWFGO1FBQ2pETCxTQUFTO1lBQUM7WUFBc0I7Z0JBQUVLO2dCQUFPRyxjQUFjRjtZQUFXO1NBQUU7UUFDcEUsT0FBT0E7SUFDVDtJQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCQyxHQUNELFNBQVNHLGFBQWFKLEtBQWUsRUFBRUssS0FBYTtRQUNsRCx3REFBd0Q7UUFDeEQsSUFBSTtZQUFDO1lBQU07U0FBTSxDQUFDQyxRQUFRLENBQUNELFFBQVE7WUFDakMsT0FBT0E7UUFDVDtRQUVBLGtDQUFrQztRQUNsQyxNQUFNRSxrQkFBa0JiLE1BQU0sQ0FBQ00sTUFBTSxFQUFFUSxNQUFNLENBQUNILE1BQU07UUFFcEQsNkVBQTZFO1FBQzdFLE1BQU1JLFlBQVlGLGlCQUFpQkUsYUFBYUo7UUFFaEQseUNBQXlDO1FBQ3pDVixTQUFTO1lBQUM7WUFBYztnQkFBRUs7Z0JBQU9VLGVBQWVMO2dCQUFPSTtZQUFVO1NBQUU7UUFFbkUsT0FBT0E7SUFDVDtJQUVB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
|
|
664
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3RyYW5zZm9ybS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBdXRoVGFibGVzIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgdHlwZSB7IE1vZGVsS2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhPcHRpb25zLCBXaGVyZSB9IGZyb20gJ2JldHRlci1hdXRoJ1xuaW1wb3J0IHR5cGUgeyBEQkZpZWxkQXR0cmlidXRlIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgdHlwZSB7IEJhc2VQYXlsb2FkLCBDb2xsZWN0aW9uU2x1ZywgV2hlcmUgYXMgUGF5bG9hZFdoZXJlIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB7XG4gIGdldENvbGxlY3Rpb25CeU1vZGVsS2V5LFxuICBnZXRDb2xsZWN0aW9uRmllbGROYW1lQnlGaWVsZEtleVVudHlwZWQsXG4gIGdldEZpZWxkS2V5QnlDb2xsZWN0aW9uRmllbGROYW1lXG59IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2hlbHBlcnMvZ2V0LWNvbGxlY3Rpb24nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUcmFuc2Zvcm0gPSAob3B0aW9uczogQmV0dGVyQXV0aE9wdGlvbnMsIGVuYWJsZURlYnVnTG9nczogYm9vbGVhbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSBnZXRBdXRoVGFibGVzKG9wdGlvbnMpXG5cbiAgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55W10pIHtcbiAgICBpZiAoZW5hYmxlRGVidWdMb2dzKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW3BheWxvYWQtZGItYWRhcHRlcl1gLCAuLi5tZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgQmV0dGVyQXV0aCBzY2hlbWEgbW9kZWwgbmFtZSB0byBpdHMgY29ycmVzcG9uZGluZyBQYXlsb2FkIENNUyBjb2xsZWN0aW9uIHNsdWcuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gcmVzb2x2ZXMgdGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24gc2x1ZyBieTpcbiAgICogMS4gTG9va2luZyB1cCB0aGUgbW9kZWwgaW4gdGhlIEJldHRlckF1dGggc2NoZW1hIHRvIGZpbmQgaXRzIGNvbmZpZ3VyZWQgbW9kZWxOYW1lXG4gICAqIDIuIEZhbGxpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgbW9kZWwgbmFtZSBpZiBubyBtYXBwaW5nIGV4aXN0c1xuICAgKlxuICAgKiBDb2xsZWN0aW9uIHNsdWcgcmVzb2x1dGlvbiBmb2xsb3dzIHRoZXNlIHJ1bGVzOlxuICAgKiAtIEZvciBiYXNlIGNvbGxlY3Rpb25zOiBUaGUgc2FuaXRpemVCZXR0ZXJBdXRoT3B0aW9ucyBmdW5jdGlvbiBlbnN1cmVzIHRoZSBjb2xsZWN0aW9uIHNsdWdcbiAgICogICBmcm9tIHBsdWdpbiBvcHRpb25zIGlzIHNldCBhcyB0aGUgbW9kZWwgbmFtZSBpbiB0aGUgc2NoZW1hXG4gICAqIC0gRm9yIHBsdWdpbnM6IFRoZSBiZXR0ZXJBdXRoUGx1Z2luU2x1Z3MgY29uc3RhbnQgaXMgdXNlZCBhcyB0aGUgbW9kZWxOYW1lXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBCZXR0ZXJBdXRoIG1vZGVsIG5hbWUgdG8gcmVzb2x2ZVxuICAgKiBAcmV0dXJucyBUaGUgY29ycmVzcG9uZGluZyBQYXlsb2FkIENNUyBjb2xsZWN0aW9uIHNsdWdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgc2NoZW1hWyd1c2VyJ10ubW9kZWxOYW1lIGlzICd1c2VycydcbiAgICogZ2V0Q29sbGVjdGlvblNsdWcoJ3VzZXInKSAvLyBSZXR1cm5zICd1c2VycydcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgbW9kZWwgZG9lc24ndCBleGlzdCBpbiBzY2hlbWFcbiAgICogZ2V0Q29sbGVjdGlvblNsdWcoJ2N1c3RvbScpIC8vIFJldHVybnMgJ2N1c3RvbSdcbiAgICpcbiAgICogQHdhcm5pbmcgSWYgYSBjb2xsZWN0aW9uIGlzIG92ZXJyaWRkZW4gdXNpbmcgdGhlIGNvbGxlY3Rpb25PdmVycmlkZSBvcHRpb25cbiAgICogd2l0aG91dCB1cGRhdGluZyB0aGUgc2NoZW1hIG1hcHBpbmcsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBpbmNvcnJlY3Qgc2x1Z3NcbiAgICovXG4gIGZ1bmN0aW9uIGdldENvbGxlY3Rpb25TbHVnKG1vZGVsOiBNb2RlbEtleSk6IENvbGxlY3Rpb25TbHVnIHtcbiAgICAvLyBGaXJzdCB0cnkgdG8gZ2V0IHRoZSBtb2RlbE5hbWUgZnJvbSBzY2hlbWEsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFsIG1vZGVsIG5hbWVcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gc2NoZW1hPy5bbW9kZWxdPy5tb2RlbE5hbWUgfHwgbW9kZWxcbiAgICBkZWJ1Z0xvZyhbJ2dldENvbGxlY3Rpb25TbHVnOicsIHsgbW9kZWwsIHJlc29sdmVkU2x1ZzogY29sbGVjdGlvbiB9XSlcbiAgICByZXR1cm4gY29sbGVjdGlvbiBhcyBDb2xsZWN0aW9uU2x1Z1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBCZXR0ZXJBdXRoIHNjaGVtYSBmaWVsZCB0byBpdHMgY29ycmVzcG9uZGluZyBQYXlsb2FkIENNUyBmaWVsZCBuYW1lLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJlc29sdmVzIHRoZSBhcHByb3ByaWF0ZSBmaWVsZCBuYW1lIGJ5OlxuICAgKiAxLiBQcmVzZXJ2aW5nICdpZCcgb3IgJ19pZCcgZmllbGRzIGFzLWlzIChzcGVjaWFsIGNhc2UgaGFuZGxpbmcpXG4gICAqIDIuIExvb2tpbmcgdXAgdGhlIGZpZWxkIGluIHRoZSBCZXR0ZXJBdXRoIHNjaGVtYSB0byBmaW5kIGl0cyBjb25maWd1cmVkIGZpZWxkTmFtZVxuICAgKiAzLiBGYWxsaW5nIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGZpZWxkIG5hbWUgaWYgbm8gbWFwcGluZyBleGlzdHNcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIEJldHRlckF1dGggbW9kZWwgbmFtZSBjb250YWluaW5nIHRoZSBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgLSBUaGUgb3JpZ2luYWwgZmllbGQgbmFtZSB0byByZXNvbHZlXG4gICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGZpZWxkIG5hbWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgc2NoZW1hWyd1c2VyJ10uZmllbGRzWydlbWFpbCddLmZpZWxkTmFtZSBpcyAnZW1haWxBZGRyZXNzJ1xuICAgKiBnZXRGaWVsZE5hbWUoJ3VzZXInLCAnZW1haWwnKSAvLyBSZXR1cm5zICdlbWFpbEFkZHJlc3MnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFNwZWNpYWwgY2FzZSBmb3IgSUQgZmllbGRzXG4gICAqIGdldEZpZWxkTmFtZSgndXNlcicsICdpZCcpIC8vIEFsd2F5cyByZXR1cm5zICdpZCdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgZmllbGQgZG9lc24ndCBleGlzdCBpbiBzY2hlbWEgb3IgaGFzIG5vIGZpZWxkTmFtZSBtYXBwaW5nXG4gICAqIGdldEZpZWxkTmFtZSgndXNlcicsICdjdXN0b20nKSAvLyBSZXR1cm5zICdjdXN0b20nXG4gICAqXG4gICAqIEB3YXJuaW5nIElmIGEgZmllbGROYW1lIGlzIG92ZXJyaWRkZW4gaW4gdGhlIHBheWxvYWQgY29sbGVjdGlvbiBjb25maWcgdXNpbmcgdGhlIGNvbGxlY3Rpb25PdmVycmlkZSBvcHRpb25cbiAgICogd2l0aG91dCB1cGRhdGluZyB0aGUgc2NoZW1hIG1hcHBpbmcsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBpbmNvcnJlY3QgZmllbGQgbmFtZXNcbiAgICovXG4gIGZ1bmN0aW9uIGdldEZpZWxkTmFtZShtb2RlbDogTW9kZWxLZXksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogJ2lkJyBvciAnX2lkJyBpcyBhbHdheXMgcHJlc2VydmVkIGFzLWlzXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoZmllbGQpKSB7XG4gICAgICByZXR1cm4gZmllbGRcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHRoZSBmaWVsZCBpbiB0aGUgc2NoZW1hXG4gICAgY29uc3QgZmllbGREZWZpbml0aW9uID0gc2NoZW1hW21vZGVsXT8uZmllbGRzW2ZpZWxkXVxuXG4gICAgLy8gVXNlIHRoZSBjb25maWd1cmVkIGZpZWxkTmFtZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gb3JpZ2luYWxcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZERlZmluaXRpb24/LmZpZWxkTmFtZSB8fCBmaWVsZFxuXG4gICAgLy8gTG9nIHRoZSBmaWVsZCByZXNvbHV0aW9uIGZvciBkZWJ1Z2dpbmdcbiAgICBkZWJ1Z0xvZyhbJ2dldEZpZWxkOiAnLCB7IG1vZGVsLCBvcmlnaW5hbEZpZWxkOiBmaWVsZCwgZmllbGROYW1lIH1dKVxuXG4gICAgcmV0dXJuIGZpZWxkTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZCBieSBjaGVja2luZyBmb3IgYSByZWZlcmVuY2VzIHByb3BlcnR5LlxuICAgKlxuICAgKiBSZWxhdGlvbnNoaXAgZmllbGRzIGluIHRoZSBzY2hlbWEgaGF2ZSBhICdyZWZlcmVuY2VzJyBwcm9wZXJ0eSB0aGF0IHBvaW50cyB0byBhbm90aGVyIG1vZGVsLlxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGlzIHByb3BlcnR5IGV4aXN0cyB0byBpZGVudGlmeSByZWxhdGlvbnNoaXAgZmllbGRzLlxuICAgKlxuICAgKiBAcGFyYW0gZmllbGRLZXkgLSBUaGUga2V5IG9mIHRoZSBmaWVsZCB0byBjaGVjayBpbiB0aGUgc2NoZW1hXG4gICAqIEBwYXJhbSBzY2hlbWFGaWVsZHMgLSBPYmplY3QgY29udGFpbmluZyBhbGwgZmllbGRzIGZyb20gdGhlIHNjaGVtYSBmb3IgYSBzcGVjaWZpYyBtb2RlbFxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZCAoaGFzIHJlZmVyZW5jZXMpLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSWYgc2NoZW1hLnVzZXIuZmllbGRzLnBvc3RzIGhhcyB7IHJlZmVyZW5jZXM6IHt9IH1cbiAgICogaXNSZWxhdGlvbnNoaXBGaWVsZCgncG9zdHMnLCBzY2hlbWEudXNlci5maWVsZHMpIC8vIFJldHVybnMgdHJ1ZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWEudXNlci5maWVsZHMuZW1haWwgaGFzIG5vIHJlZmVyZW5jZXMgcHJvcGVydHlcbiAgICogaXNSZWxhdGlvbnNoaXBGaWVsZCgnZW1haWwnLCBzY2hlbWEudXNlci5maWVsZHMpIC8vIFJldHVybnMgZmFsc2VcbiAgICovXG4gIGZ1bmN0aW9uIGlzUmVsYXRpb25zaGlwRmllbGQoZmllbGRLZXk6IHN0cmluZywgc2NoZW1hRmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBEQkZpZWxkQXR0cmlidXRlPik6IGJvb2xlYW4ge1xuICAgIC8vIEEgZmllbGQgaXMgYSByZWxhdGlvbnNoaXAgZmllbGQgaWYgaXQgaGFzIGEgJ3JlZmVyZW5jZXMnIHByb3BlcnR5IGRlZmluZWRcbiAgICByZXR1cm4gc2NoZW1hRmllbGRzW2ZpZWxkS2V5XT8ucmVmZXJlbmNlcyAhPT0gdW5kZWZpbmVkXG4gIH1cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGEgc2luZ2xlIElEIHZhbHVlIGZyb20gYSBQYXlsb2FkIHdoZXJlIGNsYXVzZSBpZiBpdCByZXByZXNlbnRzIGEgc2ltcGxlIElEIHF1ZXJ5LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGFuYWx5emVzIGEgUGF5bG9hZCB3aGVyZSBjbGF1c2UgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSBzaW1wbGUgcXVlcnkgZm9yIGFcbiAgICogc2luZ2xlIGRvY3VtZW50IGJ5IElELiBJdCBzdXBwb3J0cyBib3RoICdpZCcgYW5kICdfaWQnIGZpZWxkcyB3aXRoICdlcXVhbHMnIG9yICdjb250YWlucydcbiAgICogb3BlcmF0b3JzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igb3B0aW1pemluZyBxdWVyaWVzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGZldGNoIGEgc2luZ2xlIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gd2hlcmUgLSBUaGUgUGF5bG9hZCB3aGVyZSBjbGF1c2UgdG8gYW5hbHl6ZVxuICAgKiBAcmV0dXJucyBUaGUgSUQgdmFsdWUgKHN0cmluZyBvciBudW1iZXIpIGlmIHRoZSB3aGVyZSBjbGF1c2UgaXMgYSBzaW1wbGUgSUQgcXVlcnksIG51bGwgb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgJzEyMycgZm9yIGEgc2ltcGxlIGVxdWFscyBxdWVyeVxuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgaWQ6IHsgZXF1YWxzOiAnMTIzJyB9IH0pIC8vICcxMjMnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgNDU2IGZvciBhIHNpbXBsZSBlcXVhbHMgcXVlcnkgd2l0aCBudW1iZXIgSURcbiAgICogc2luZ2xlSWRRdWVyeSh7IF9pZDogeyBlcXVhbHM6IDQ1NiB9IH0pIC8vIDQ1NlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zICc3ODknIGZvciBhIGNvbnRhaW5zIHF1ZXJ5IHdpdGggYSBzaW5nbGUgdmFsdWVcbiAgICogc2luZ2xlSWRRdWVyeSh7IGlkOiB7IGNvbnRhaW5zOiBbJzc4OSddIH0gfSkgLy8gJzc4OSdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyBudWxsIGZvciBjb21wbGV4IHF1ZXJpZXNcbiAgICogc2luZ2xlSWRRdWVyeSh7IGFuZDogW3sgaWQ6IHsgZXF1YWxzOiAnMTIzJyB9IH1dIH0pIC8vIG51bGxcbiAgICovXG4gIGZ1bmN0aW9uIHNpbmdsZUlkUXVlcnkod2hlcmU6IFBheWxvYWRXaGVyZSkge1xuICAgIC8vIFJldHVybiBudWxsIGZvciBlbXB0eSB3aGVyZSBjbGF1c2VzIG9yIGNvbXBsZXggcXVlcmllcyB3aXRoICdhbmQnLydvcicgb3BlcmF0b3JzXG4gICAgaWYgKCF3aGVyZSB8fCAnYW5kJyBpbiB3aGVyZSB8fCAnb3InIGluIHdoZXJlKSByZXR1cm4gbnVsbFxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHdoZXJlIGNsYXVzZSBjb250YWlucyBlaXRoZXIgJ2lkJyBvciAnX2lkJyBmaWVsZFxuICAgIGlmIChbJ2lkJywgJ19pZCddLnNvbWUoKGZpZWxkKSA9PiBmaWVsZCBpbiB3aGVyZSkpIHtcbiAgICAgIC8vIERldGVybWluZSB3aGljaCBJRCBmaWVsZCBpcyBiZWluZyB1c2VkIChzdXBwb3J0IGJvdGggJ2lkJyBhbmQgJ19pZCcpXG4gICAgICBjb25zdCBpZEZpZWxkID0gJ2lkJyBpbiB3aGVyZSA/ICdpZCcgOiAnX2lkJ1xuICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbaWRGaWVsZF1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgZXF1YWxzIG9wZXJhdG9yIGNhc2VcbiAgICAgIGlmIChjb25kaXRpb24gJiYgdHlwZW9mIGNvbmRpdGlvbiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSAmJiAnZXF1YWxzJyBpbiBjb25kaXRpb24pIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb25kaXRpb24uZXF1YWxzXG4gICAgICAgIC8vIE9ubHkgcmV0dXJuIHN0cmluZyBvciBudW1iZXIgSUQgdmFsdWVzXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBjb250YWlucyBvcGVyYXRvciBjYXNlIHdpdGggYSBzaW5nbGUgdmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgY29uZGl0aW9uICYmXG4gICAgICAgIHR5cGVvZiBjb25kaXRpb24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KGNvbmRpdGlvbikgJiZcbiAgICAgICAgJ2NvbnRhaW5zJyBpbiBjb25kaXRpb24gJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb25kaXRpb24uY29udGFpbnMpICYmXG4gICAgICAgIGNvbmRpdGlvbi5jb250YWlucy5sZW5ndGggPT09IDFcbiAgICAgICkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmRpdGlvbi5jb250YWluc1swXVxuICAgICAgICAvLyBPbmx5IHJldHVybiBzdHJpbmcgb3IgbnVtYmVyIElEIHZhbHVlc1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gbnVsbCBpZiBubyB2YWxpZCBJRCBxdWVyeSB3YXMgZm91bmRcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgZGF0YSB2YWx1ZXMgYmFzZWQgb24gZmllbGQgdHlwZSBhbmQgcmVxdWlyZWQgSUQgdHlwZVxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdHlwZSBjb252ZXJzaW9uIGZvciByZWxhdGlvbnNoaXAgZmllbGRzIHRvIGVuc3VyZVxuICAgKiBJRHMgYXJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdCAoc3RyaW5nIG9yIG51bWJlcikgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgZmllbGQga2V5L25hbWVcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIG5vcm1hbGl6ZVxuICAgKiBAcGFyYW0gaXNSZWxhdGVkRmllbGQgLSBXaGV0aGVyIHRoaXMgZmllbGQgaXMgYSByZWxhdGlvbnNoaXAgZmllbGRcbiAgICogQHBhcmFtIGlkVHlwZSAtIFRoZSBleHBlY3RlZCBJRCB0eXBlICgnbnVtYmVyJyBvciAndGV4dCcpXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemVEYXRhKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgaXNSZWxhdGVkRmllbGQsXG4gICAgaWRUeXBlXG4gIH06IHtcbiAgICBrZXk6IHN0cmluZ1xuICAgIHZhbHVlOiBhbnlcbiAgICBpc1JlbGF0ZWRGaWVsZDogYm9vbGVhblxuICAgIGlkVHlwZTogJ251bWJlcicgfCAndGV4dCdcbiAgfSkge1xuICAgIC8vIFNraXAgcHJvY2Vzc2luZyBmb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChbJ2lkJywgJ19pZCddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIGlkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFsdWUsIDEwKVxuICAgICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIHN0cmluZyBJRCB0byBudW1iZXJgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBwYXJzZWQgfV0pXG4gICAgICAgICAgcmV0dXJuIHBhcnNlZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpZFR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICBjb25zdCBzdHJpbmdJZCA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgZGVidWdMb2coW2BJRCBjb252ZXJzaW9uOiAke2tleX0gY29udmVydGluZyBudW1iZXIgSUQgdG8gc3RyaW5nYCwgeyBvcmlnaW5hbDogdmFsdWUsIGNvbnZlcnRlZDogc3RyaW5nSWQgfV0pXG4gICAgICAgIHJldHVybiBzdHJpbmdJZFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9ubHkgcHJvY2VzcyByZWxhdGlvbnNoaXAgZmllbGRzIHRoYXQgbmVlZCB0eXBlIGNvbnZlcnNpb25cbiAgICBpZiAoaXNSZWxhdGVkRmllbGQpIHtcbiAgICAgIC8vIEhhbmRsZSBzaW5nbGUgSUQgdmFsdWUgY29udmVyc2lvblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgaWRUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApXG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICAgIGRlYnVnTG9nKFtgSUQgY29udmVyc2lvbjogJHtrZXl9IGNvbnZlcnRpbmcgc3RyaW5nIElEIHRvIG51bWJlcmAsIHsgb3JpZ2luYWw6IHZhbHVlLCBjb252ZXJ0ZWQ6IHBhcnNlZCB9XSlcbiAgICAgICAgICByZXR1cm4gcGFyc2VkXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpZFR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICBjb25zdCBzdHJpbmdJZCA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgZGVidWdMb2coW2BJRCBjb252ZXJzaW9uOiAke2tleX0gY29udmVydGluZyBudW1iZXIgSUQgdG8gc3RyaW5nYCwgeyBvcmlnaW5hbDogdmFsdWUsIGNvbnZlcnRlZDogc3RyaW5nSWQgfV0pXG4gICAgICAgIHJldHVybiBzdHJpbmdJZFxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgYXJyYXkgb2YgSURzIC0gbWFwIGVhY2ggdmFsdWUgdG8gdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGlkKSA9PiB7XG4gICAgICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCB2YWx1ZXMgaW4gYXJyYXlzXG4gICAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHJldHVybiBpZFxuXG4gICAgICAgICAgaWYgKGlkVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoaWQsIDEwKVxuICAgICAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZWQpID8gcGFyc2VkIDogaWRcbiAgICAgICAgICB9IGVsc2UgaWYgKGlkVHlwZSA9PT0gJ3RleHQnICYmIHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoaWQpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpZFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSByb2xlIGZpZWxkcyAoQ29taW5nIGZyb20gYmV0dGVyIGF1dGgsIHdpbGwgYmUgYSBzaW5nbGUgc3RyaW5nIHNlcGVyYXRlZCBieSBjb21tYXMgaWYgdGhlcmVzIG11bHRpcGxlIHJvbGVzKVxuICAgIGlmIChrZXkgPT09ICdyb2xlJyB8fCBrZXkgPT09ICdyb2xlcycpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcCgocm9sZTogc3RyaW5nKSA9PiByb2xlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKVxuICAgIH1cblxuICAgIC8vIFJldHVybiBvcmlnaW5hbCB2YWx1ZSBpZiBubyBjb252ZXJzaW9uIHdhcyBuZWVkZWQgb3IgYXBwbGljYWJsZVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgaW5wdXQgZGF0YSBmcm9tIGJldHRlci1hdXRoIHRvIFBheWxvYWQgQ01TIGZvcm1hdFxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXM6XG4gICAqIDEuIEZpZWxkIG5hbWUgbWFwcGluZyBhY2NvcmRpbmcgdG8gc2NoZW1hIGRlZmluaXRpb25zXG4gICAqIDIuIElEIHR5cGUgY29udmVyc2lvbiBmb3IgcmVsYXRpb25zaGlwIGZpZWxkc1xuICAgKiAzLiBQcm9wZXIgZGF0YSBub3JtYWxpemF0aW9uIGJhc2VkIG9uIGZpZWxkIHR5cGVzXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGlucHV0IGRhdGEgZnJvbSBiZXR0ZXItYXV0aFxuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgbW9kZWwgbmFtZSBpbiB0aGUgc2NoZW1hXG4gICAqIEBwYXJhbSBpZFR5cGUgLSBUaGUgZXhwZWN0ZWQgSUQgdHlwZSAoJ251bWJlcicgb3IgJ3RleHQnKVxuICAgKiBAcmV0dXJucyBUcmFuc2Zvcm1lZCBkYXRhIGNvbXBhdGlibGUgd2l0aCBQYXlsb2FkIENNU1xuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtSW5wdXQoe1xuICAgIGRhdGEsXG4gICAgbW9kZWwsXG4gICAgaWRUeXBlLFxuICAgIHBheWxvYWRcbiAgfToge1xuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICBtb2RlbDogTW9kZWxLZXlcbiAgICBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnXG4gICAgcGF5bG9hZDogQmFzZVBheWxvYWRcbiAgfSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gICAgY29uc3Qgc2NoZW1hRmllbGRzID0gc2NoZW1hPy5bbW9kZWxdPy5maWVsZHMgPz8ge31cblxuICAgIC8vIFByb2Nlc3MgZWFjaCBmaWVsZCBpbiB0aGUgaW5wdXQgZGF0YVxuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZFxuICAgICAgY29uc3QgaXNSZWxhdGVkRmllbGQgPSBpc1JlbGF0aW9uc2hpcEZpZWxkKGtleSwgc2NoZW1hRmllbGRzKVxuXG4gICAgICAvLyBHZXQgdGhlIG1hcHBlZCBmaWVsZCBuYW1lIGZyb20gc2NoZW1hIChpZiBhbnkpXG4gICAgICBjb25zdCBzY2hlbWFGaWVsZE5hbWUgPSBzY2hlbWFGaWVsZHNba2V5XT8uZmllbGROYW1lXG5cbiAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgZGF0YSB2YWx1ZSBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCBJRCB0eXBlXG4gICAgICBjb25zdCBub3JtYWxpemVkRGF0YSA9IG5vcm1hbGl6ZURhdGEoe1xuICAgICAgICBpZFR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGlzUmVsYXRlZEZpZWxkXG4gICAgICB9KVxuXG4gICAgICAvLyBVc2UgdGhlIHNjaGVtYS1kZWZpbmVkIGZpZWxkIG5hbWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgdXNlIG9yaWdpbmFsIGtleVxuICAgICAgY29uc3QgdGFyZ2V0RmllbGROYW1lID0gc2NoZW1hRmllbGROYW1lIHx8IGtleVxuICAgICAgY29uc3QgdGFyZ2V0RmllbGRLZXkgPSBnZXRDb2xsZWN0aW9uRmllbGROYW1lQnlGaWVsZEtleVVudHlwZWQoZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkocGF5bG9hZC5jb2xsZWN0aW9ucywgbW9kZWwpLCB0YXJnZXRGaWVsZE5hbWUpXG4gICAgICB0cmFuc2Zvcm1lZERhdGFbdGFyZ2V0RmllbGRLZXldID0gbm9ybWFsaXplZERhdGFcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgUGF5bG9hZCBDTVMgZG9jdW1lbnQgb3V0cHV0IHRvIG1hdGNoIEJldHRlckF1dGggc2NoZW1hIGV4cGVjdGF0aW9ucy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHNldmVyYWwgY3JpdGljYWwgdHJhbnNmb3JtYXRpb25zOlxuICAgKlxuICAgKiAxLiBJRCBDb252ZXJzaW9uOiBFbnN1cmVzIGFsbCBJRCBmaWVsZHMgYXJlIHN0cmluZ3MgYXMgcmVxdWlyZWQgYnkgQmV0dGVyQXV0aFxuICAgKiAgICAoc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmV0dGVyLWF1dGgvYmV0dGVyLWF1dGgvYmxvYi9tYWluL3BhY2thZ2VzL2JldHRlci1hdXRoL3NyYy9kYi9zY2hlbWEudHMjTDEyNSlcbiAgICpcbiAgICogMi4gUmVsYXRpb25zaGlwIEZpZWxkIE1hcHBpbmc6IEFsaWducyByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggQmV0dGVyQXV0aCBzY2hlbWEgbmFtaW5nIGNvbnZlbnRpb25zXG4gICAqICAgIGFuZCBlbnN1cmVzIHByb3BlciBJRCB0eXBlIGhhbmRsaW5nXG4gICAqXG4gICAqIDMuIERhdGUgQ29udmVyc2lvbjogVHJhbnNmb3JtcyBkYXRlIHN0cmluZ3MgZnJvbSBQYXlsb2FkIGludG8gRGF0ZSBvYmplY3RzIGZvciBCZXR0ZXJBdXRoXG4gICAqXG4gICAqIE5vdGU6IFdoaWxlIHNldHRpbmcgZGVwdGg6IDEgaW4gUGF5bG9hZCBvcGVyYXRpb25zIHNpbXBsaWZpZXMgdGhpcyBwcm9jZXNzIGJ5IGF2b2lkaW5nXG4gICAqIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgd2UgbWFpbnRhaW4gY29tcHJlaGVuc2l2ZSBjaGVja3MgZm9yIHJvYnVzdG5lc3MuXG4gICAqXG4gICAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgcmV0dXJuZWQgZnJvbSBQYXlsb2FkIENNU1xuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgbW9kZWwgbmFtZSBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWFcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIGRvY3VtZW50IGNvbXBhdGlibGUgd2l0aCBCZXR0ZXJBdXRoXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1PdXRwdXQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPih7XG4gICAgZG9jLFxuICAgIG1vZGVsLFxuICAgIHBheWxvYWRcbiAgfToge1xuICAgIGRvYzogVFxuICAgIG1vZGVsOiBNb2RlbEtleVxuICAgIHBheWxvYWQ6IEJhc2VQYXlsb2FkXG4gIH0pOiBUIHtcbiAgICBpZiAoIWRvYyB8fCB0eXBlb2YgZG9jICE9PSAnb2JqZWN0JykgcmV0dXJuIGRvY1xuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5kb2MgfVxuICAgIGNvbnN0IHNjaGVtYUZpZWxkcyA9IHNjaGVtYT8uW21vZGVsXT8uZmllbGRzID8/IHt9XG5cbiAgICAvLyBJZGVudGlmeSByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggY3VzdG9tIGZpZWxkIG5hbWUgbWFwcGluZ3NcbiAgICBjb25zdCByZWxhdGlvbnNoaXBGaWVsZHMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2NoZW1hRmllbGRzKS5maWx0ZXIoKFtrZXldKSA9PiBpc1JlbGF0aW9uc2hpcEZpZWxkKGtleSwgc2NoZW1hRmllbGRzKSkpXG4gICAgY29uc3QgZGF0ZUZpZWxkcyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzY2hlbWFGaWVsZHMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUudHlwZSA9PT0gJ2RhdGUnKSlcblxuICAgIC8vIEZpcnN0IG1ha2Ugc3VyZSBhbGwgdGhlIGZpZWxkcyBrZXlzIGFyZSBjb3JyZWN0XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldEZpZWxkS2V5ID0gZ2V0RmllbGRLZXlCeUNvbGxlY3Rpb25GaWVsZE5hbWUoZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkocGF5bG9hZC5jb2xsZWN0aW9ucywgbW9kZWwpLCBrZXkpXG4gICAgICBpZiAodGFyZ2V0RmllbGRLZXkgIT09IGtleSkge1xuICAgICAgICByZXN1bHRbdGFyZ2V0RmllbGRLZXldID0gcmVzdWx0W2tleV1cbiAgICAgICAgZGVsZXRlIHJlc3VsdFtrZXldXG4gICAgICB9XG4gICAgfSlcblxuICAgIE9iamVjdC5lbnRyaWVzKGRvYykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG5cbiAgICAgIC8vIENvbnZlcnQgSUQgZmllbGRzIHRvIHN0cmluZ3MgZm9yIEJldHRlckF1dGggY29tcGF0aWJpbGl0eVxuICAgICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggcmVuYW1lZCBmaWVsZE5hbWVzXG4gICAgICBjb25zdCBvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSA9IE9iamVjdC5rZXlzKHJlbGF0aW9uc2hpcEZpZWxkcykuZmluZCgoaykgPT4gcmVsYXRpb25zaGlwRmllbGRzW2tdLmZpZWxkTmFtZSA9PT0ga2V5KVxuICAgICAgaWYgKG9yaWdpbmFsUmVsYXRlZEZpZWxkS2V5KSB7XG4gICAgICAgIG5vcm1hbGl6ZURvY3VtZW50SWRzKHJlc3VsdCwgb3JpZ2luYWxSZWxhdGVkRmllbGRLZXksIGtleSwgdmFsdWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmlnaW5hbERhdGVGaWVsZEtleSA9IE9iamVjdC5rZXlzKGRhdGVGaWVsZHMpLmZpbmQoKGspID0+IGRhdGVGaWVsZHNba10uZmllbGROYW1lID09PSBrZXkpXG4gICAgICBpZiAob3JpZ2luYWxEYXRlRmllbGRLZXkpIHtcbiAgICAgICAgLy8gQ29udmVydCBJU08gZGF0ZSBzdHJpbmdzIHRvIERhdGUgb2JqZWN0cyBmb3IgQmV0dGVyQXV0aFxuICAgICAgICByZXN1bHRba2V5XSA9IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBUXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBJRCBmaWVsZHMgZm9yIGJvdGggcHJpbWFyeSBhbmQgcmVsYXRpb25zaGlwIGRvY3VtZW50cy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIGNvbnNpc3RlbnQgSUQgaGFuZGxpbmcgYmV0d2VlbiBCZXR0ZXJBdXRoIGFuZCBQYXlsb2FkIENNUyBieTpcbiAgICogMS4gQ29udmVydGluZyBhbGwgSURzIHRvIHN0cmluZ3MgZm9yIEJldHRlckF1dGggKHN0b3JlZCBpbiBvcmlnaW5hbEtleSlcbiAgICogMi4gUHJlc2VydmluZyBvcmlnaW5hbCBJRCB0eXBlcyBmb3IgUGF5bG9hZCBDTVMgKHN0b3JlZCBpbiBmaWVsZE5hbWUpXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBoYW5kbGVzIHZhcmlvdXMgSUQgZm9ybWF0czpcbiAgICogLSBQcmltaXRpdmUgdmFsdWVzIChzdHJpbmcvbnVtYmVyIElEcylcbiAgICogLSBPYmplY3QgcmVmZXJlbmNlcyB3aXRoIElEIHByb3BlcnRpZXNcbiAgICogLSBBcnJheXMgb2YgZWl0aGVyIHByaW1pdGl2ZSBJRHMgb3Igb2JqZWN0IHJlZmVyZW5jZXNcbiAgICpcbiAgICogQHBhcmFtIHJlc3VsdCAtIFRoZSByZXN1bHQgb2JqZWN0IGJlaW5nIHRyYW5zZm9ybWVkXG4gICAqIEBwYXJhbSBvcmlnaW5hbEtleSAtIFRoZSBvcmlnaW5hbCBmaWVsZCBrZXkgZnJvbSBCZXR0ZXJBdXRoIHNjaGVtYVxuICAgKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIHJlbmFtZWQgZmllbGQgYXMgdXNlZCBpbiBQYXlsb2FkIENNU1xuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgSUQgdmFsdWUgdG8gbm9ybWFsaXplIChwcmltaXRpdmUsIG9iamVjdCwgb3IgYXJyYXkpXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemVEb2N1bWVudElkcyhyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9yaWdpbmFsS2V5OiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gQ2FzZSAxOiBQcmltaXRpdmUgSUQgdmFsdWUgKHN0cmluZyBvciBudW1iZXIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gRm9yIEJldHRlckF1dGg6IEFsd2F5cyB1c2Ugc3RyaW5nIElEc1xuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBLZWVwIG9yaWdpbmFsIHR5cGVcbiAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWVcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc2UgMjogT2JqZWN0IHdpdGggSUQgcHJvcGVydHlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAvLyBGb3IgQmV0dGVyQXV0aDogRXh0cmFjdCBhbmQgc3RyaW5naWZ5IHRoZSBJRFxuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZS5pZClcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBFeHRyYWN0IElEIGJ1dCBwcmVzZXJ2ZSB0eXBlXG4gICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlLmlkXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNlIDM6IEFycmF5IG9mIElEcyBvciByZWZlcmVuY2VzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENoZWNrIGlmIGFycmF5IGNvbnRhaW5zIG9iamVjdHMgd2l0aCBJRCBwcm9wZXJ0aWVzXG4gICAgICBpZiAodmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsICYmICdpZCcgaW4gaXRlbSkpIHtcbiAgICAgICAgLy8gQXJyYXkgb2Ygb2JqZWN0cyB3aXRoIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbS5pZCkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtLmlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXJyYXkgb2YgcHJpbWl0aXZlIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbSkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm90ZTogSWYgdmFsdWUgZG9lc24ndCBtYXRjaCBhbnkgZXhwZWN0ZWQgZm9ybWF0LCBubyBjaGFuZ2VzIGFyZSBtYWRlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHRvIHRoZSBlcXVpdmFsZW50IFBheWxvYWQgQ01TIHF1ZXJ5IG9wZXJhdG9yXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gbWFwcyBzdGFuZGFyZCBxdWVyeSBvcGVyYXRvcnMgZnJvbSBCZXR0ZXJBdXRoJ3MgZm9ybWF0IHRvXG4gICAqIHRoZSBzcGVjaWZpYyBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBlbmdpbmUuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRvciAtIFRoZSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHN0cmluZyAoZS5nLiwgJ2VxJywgJ2d0JywgJ2NvbnRhaW5zJylcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHVzZWQgd2l0aCB0aGUgb3BlcmF0b3JcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIFBheWxvYWQtY29tcGF0aWJsZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB7IGVxdWFsczogJ3Rlc3RAZXhhbXBsZS5jb20nIH1cbiAgICogb3BlcmF0b3JUb1BheWxvYWQoJ2VxJywgJ3Rlc3RAZXhhbXBsZS5jb20nKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIHsgZ3JlYXRlcl90aGFuOiAxMDAgfVxuICAgKiBvcGVyYXRvclRvUGF5bG9hZCgnZ3QnLCAxMDApXG4gICAqL1xuICBmdW5jdGlvbiBvcGVyYXRvclRvUGF5bG9hZChvcGVyYXRvcjogc3RyaW5nLCB2YWx1ZTogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSAnZXEnOlxuICAgICAgICByZXR1cm4geyBlcXVhbHM6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ25lJzpcbiAgICAgICAgcmV0dXJuIHsgbm90X2VxdWFsczogdmFsdWUgfVxuICAgICAgY2FzZSAnZ3QnOlxuICAgICAgICByZXR1cm4geyBncmVhdGVyX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2d0ZSc6XG4gICAgICAgIHJldHVybiB7IGdyZWF0ZXJfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnbHQnOlxuICAgICAgICByZXR1cm4geyBsZXNzX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2x0ZSc6XG4gICAgICAgIHJldHVybiB7IGxlc3NfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICByZXR1cm4geyBjb250YWluczogdmFsdWUgfVxuICAgICAgY2FzZSAnaW4nOlxuICAgICAgICByZXR1cm4geyBpbjogdmFsdWUgfVxuICAgICAgY2FzZSAnc3RhcnRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJHt2YWx1ZX0lYCB9XG4gICAgICBjYXNlICdlbmRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJSR7dmFsdWV9YCB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZXF1YWxzIGZvciB1bnJlY29nbml6ZWQgb3BlcmF0b3JzXG4gICAgICAgIHJldHVybiB7IGVxdWFsczogdmFsdWUgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdoZXJlIGNsYXVzZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZSBiYXNlZCBvbiBmaWVsZCBuYW1lIGFuZCBJRCB0eXBlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHR3byBtYWluIHNjZW5hcmlvczpcbiAgICogMS4gSUQgZmllbGQgY29udmVyc2lvbiAtIGVuc3VyZXMgSURzIG1hdGNoIHRoZSBkYXRhYmFzZSdzIGV4cGVjdGVkIHR5cGUgKG51bWJlciBvciBzdHJpbmcpXG4gICAqIDIuIE9iamVjdCB3aXRoIGVtYmVkZGVkIElEIC0gZXh0cmFjdHMgYW5kIGNvbnZlcnRzIHRoZSBJRCBwcm9wZXJ0eSBmcm9tIG9iamVjdHNcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgKGNhbiBiZSBwcmltaXRpdmUsIG9iamVjdCB3aXRoIElELCBvciBhcnJheSlcbiAgICogQHBhcmFtIGZpZWxkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBiZWluZyBxdWVyaWVkXG4gICAqIEBwYXJhbSBpZFR5cGUgLSBUaGUgZXhwZWN0ZWQgSUQgdHlwZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCB2YWx1ZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGRhdGFiYXNlIHF1ZXJ5XG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0V2hlcmVWYWx1ZSh7IHZhbHVlLCBmaWVsZE5hbWUsIGlkVHlwZSB9OiB7IHZhbHVlOiBhbnk7IGZpZWxkTmFtZTogc3RyaW5nOyBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnIH0pIHtcbiAgICAvLyBDaGVjayBpZiBmaWVsZCBpcyBhbiBJRCBmaWVsZCAoc3VwcG9ydGluZyBib3RoIE1vbmdvREItc3R5bGUgX2lkIGFuZCBzdGFuZGFyZCBpZClcbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhmaWVsZE5hbWUpKSB7XG4gICAgICAvLyBDYXNlIDE6IFZhbHVlIGlzIGFuIG9iamVjdCBjb250YWluaW5nIGFuIElEIHByb3BlcnR5XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBvYmplY3RcbiAgICAgICAgY29uc3QgaWQgPSB2YWx1ZS5pZFxuXG4gICAgICAgIC8vIFVzZSB0eXBlIGNvbnZlcnNpb24gYmFzZWQgb24gZGF0YWJhc2UgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoaWRUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgbnVtSWQgPSBOdW1iZXIoaWQpXG4gICAgICAgICAgcmV0dXJuICFpc05hTihudW1JZCkgPyBudW1JZCA6IGlkXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaWQpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWRcbiAgICAgIH1cbiAgICAgIC8vIENhc2UgMjogVmFsdWUgaXMgYSBzdGFuZGFsb25lIElEIHRoYXQgbmVlZHMgdHlwZSBjb252ZXJzaW9uXG4gICAgICAvLyBDb252ZXJ0IHN0cmluZyBJRCB0byBudW1iZXIgaWYgZGF0YWJhc2UgZXhwZWN0cyBudW1lcmljIElEc1xuICAgICAgaWYgKGlkVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSlcbiAgICAgIH1cbiAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBJRCB0byBzdHJpbmcgaWYgZGF0YWJhc2UgZXhwZWN0cyB0ZXh0IElEc1xuICAgICAgZWxzZSBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgLy8gRm9yIG5vbi1JRCBmaWVsZHMsIHJldHVybiB0aGUgdmFsdWUgdW5jaGFuZ2VkXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgQmV0dGVyIEF1dGggd2hlcmUgY2xhdXNlcyB0byBQYXlsb2FkIENNUyBjb21wYXRpYmxlIHdoZXJlIGNvbmRpdGlvbnNcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBCZXR0ZXIgQXV0aCBxdWVyeSBmb3JtYXQgaW50byBQYXlsb2FkJ3MgcXVlcnkgZm9ybWF0LFxuICAgKiBoYW5kbGluZyBmaWVsZCBuYW1lIG1hcHBpbmcsIHZhbHVlIHR5cGUgY29udmVyc2lvbiwgYW5kIGxvZ2ljYWwgb3BlcmF0b3JzIChBTkQvT1IpLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaGFuZGxlcyB0aHJlZSBtYWluIGNhc2VzOlxuICAgKiAxLiBFbXB0eSBvciB1bmRlZmluZWQgd2hlcmUgY2xhdXNlIC0gcmV0dXJucyBlbXB0eSBvYmplY3RcbiAgICogMi4gU2luZ2xlIGNvbmRpdGlvbiAtIGNvbnZlcnRzIHRvIGEgc2ltcGxlIGZpZWxkLXZhbHVlIHBhaXJcbiAgICogMy4gTXVsdGlwbGUgY29uZGl0aW9ucyAtIGdyb3VwcyBieSBBTkQvT1IgY29ubmVjdG9ycyBhbmQgYnVpbGRzIGEgY29tcGxleCBxdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGRhdGFiYXNlIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBxdWVyeVxuICAgKiBAcGFyYW0gd2hlcmUgLSBBcnJheSBvZiBCZXR0ZXIgQXV0aCB3aGVyZSBjb25kaXRpb25zXG4gICAqIEByZXR1cm5zIEEgUGF5bG9hZC1jb21wYXRpYmxlIHdoZXJlIGNsYXVzZSBvYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgaWRUeXBlLFxuICAgIG1vZGVsLFxuICAgIHdoZXJlLFxuICAgIHBheWxvYWRcbiAgfToge1xuICAgIGlkVHlwZTogJ251bWJlcicgfCAndGV4dCdcbiAgICBtb2RlbDogTW9kZWxLZXlcbiAgICB3aGVyZT86IFdoZXJlW11cbiAgICBwYXlsb2FkOiBCYXNlUGF5bG9hZFxuICB9KTogUGF5bG9hZFdoZXJlIHtcbiAgICAvLyBIYW5kbGUgZW1wdHkgd2hlcmUgY2xhdXNlXG4gICAgaWYgKCF3aGVyZSkgcmV0dXJuIHt9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXlsb2FkRmllbGROYW1lKGZpZWxkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5VW50eXBlZChnZXRDb2xsZWN0aW9uQnlNb2RlbEtleShwYXlsb2FkLmNvbGxlY3Rpb25zLCBtb2RlbCksIGZpZWxkS2V5KVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzaW5nbGUgY29uZGl0aW9uIGNhc2UgZm9yIG9wdGltaXphdGlvblxuICAgIGlmICh3aGVyZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHcgPSB3aGVyZVswXVxuICAgICAgaWYgKCF3KSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgICAgfVxuXG4gICAgICAvLyBNYXAgZmllbGQgbmFtZSBhY2NvcmRpbmcgdG8gc2NoZW1hIGFuZCBjb252ZXJ0IHZhbHVlIHRvIGFwcHJvcHJpYXRlIHR5cGVcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgUGF5bG9hZCB3aGVyZSBjb25kaXRpb24gd2l0aCBwcm9wZXIgb3BlcmF0b3JcbiAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgW2dldFBheWxvYWRGaWVsZE5hbWUoZmllbGROYW1lKV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG11bHRpcGxlIGNvbmRpdGlvbnMgYnkgc2VwYXJhdGluZyBBTkQvT1IgY2xhdXNlc1xuICAgIC8vIERlZmF1bHQgdG8gQU5EIGlmIG5vIGNvbm5lY3RvciBpcyBzcGVjaWZpZWRcbiAgICBjb25zdCBhbmQgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnQU5EJyB8fCAhdy5jb25uZWN0b3IpXG4gICAgY29uc3Qgb3IgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnT1InKVxuXG4gICAgLy8gUHJvY2VzcyBBTkQgY29uZGl0aW9uc1xuICAgIGNvbnN0IGFuZENsYXVzZSA9IGFuZC5tYXAoKHcpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbZ2V0UGF5bG9hZEZpZWxkTmFtZShmaWVsZE5hbWUpXTogb3BlcmF0b3JUb1BheWxvYWQody5vcGVyYXRvciA/PyAnJywgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIFByb2Nlc3MgT1IgY29uZGl0aW9uc1xuICAgIGNvbnN0IG9yQ2xhdXNlID0gb3IubWFwKCh3KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRGaWVsZE5hbWUobW9kZWwsIHcuZmllbGQpXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRXaGVyZVZhbHVlKHtcbiAgICAgICAgdmFsdWU6IHcudmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgaWRUeXBlXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2dldFBheWxvYWRGaWVsZE5hbWUoZmllbGROYW1lKV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBDb21iaW5lIEFORCBhbmQgT1IgY2xhdXNlcyBpbnRvIGZpbmFsIFBheWxvYWQgd2hlcmUgb2JqZWN0XG4gICAgLy8gT25seSBpbmNsdWRlIG5vbi1lbXB0eSBjbGF1c2UgYXJyYXlzXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihhbmRDbGF1c2UubGVuZ3RoID8geyBBTkQ6IGFuZENsYXVzZSB9IDoge30pLFxuICAgICAgLi4uKG9yQ2xhdXNlLmxlbmd0aCA/IHsgT1I6IG9yQ2xhdXNlIH0gOiB7fSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgdG8gYSBQYXlsb2FkIHNlbGVjdCBvYmplY3RcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgKHdoaWNoIGNvbnRhaW5zIGZpZWxkIG5hbWVzKVxuICAgKiBpbnRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBBUEkgKGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXNcbiAgICogYW5kIGJvb2xlYW4gdHJ1ZSBhcyB2YWx1ZXMpLlxuICAgKlxuICAgKiBJdCBhbHNvIGhhbmRsZXMgZmllbGQgbmFtZSBtYXBwaW5nIGJldHdlZW4gYmV0dGVyLWF1dGggc2NoZW1hIGFuZCBQYXlsb2FkIGNvbGxlY3Rpb25zXG4gICAqIGJ5IHVzaW5nIHRoZSBnZXRGaWVsZE5hbWUgaGVscGVyIHRvIHJlc29sdmUgdGhlIGNvcnJlY3QgZmllbGQgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbC9jb2xsZWN0aW9uIG5hbWUgdG8gZ2V0IGZpZWxkIG1hcHBpbmdzIGZyb21cbiAgICogQHBhcmFtIHNlbGVjdCAtIE9wdGlvbmFsIGFycmF5IG9mIGZpZWxkIG5hbWVzIHRvIHNlbGVjdFxuICAgKiBAcmV0dXJucyBBIFBheWxvYWQtY29tcGF0aWJsZSBzZWxlY3Qgb2JqZWN0IG9yIHVuZGVmaW5lZCBpZiBubyBmaWVsZHMgdG8gc2VsZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElucHV0OiBbJ2VtYWlsJywgJ25hbWUnXVxuICAgKiAvLyBPdXRwdXQ6IHsgZW1haWw6IHRydWUsIG5hbWU6IHRydWUgfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFNlbGVjdChtb2RlbDogTW9kZWxLZXksIHNlbGVjdD86IHN0cmluZ1tdKSB7XG4gICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBzZWxlY3QgaXMgZW1wdHkgb3Igbm90IHByb3ZpZGVkXG4gICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBhcnJheSBvZiBmaWVsZCBuYW1lcyBpbnRvIGEgUGF5bG9hZCBzZWxlY3Qgb2JqZWN0XG4gICAgLy8gd2hpbGUgYWxzbyBtYXBwaW5nIGFueSBmaWVsZCBuYW1lcyB0aGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBpbiBQYXlsb2FkXG4gICAgcmV0dXJuIHNlbGVjdC5yZWR1Y2UoKGFjYywgZmllbGQpID0+ICh7IC4uLmFjYywgW2dldEZpZWxkTmFtZShtb2RlbCwgZmllbGQpXTogdHJ1ZSB9KSwge30pXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiZXR0ZXItYXV0aCBzb3J0IG9iamVjdCB0byBhIFBheWxvYWQgc29ydCBzdHJpbmdcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBiZXR0ZXItYXV0aCBzb3J0IG9iamVjdCAod2hpY2ggY29udGFpbnMgZmllbGQgbmFtZSBhbmQgZGlyZWN0aW9uKVxuICAgKiBpbnRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBBUEkgKGEgc3RyaW5nIHdpdGggb3B0aW9uYWwgJy0nIHByZWZpeCBmb3IgZGVzY2VuZGluZyBvcmRlcikuXG4gICAqXG4gICAqIEl0IGFsc28gaGFuZGxlcyBmaWVsZCBuYW1lIG1hcHBpbmcgYmV0d2VlbiBiZXR0ZXItYXV0aCBzY2hlbWEgYW5kIFBheWxvYWQgY29sbGVjdGlvbnNcbiAgICogYnkgdXNpbmcgdGhlIGdldEZpZWxkTmFtZSBoZWxwZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVjdCBmaWVsZCBuYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBnZXQgZmllbGQgbWFwcGluZ3MgZnJvbVxuICAgKiBAcGFyYW0gc29ydEJ5IC0gT3B0aW9uYWwgb2JqZWN0IGNvbnRhaW5pbmcgZmllbGQgbmFtZSBhbmQgc29ydCBkaXJlY3Rpb25cbiAgICogQHJldHVybnMgQSBQYXlsb2FkLWNvbXBhdGlibGUgc29ydCBzdHJpbmcgb3IgdW5kZWZpbmVkIGlmIG5vIHNvcnQgc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElucHV0OiB7IGZpZWxkOiAnZW1haWwnLCBkaXJlY3Rpb246ICdkZXNjJyB9XG4gICAqIC8vIE91dHB1dDogJy1lbWFpbCdcbiAgICogLy8gSW5wdXQ6IHsgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdhc2MnIH1cbiAgICogLy8gT3V0cHV0OiAnY3JlYXRlZEF0J1xuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFNvcnQobW9kZWw6IE1vZGVsS2V5LCBzb3J0Qnk/OiB7IGZpZWxkOiBzdHJpbmc7IGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzb3J0QnkpIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRGaWVsZE5hbWUobW9kZWwsIHNvcnRCeS5maWVsZClcbiAgICBjb25zdCBwcmVmaXggPSBzb3J0QnkuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnLScgOiAnJ1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtmaWVsZE5hbWV9YFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRGaWVsZE5hbWUsXG4gICAgZ2V0Q29sbGVjdGlvblNsdWcsXG4gICAgc2luZ2xlSWRRdWVyeSxcbiAgICB0cmFuc2Zvcm1JbnB1dCxcbiAgICB0cmFuc2Zvcm1PdXRwdXQsXG4gICAgY29udmVydFdoZXJlQ2xhdXNlLFxuICAgIGNvbnZlcnRTZWxlY3QsXG4gICAgY29udmVydFNvcnRcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldEF1dGhUYWJsZXMiLCJnZXRDb2xsZWN0aW9uQnlNb2RlbEtleSIsImdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5VW50eXBlZCIsImdldEZpZWxkS2V5QnlDb2xsZWN0aW9uRmllbGROYW1lIiwiY3JlYXRlVHJhbnNmb3JtIiwib3B0aW9ucyIsImVuYWJsZURlYnVnTG9ncyIsInNjaGVtYSIsImRlYnVnTG9nIiwibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJnZXRDb2xsZWN0aW9uU2x1ZyIsIm1vZGVsIiwiY29sbGVjdGlvbiIsIm1vZGVsTmFtZSIsInJlc29sdmVkU2x1ZyIsImdldEZpZWxkTmFtZSIsImZpZWxkIiwiaW5jbHVkZXMiLCJmaWVsZERlZmluaXRpb24iLCJmaWVsZHMiLCJmaWVsZE5hbWUiLCJvcmlnaW5hbEZpZWxkIiwiaXNSZWxhdGlvbnNoaXBGaWVsZCIsImZpZWxkS2V5Iiwic2NoZW1hRmllbGRzIiwicmVmZXJlbmNlcyIsInVuZGVmaW5lZCIsInNpbmdsZUlkUXVlcnkiLCJ3aGVyZSIsInNvbWUiLCJpZEZpZWxkIiwiY29uZGl0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwidmFsdWUiLCJlcXVhbHMiLCJjb250YWlucyIsImxlbmd0aCIsIm5vcm1hbGl6ZURhdGEiLCJrZXkiLCJpc1JlbGF0ZWRGaWVsZCIsImlkVHlwZSIsInBhcnNlZCIsInBhcnNlSW50IiwiaXNOYU4iLCJvcmlnaW5hbCIsImNvbnZlcnRlZCIsInN0cmluZ0lkIiwiU3RyaW5nIiwibWFwIiwiaWQiLCJzcGxpdCIsInJvbGUiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJ0cmFuc2Zvcm1JbnB1dCIsImRhdGEiLCJwYXlsb2FkIiwidHJhbnNmb3JtZWREYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJzY2hlbWFGaWVsZE5hbWUiLCJub3JtYWxpemVkRGF0YSIsInRhcmdldEZpZWxkTmFtZSIsInRhcmdldEZpZWxkS2V5IiwiY29sbGVjdGlvbnMiLCJ0cmFuc2Zvcm1PdXRwdXQiLCJkb2MiLCJyZXN1bHQiLCJyZWxhdGlvbnNoaXBGaWVsZHMiLCJmcm9tRW50cmllcyIsImZpbHRlciIsImRhdGVGaWVsZHMiLCJfIiwidHlwZSIsImtleXMiLCJvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSIsImZpbmQiLCJrIiwibm9ybWFsaXplRG9jdW1lbnRJZHMiLCJvcmlnaW5hbERhdGVGaWVsZEtleSIsIkRhdGUiLCJvcmlnaW5hbEtleSIsImV2ZXJ5IiwiaXRlbSIsIm9wZXJhdG9yVG9QYXlsb2FkIiwib3BlcmF0b3IiLCJub3RfZXF1YWxzIiwiZ3JlYXRlcl90aGFuIiwiZ3JlYXRlcl90aGFuX2VxdWFsIiwibGVzc190aGFuIiwibGVzc190aGFuX2VxdWFsIiwiaW4iLCJsaWtlIiwiY29udmVydFdoZXJlVmFsdWUiLCJudW1JZCIsIk51bWJlciIsImNvbnZlcnRXaGVyZUNsYXVzZSIsImdldFBheWxvYWRGaWVsZE5hbWUiLCJ3IiwicmVzIiwiYW5kIiwiY29ubmVjdG9yIiwib3IiLCJhbmRDbGF1c2UiLCJvckNsYXVzZSIsIkFORCIsIk9SIiwiY29udmVydFNlbGVjdCIsInNlbGVjdCIsInJlZHVjZSIsImFjYyIsImNvbnZlcnRTb3J0Iiwic29ydEJ5IiwicHJlZml4IiwiZGlyZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLFFBQVEsaUJBQWdCO0FBSzlDLFNBQ0VDLHVCQUF1QixFQUN2QkMsdUNBQXVDLEVBQ3ZD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-better-auth-schema.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-better-auth-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"get-better-auth-schema.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-better-auth-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAIrE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,uBAAuB,GAAG,iBAAiB,CA4DpG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getAuthTables } from "better-auth/db";
|
|
2
|
-
import { baModelFieldKeysToFieldNames } from "../constants";
|
|
2
|
+
import { baModelFieldKeysToFieldNames, baModelKey, defaults } from "../constants";
|
|
3
3
|
import { getDefaultCollectionSlug } from "./get-collection-slug";
|
|
4
|
+
import { set } from "../utils/set";
|
|
4
5
|
/**
|
|
5
6
|
* A consistent BetterAuth schema generator.
|
|
6
7
|
*
|
|
@@ -18,6 +19,12 @@ import { getDefaultCollectionSlug } from "./get-collection-slug";
|
|
|
18
19
|
* @returns A map keyed by static table keys, each value containing `{ modelName, fields, order }`.
|
|
19
20
|
*/ export function getDefaultBetterAuthSchema(pluginOptions) {
|
|
20
21
|
const betterAuthOptions = pluginOptions.betterAuthOptions ?? {};
|
|
22
|
+
// We need to add the additional role field to the user schema here or else the built collections will not pick it up.
|
|
23
|
+
set(betterAuthOptions, `${baModelKey.user}.additionalFields.role`, {
|
|
24
|
+
type: 'string',
|
|
25
|
+
defaultValue: pluginOptions.users?.defaultRole || defaults.userRole,
|
|
26
|
+
input: false
|
|
27
|
+
});
|
|
21
28
|
const tables = getAuthTables(betterAuthOptions);
|
|
22
29
|
const schema = {};
|
|
23
30
|
for (const modelKey of Object.keys(tables)){
|
|
@@ -65,4 +72,4 @@ import { getDefaultCollectionSlug } from "./get-collection-slug";
|
|
|
65
72
|
return schema;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtYmV0dGVyLWF1dGgtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsS2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnXG5pbXBvcnQgeyB0eXBlIERCRmllbGRBdHRyaWJ1dGUsIGdldEF1dGhUYWJsZXMgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB7IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMsIGJhTW9kZWxLZXksIGRlZmF1bHRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMsIEJldHRlckF1dGhTY2hlbWFzIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29sbGVjdGlvblNsdWcgfSBmcm9tICcuL2dldC1jb2xsZWN0aW9uLXNsdWcnXG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuLi91dGlscy9zZXQnXG5cbi8qKlxuICogQSBjb25zaXN0ZW50IEJldHRlckF1dGggc2NoZW1hIGdlbmVyYXRvci5cbiAqXG4gKiBEaWZmZXJlbmNlcyBmcm9tIHRoZSBvcmlnaW5hbCBgZ2V0U2NoZW1hYCBpbXBsZW1lbnRhdGlvbiBpbiBCZXR0ZXJBdXRoOlxuICogMS4gS2V5cyBpbiB0aGUgcmV0dXJuZWQgb2JqZWN0IGFyZSBhbHdheXMgdGhlICoqc3RhdGljIHRhYmxlIGlkZW50aWZpZXJzKiogY29taW5nIGZyb21cbiAqICAgIGBnZXRBdXRoVGFibGVzYCwgbmV2ZXIgdGhlIHBvc3NpYmx5LW92ZXJyaWRkZW4gYG1vZGVsTmFtZWAuICBUaGlzIGd1YXJhbnRlZXMgdGhhdFxuICogICAgc3Vic2VxdWVudCBsb29rLXVwcyByZW1haW4gc3RhYmxlIGV2ZW4gaWYgdGhlIHVzZXIgcmVuYW1lcyBjb2xsZWN0aW9ucy5cbiAqIDIuIEVhY2ggc2NoZW1hIGVudHJ5IG5vdyBjb250YWlucyBhbiBleHBsaWNpdCBgbW9kZWxOYW1lYCBwcm9wZXJ0eSBleHBvc2luZyB0aGUgY3VycmVudFxuICogICAgKHBvdGVudGlhbGx5IHVzZXItb3ZlcnJpZGRlbikgbW9kZWwgbmFtZSwgd2hpbGUgYGZpZWxkc2AgY29udGludWUgdG8gYmUgcmVmZXJlbmNlZCBieVxuICogICAgdGhlaXIgc3RhdGljIEJldHRlckF1dGggZmllbGQga2V5cy5cbiAqIDMuIFdoZW4gY29udmVydGluZyBmaWVsZHMsIHdlIHN0b3JlIHRoZW0gdW5kZXIgdGhlaXIgb3JpZ2luYWwga2V5IChgYWN0dWFsRmllbGRzW2tleV0gPSBmaWVsZGApXG4gKiAgICBpbnN0ZWFkIG9mIGBmaWVsZC5maWVsZE5hbWUgfHwga2V5YCB0byBhdm9pZCBhY2NpZGVudGFsIHJlbmFtZXMuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIFRoZSBCZXR0ZXJBdXRoIG9wdGlvbnMgZmVkIGludG8gYGdldEF1dGhUYWJsZXNgLlxuICogQHJldHVybnMgQSBtYXAga2V5ZWQgYnkgc3RhdGljIHRhYmxlIGtleXMsIGVhY2ggdmFsdWUgY29udGFpbmluZyBgeyBtb2RlbE5hbWUsIGZpZWxkcywgb3JkZXIgfWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYShwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucyk6IEJldHRlckF1dGhTY2hlbWFzIHtcbiAgY29uc3QgYmV0dGVyQXV0aE9wdGlvbnMgPSBwbHVnaW5PcHRpb25zLmJldHRlckF1dGhPcHRpb25zID8/IHt9XG5cbiAgLy8gV2UgbmVlZCB0byBhZGQgdGhlIGFkZGl0aW9uYWwgcm9sZSBmaWVsZCB0byB0aGUgdXNlciBzY2hlbWEgaGVyZSBvciBlbHNlIHRoZSBidWlsdCBjb2xsZWN0aW9ucyB3aWxsIG5vdCBwaWNrIGl0IHVwLlxuICBzZXQoYmV0dGVyQXV0aE9wdGlvbnMgYXMgYW55LCBgJHtiYU1vZGVsS2V5LnVzZXJ9LmFkZGl0aW9uYWxGaWVsZHMucm9sZWAsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICBkZWZhdWx0VmFsdWU6IHBsdWdpbk9wdGlvbnMudXNlcnM/LmRlZmF1bHRSb2xlIHx8IGRlZmF1bHRzLnVzZXJSb2xlLFxuICAgIGlucHV0OiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCB0YWJsZXMgPSBnZXRBdXRoVGFibGVzKGJldHRlckF1dGhPcHRpb25zKVxuXG4gIGNvbnN0IHNjaGVtYTogUGFydGlhbDxCZXR0ZXJBdXRoU2NoZW1hcz4gPSB7fVxuXG4gIGZvciAoY29uc3QgbW9kZWxLZXkgb2YgT2JqZWN0LmtleXModGFibGVzKSBhcyBNb2RlbEtleVtdKSB7XG4gICAgY29uc3QgdGFibGUgPSB0YWJsZXNbbW9kZWxLZXldXG5cbiAgICAvLyBSZXNvbHZlIHRoZSBjYW5vbmljYWwgY29sbGVjdGlvbiBzbHVnIC8gbW9kZWwgbmFtZSBmb3IgdGhpcyBrZXlcbiAgICBjb25zdCByZXNvbHZlZE1vZGVsTmFtZSA9IGdldERlZmF1bHRDb2xsZWN0aW9uU2x1Zyh7IG1vZGVsS2V5LCBwbHVnaW5PcHRpb25zIH0pXG5cbiAgICBjb25zdCBkZWZhdWx0RmllbGRNYXAgPSAoYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lcyBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PilbbW9kZWxLZXldID8/IHt9XG5cbiAgICBjb25zdCBhY3R1YWxGaWVsZHM6IFJlY29yZDxzdHJpbmcsIERCRmllbGRBdHRyaWJ1dGU+ID0ge31cblxuICAgIE9iamVjdC5lbnRyaWVzKHRhYmxlLmZpZWxkcykuZm9yRWFjaCgoW2ZpZWxkS2V5LCBmaWVsZFZhbHVlXSkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIGZpZWxkIGVuc3VyaW5nIGEgZmllbGROYW1lIGV4aXN0c1xuICAgICAgY29uc3QgbmV3RmllbGQ6IERCRmllbGRBdHRyaWJ1dGUgPSB7XG4gICAgICAgIC4uLmZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZTogZGVmYXVsdEZpZWxkTWFwW2ZpZWxkS2V5XSA/PyBmaWVsZEtleVxuICAgICAgfVxuXG4gICAgICAvLyBSZXdyaXRlIHJlZmVyZW5jZXMgdG8gdXNlIHRoZSByZXNvbHZlZCBtb2RlbE5hbWUgZm9yIHRoZSB0YXJnZXQgdGFibGVcbiAgICAgIGlmIChmaWVsZFZhbHVlLnJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29uc3QgcmVmTW9kZWxLZXkgPSBmaWVsZFZhbHVlLnJlZmVyZW5jZXMubW9kZWwgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHJlc29sdmVkUmVmTW9kZWxOYW1lID0gZ2V0RGVmYXVsdENvbGxlY3Rpb25TbHVnKHsgbW9kZWxLZXk6IHJlZk1vZGVsS2V5LCBwbHVnaW5PcHRpb25zIH0pXG4gICAgICAgIG5ld0ZpZWxkLnJlZmVyZW5jZXMgPSB7XG4gICAgICAgICAgbW9kZWw6IHJlc29sdmVkUmVmTW9kZWxOYW1lLFxuICAgICAgICAgIGZpZWxkOiBmaWVsZFZhbHVlLnJlZmVyZW5jZXMuZmllbGRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhY3R1YWxGaWVsZHNbZmllbGRLZXldID0gbmV3RmllbGRcbiAgICB9KVxuXG4gICAgaWYgKHNjaGVtYVttb2RlbEtleV0pIHtcbiAgICAgIHNjaGVtYVttb2RlbEtleV0uZmllbGRzID0ge1xuICAgICAgICAuLi5zY2hlbWFbbW9kZWxLZXldLmZpZWxkcyxcbiAgICAgICAgLi4uYWN0dWFsRmllbGRzXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHNjaGVtYVttb2RlbEtleV0gPSB7XG4gICAgICBtb2RlbE5hbWU6IHJlc29sdmVkTW9kZWxOYW1lLFxuICAgICAgZmllbGRzOiBhY3R1YWxGaWVsZHMsXG4gICAgICBvcmRlcjogdGFibGUub3JkZXIgfHwgSW5maW5pdHlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hIGFzIEJldHRlckF1dGhTY2hlbWFzXG59XG4iXSwibmFtZXMiOlsiZ2V0QXV0aFRhYmxlcyIsImJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMiLCJiYU1vZGVsS2V5IiwiZGVmYXVsdHMiLCJnZXREZWZhdWx0Q29sbGVjdGlvblNsdWciLCJzZXQiLCJnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYSIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsInVzZXIiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwidXNlcnMiLCJkZWZhdWx0Um9sZSIsInVzZXJSb2xlIiwiaW5wdXQiLCJ0YWJsZXMiLCJzY2hlbWEiLCJtb2RlbEtleSIsIk9iamVjdCIsImtleXMiLCJ0YWJsZSIsInJlc29sdmVkTW9kZWxOYW1lIiwiZGVmYXVsdEZpZWxkTWFwIiwiYWN0dWFsRmllbGRzIiwiZW50cmllcyIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZEtleSIsImZpZWxkVmFsdWUiLCJuZXdGaWVsZCIsImZpZWxkTmFtZSIsInJlZmVyZW5jZXMiLCJyZWZNb2RlbEtleSIsIm1vZGVsIiwicmVzb2x2ZWRSZWZNb2RlbE5hbWUiLCJmaWVsZCIsIm1vZGVsTmFtZSIsIm9yZGVyIiwiSW5maW5pdHkiXSwibWFwcGluZ3MiOiJBQUNBLFNBQWdDQSxhQUFhLFFBQVEsaUJBQWdCO0FBQ3JFLFNBQVNDLDRCQUE0QixFQUFFQyxVQUFVLEVBQUVDLFFBQVEsUUFBUSxlQUFjO0FBRWpGLFNBQVNDLHdCQUF3QixRQUFRLHdCQUF1QjtBQUNoRSxTQUFTQyxHQUFHLFFBQVEsZUFBYztBQUVsQzs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVNDLDJCQUEyQkMsYUFBc0M7SUFDL0UsTUFBTUMsb0JBQW9CRCxjQUFjQyxpQkFBaUIsSUFBSSxDQUFDO0lBRTlELHNIQUFzSDtJQUN0SEgsSUFBSUcsbUJBQTBCLEdBQUdOLFdBQVdPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1FBQ3hFQyxNQUFNO1FBQ05DLGNBQWNKLGNBQWNLLEtBQUssRUFBRUMsZUFBZVYsU0FBU1csUUFBUTtRQUNuRUMsT0FBTztJQUNUO0lBRUEsTUFBTUMsU0FBU2hCLGNBQWNRO0lBRTdCLE1BQU1TLFNBQXFDLENBQUM7SUFFNUMsS0FBSyxNQUFNQyxZQUFZQyxPQUFPQyxJQUFJLENBQUNKLFFBQXVCO1FBQ3hELE1BQU1LLFFBQVFMLE1BQU0sQ0FBQ0UsU0FBUztRQUU5QixrRUFBa0U7UUFDbEUsTUFBTUksb0JBQW9CbEIseUJBQXlCO1lBQUVjO1lBQVVYO1FBQWM7UUFFN0UsTUFBTWdCLGtCQUFrQixBQUFDdEIsNEJBQXVFLENBQUNpQixTQUFTLElBQUksQ0FBQztRQUUvRyxNQUFNTSxlQUFpRCxDQUFDO1FBRXhETCxPQUFPTSxPQUFPLENBQUNKLE1BQU1LLE1BQU0sRUFBRUMsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsVUFBVUMsV0FBVztZQUMxRCw4Q0FBOEM7WUFDOUMsTUFBTUMsV0FBNkI7Z0JBQ2pDLEdBQUdELFVBQVU7Z0JBQ2JFLFdBQVdSLGVBQWUsQ0FBQ0ssU0FBUyxJQUFJQTtZQUMxQztZQUVBLHdFQUF3RTtZQUN4RSxJQUFJQyxXQUFXRyxVQUFVLEVBQUU7Z0JBQ3pCLE1BQU1DLGNBQWNKLFdBQVdHLFVBQVUsQ0FBQ0UsS0FBSztnQkFDL0MsTUFBTUMsdUJBQXVCL0IseUJBQXlCO29CQUFFYyxVQUFVZTtvQkFBYTFCO2dCQUFjO2dCQUM3RnVCLFNBQVNFLFVBQVUsR0FBRztvQkFDcEJFLE9BQU9DO29CQUNQQyxPQUFPUCxXQUFXRyxVQUFVLENBQUNJLEtBQUs7Z0JBQ3BDO1lBQ0Y7WUFFQVosWUFBWSxDQUFDSSxTQUFTLEdBQUdFO1FBQzNCO1FBRUEsSUFBSWIsTUFBTSxDQUFDQyxTQUFTLEVBQUU7WUFDcEJELE1BQU0sQ0FBQ0MsU0FBUyxDQUFDUSxNQUFNLEdBQUc7Z0JBQ3hCLEdBQUdULE1BQU0sQ0FBQ0MsU0FBUyxDQUFDUSxNQUFNO2dCQUMxQixHQUFHRixZQUFZO1lBQ2pCO1lBQ0E7UUFDRjtRQUVBUCxNQUFNLENBQUNDLFNBQVMsR0FBRztZQUNqQm1CLFdBQVdmO1lBQ1hJLFFBQVFGO1lBQ1JjLE9BQU9qQixNQUFNaUIsS0FBSyxJQUFJQztRQUN4QjtJQUNGO0lBRUEsT0FBT3RCO0FBQ1QifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BetterAuthFullSchema, ModelKey } from '@/better-auth/generated-types';
|
|
2
2
|
import { type Collection, type CollectionConfig } from 'payload';
|
|
3
|
-
export declare function getCollectionByModelKey(collections: Record<string, Collection>, modelKey: ModelKey): CollectionConfig;
|
|
3
|
+
export declare function getCollectionByModelKey(collections: Record<string, Collection>, modelKey: ModelKey | string): CollectionConfig;
|
|
4
4
|
/**
|
|
5
5
|
* Retrieves the field name from a collection based on the field key
|
|
6
6
|
*
|
|
@@ -13,4 +13,16 @@ export declare function getCollectionByModelKey(collections: Record<string, Coll
|
|
|
13
13
|
* @returns The name of the field if found, otherwise the field key itself
|
|
14
14
|
*/
|
|
15
15
|
export declare function getCollectionFieldNameByFieldKey<M extends ModelKey>(collection: CollectionConfig, model: M, fieldKey: Extract<keyof BetterAuthFullSchema[M], string>): string;
|
|
16
|
+
export declare function getCollectionFieldNameByFieldKeyUntyped(collection: CollectionConfig, fieldKey: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Retrieves the field key from a collection based on the collection field name
|
|
19
|
+
*
|
|
20
|
+
* This function searches through the fields of a collection to find a field
|
|
21
|
+
* that has a matching name.
|
|
22
|
+
*
|
|
23
|
+
* @param collection - The collection configuration to search through
|
|
24
|
+
* @param fieldName - The name of the field to search for
|
|
25
|
+
* @returns The key of the field if found, otherwise the field name itself
|
|
26
|
+
*/
|
|
27
|
+
export declare function getFieldKeyByCollectionFieldName(collection: CollectionConfig, fieldName: string): string;
|
|
16
28
|
//# sourceMappingURL=get-collection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-collection.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"get-collection.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,gBAAgB,CAU9H;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,QAAQ,EACjE,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GACvD,MAAM,CAGR;AAED,wBAAgB,uCAAuC,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9G;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { flattenAllFields } from "payload";
|
|
2
2
|
export function getCollectionByModelKey(collections, modelKey) {
|
|
3
3
|
const collection = Object.values(collections).find((c)=>{
|
|
4
|
-
return c.config?.custom?.betterAuthModelKey === modelKey;
|
|
4
|
+
return c.config?.custom?.betterAuthModelKey === modelKey || c.config?.slug === modelKey;
|
|
5
5
|
});
|
|
6
6
|
if (!collection) {
|
|
7
7
|
throw new Error(`Collection with key ${modelKey} not found`);
|
|
@@ -24,5 +24,26 @@ export function getCollectionByModelKey(collections, modelKey) {
|
|
|
24
24
|
});
|
|
25
25
|
return fields.find((f)=>f.custom?.betterAuthFieldKey === fieldKey)?.name ?? fieldKey;
|
|
26
26
|
}
|
|
27
|
+
export function getCollectionFieldNameByFieldKeyUntyped(collection, fieldKey) {
|
|
28
|
+
const fields = flattenAllFields({
|
|
29
|
+
fields: collection.fields
|
|
30
|
+
});
|
|
31
|
+
return fields.find((f)=>f.custom?.betterAuthFieldKey === fieldKey || f.name === fieldKey)?.name ?? fieldKey;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves the field key from a collection based on the collection field name
|
|
35
|
+
*
|
|
36
|
+
* This function searches through the fields of a collection to find a field
|
|
37
|
+
* that has a matching name.
|
|
38
|
+
*
|
|
39
|
+
* @param collection - The collection configuration to search through
|
|
40
|
+
* @param fieldName - The name of the field to search for
|
|
41
|
+
* @returns The key of the field if found, otherwise the field name itself
|
|
42
|
+
*/ export function getFieldKeyByCollectionFieldName(collection, fieldName) {
|
|
43
|
+
const fields = flattenAllFields({
|
|
44
|
+
fields: collection.fields
|
|
45
|
+
});
|
|
46
|
+
return fields.find((f)=>f.name === fieldName)?.custom?.betterAuthFieldKey ?? fieldName;
|
|
47
|
+
}
|
|
27
48
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtY29sbGVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJldHRlckF1dGhGdWxsU2NoZW1hLCBNb2RlbEtleSB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvZ2VuZXJhdGVkLXR5cGVzJ1xuaW1wb3J0IHsgZmxhdHRlbkFsbEZpZWxkcywgdHlwZSBDb2xsZWN0aW9uLCB0eXBlIENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkoY29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb24+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtY29sbGVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJldHRlckF1dGhGdWxsU2NoZW1hLCBNb2RlbEtleSB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvZ2VuZXJhdGVkLXR5cGVzJ1xuaW1wb3J0IHsgZmxhdHRlbkFsbEZpZWxkcywgdHlwZSBDb2xsZWN0aW9uLCB0eXBlIENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkoY29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb24+LCBtb2RlbEtleTogTW9kZWxLZXkgfCBzdHJpbmcpOiBDb2xsZWN0aW9uQ29uZmlnIHtcbiAgY29uc3QgY29sbGVjdGlvbiA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpLmZpbmQoKGMpID0+IHtcbiAgICByZXR1cm4gYy5jb25maWc/LmN1c3RvbT8uYmV0dGVyQXV0aE1vZGVsS2V5ID09PSBtb2RlbEtleSB8fCBjLmNvbmZpZz8uc2x1ZyA9PT0gbW9kZWxLZXlcbiAgfSlcblxuICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvbGxlY3Rpb24gd2l0aCBrZXkgJHttb2RlbEtleX0gbm90IGZvdW5kYClcbiAgfVxuXG4gIHJldHVybiBjb2xsZWN0aW9uLmNvbmZpZ1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmllbGQgbmFtZSBmcm9tIGEgY29sbGVjdGlvbiBiYXNlZCBvbiB0aGUgZmllbGQga2V5XG4gKlxuICogVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyB0aHJvdWdoIHRoZSBmaWVsZHMgb2YgYSBjb2xsZWN0aW9uIHRvIGZpbmQgYSBmaWVsZFxuICogdGhhdCBoYXMgYSBtYXRjaGluZyBjdXN0b20gcHJvcGVydHkgYmV0dGVyQXV0aEZpZWxkS2V5LlxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIC0gVGhlIGNvbGxlY3Rpb24gY29uZmlndXJhdGlvbiB0byBzZWFyY2ggdGhyb3VnaFxuICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsIGtleSBvZiB0aGUgY29sbGVjdGlvbiAoVGhpcyBpcyByZWFsbHkganVzdCBmb3IgdHlwZSBoaW50aW5nKVxuICogQHBhcmFtIGZpZWxkS2V5IC0gVGhlIGtleSBvZiB0aGUgZmllbGQgdG8gc2VhcmNoIGZvclxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGlmIGZvdW5kLCBvdGhlcndpc2UgdGhlIGZpZWxkIGtleSBpdHNlbGZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5PE0gZXh0ZW5kcyBNb2RlbEtleT4oXG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcsXG4gIG1vZGVsOiBNLFxuICBmaWVsZEtleTogRXh0cmFjdDxrZXlvZiBCZXR0ZXJBdXRoRnVsbFNjaGVtYVtNXSwgc3RyaW5nPlxuKTogc3RyaW5nIHtcbiAgY29uc3QgZmllbGRzID0gZmxhdHRlbkFsbEZpZWxkcyh7IGZpZWxkczogY29sbGVjdGlvbi5maWVsZHMgfSlcbiAgcmV0dXJuIGZpZWxkcy5maW5kKChmKSA9PiBmLmN1c3RvbT8uYmV0dGVyQXV0aEZpZWxkS2V5ID09PSBmaWVsZEtleSk/Lm5hbWUgPz8gZmllbGRLZXlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5VW50eXBlZChjb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnLCBmaWVsZEtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZmllbGRzID0gZmxhdHRlbkFsbEZpZWxkcyh7IGZpZWxkczogY29sbGVjdGlvbi5maWVsZHMgfSlcbiAgcmV0dXJuIGZpZWxkcy5maW5kKChmKSA9PiBmLmN1c3RvbT8uYmV0dGVyQXV0aEZpZWxkS2V5ID09PSBmaWVsZEtleSB8fCBmLm5hbWUgPT09IGZpZWxkS2V5KT8ubmFtZSA/PyBmaWVsZEtleVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmllbGQga2V5IGZyb20gYSBjb2xsZWN0aW9uIGJhc2VkIG9uIHRoZSBjb2xsZWN0aW9uIGZpZWxkIG5hbWVcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRocm91Z2ggdGhlIGZpZWxkcyBvZiBhIGNvbGxlY3Rpb24gdG8gZmluZCBhIGZpZWxkXG4gKiB0aGF0IGhhcyBhIG1hdGNoaW5nIG5hbWUuXG4gKlxuICogQHBhcmFtIGNvbGxlY3Rpb24gLSBUaGUgY29sbGVjdGlvbiBjb25maWd1cmF0aW9uIHRvIHNlYXJjaCB0aHJvdWdoXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIHNlYXJjaCBmb3JcbiAqIEByZXR1cm5zIFRoZSBrZXkgb2YgdGhlIGZpZWxkIGlmIGZvdW5kLCBvdGhlcndpc2UgdGhlIGZpZWxkIG5hbWUgaXRzZWxmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZEtleUJ5Q29sbGVjdGlvbkZpZWxkTmFtZShjb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnLCBmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGZpZWxkcyA9IGZsYXR0ZW5BbGxGaWVsZHMoeyBmaWVsZHM6IGNvbGxlY3Rpb24uZmllbGRzIH0pXG4gIHJldHVybiBmaWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBmaWVsZE5hbWUpPy5jdXN0b20/LmJldHRlckF1dGhGaWVsZEtleSA/PyBmaWVsZE5hbWVcbn1cbiJdLCJuYW1lcyI6WyJmbGF0dGVuQWxsRmllbGRzIiwiZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkiLCJjb2xsZWN0aW9ucyIsIm1vZGVsS2V5IiwiY29sbGVjdGlvbiIsIk9iamVjdCIsInZhbHVlcyIsImZpbmQiLCJjIiwiY29uZmlnIiwiY3VzdG9tIiwiYmV0dGVyQXV0aE1vZGVsS2V5Iiwic2x1ZyIsIkVycm9yIiwiZ2V0Q29sbGVjdGlvbkZpZWxkTmFtZUJ5RmllbGRLZXkiLCJtb2RlbCIsImZpZWxkS2V5IiwiZmllbGRzIiwiZiIsImJldHRlckF1dGhGaWVsZEtleSIsIm5hbWUiLCJnZXRDb2xsZWN0aW9uRmllbGROYW1lQnlGaWVsZEtleVVudHlwZWQiLCJnZXRGaWVsZEtleUJ5Q29sbGVjdGlvbkZpZWxkTmFtZSIsImZpZWxkTmFtZSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsZ0JBQWdCLFFBQWdELFVBQVM7QUFFbEYsT0FBTyxTQUFTQyx3QkFBd0JDLFdBQXVDLEVBQUVDLFFBQTJCO0lBQzFHLE1BQU1DLGFBQWFDLE9BQU9DLE1BQU0sQ0FBQ0osYUFBYUssSUFBSSxDQUFDLENBQUNDO1FBQ2xELE9BQU9BLEVBQUVDLE1BQU0sRUFBRUMsUUFBUUMsdUJBQXVCUixZQUFZSyxFQUFFQyxNQUFNLEVBQUVHLFNBQVNUO0lBQ2pGO0lBRUEsSUFBSSxDQUFDQyxZQUFZO1FBQ2YsTUFBTSxJQUFJUyxNQUFNLENBQUMsb0JBQW9CLEVBQUVWLFNBQVMsVUFBVSxDQUFDO0lBQzdEO0lBRUEsT0FBT0MsV0FBV0ssTUFBTTtBQUMxQjtBQUVBOzs7Ozs7Ozs7O0NBVUMsR0FDRCxPQUFPLFNBQVNLLGlDQUNkVixVQUE0QixFQUM1QlcsS0FBUSxFQUNSQyxRQUF3RDtJQUV4RCxNQUFNQyxTQUFTakIsaUJBQWlCO1FBQUVpQixRQUFRYixXQUFXYSxNQUFNO0lBQUM7SUFDNUQsT0FBT0EsT0FBT1YsSUFBSSxDQUFDLENBQUNXLElBQU1BLEVBQUVSLE1BQU0sRUFBRVMsdUJBQXVCSCxXQUFXSSxRQUFRSjtBQUNoRjtBQUVBLE9BQU8sU0FBU0ssd0NBQXdDakIsVUFBNEIsRUFBRVksUUFBZ0I7SUFDcEcsTUFBTUMsU0FBU2pCLGlCQUFpQjtRQUFFaUIsUUFBUWIsV0FBV2EsTUFBTTtJQUFDO0lBQzVELE9BQU9BLE9BQU9WLElBQUksQ0FBQyxDQUFDVyxJQUFNQSxFQUFFUixNQUFNLEVBQUVTLHVCQUF1QkgsWUFBWUUsRUFBRUUsSUFBSSxLQUFLSixXQUFXSSxRQUFRSjtBQUN2RztBQUVBOzs7Ozs7Ozs7Q0FTQyxHQUNELE9BQU8sU0FBU00saUNBQWlDbEIsVUFBNEIsRUFBRW1CLFNBQWlCO0lBQzlGLE1BQU1OLFNBQVNqQixpQkFBaUI7UUFBRWlCLFFBQVFiLFdBQVdhLE1BQU07SUFBQztJQUM1RCxPQUFPQSxPQUFPVixJQUFJLENBQUMsQ0FBQ1csSUFBTUEsRUFBRUUsSUFBSSxLQUFLRyxZQUFZYixRQUFRUyxzQkFBc0JJO0FBQ2pGIn0=
|
|
@@ -122,4 +122,4 @@ export function withPayloadAuth({ payloadConfig }) {
|
|
|
122
122
|
return optionsWithAdapter;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ2JldHRlci1hdXRoL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UGF5bG9hZCwgU2FuaXRpemVkQ29uZmlnLCB0eXBlIENvbmZpZyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgeyBwYXlsb2FkQWRhcHRlciB9IGZyb20gJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9hZGFwdGVyJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEJldHRlckF1dGhTY2hlbWEgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWJldHRlci1hdXRoLXNjaGVtYSdcbmltcG9ydCB7IHN5bmNSZXNvbHZlZFNjaGVtYVdpdGhDb2xsZWN0aW9uTWFwIH0gZnJvbSAnLi9oZWxwZXJzL3N5bmMtcmVzb2x2ZWQtc2NoZW1hLXdpdGgtY29sbGVjdGlvbi1tYXAnXG5pbXBvcnQgeyBhcHBseURpc2FibGVkRGVmYXVsdEF1dGhDb25maWcgfSBmcm9tICcuL2xpYi9hcHBseS1kaXNhYmxlZC1kZWZhdWx0LWF1dGgtY29uZmlnJ1xuaW1wb3J0IHsgYnVpbGRDb2xsZWN0aW9ucyB9IGZyb20gJy4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL2luZGV4J1xuaW1wb3J0IHsgaW5pdEJldHRlckF1dGggfSBmcm9tICcuL2xpYi9pbml0LWJldHRlci1hdXRoJ1xuaW1wb3J0IHsgc2FuaXRpemVCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJy4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvaW5kZXgnXG5pbXBvcnQgeyBzZXRMb2dpbk1ldGhvZHMgfSBmcm9tICcuL2xpYi9zZXQtbG9naW4tbWV0aG9kcydcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnLi91dGlscy9zZXQnXG5cbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9pbmRleCdcbmV4cG9ydCB7IGdldFBheWxvYWRBdXRoIH0gZnJvbSAnLi9saWIvZ2V0LXBheWxvYWQtYXV0aCdcbmV4cG9ydCB7IHNhbml0aXplQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuL2xpYi9zYW5pdGl6ZS1iZXR0ZXItYXV0aC1vcHRpb25zL2luZGV4J1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gYnVpbGRCZXR0ZXJBdXRoRGF0YSh7IHBheWxvYWRDb25maWcsIHBsdWdpbk9wdGlvbnMgfTogeyBwYXlsb2FkQ29uZmlnOiBTYW5pdGl6ZWRDb25maWc7IHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zIH0pIHtcbiAgcGx1Z2luT3B0aW9ucyA9IHNldExvZ2luTWV0aG9kcyh7IHBsdWdpbk9wdGlvbnMgfSlcblxuICBjb25zdCBkZWZhdWx0QmV0dGVyQXV0aFNjaGVtYXMgPSBnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYShwbHVnaW5PcHRpb25zKVxuXG4gIGxldCBjb2xsZWN0aW9uTWFwID0gYnVpbGRDb2xsZWN0aW9ucyh7XG4gICAgcmVzb2x2ZWRTY2hlbWFzOiBkZWZhdWx0QmV0dGVyQXV0aFNjaGVtYXMsXG4gICAgaW5jb21pbmdDb2xsZWN0aW9uczogcGF5bG9hZENvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXSxcbiAgICBwbHVnaW5PcHRpb25zXG4gIH0pXG5cbiAgY29uc3QgcmVzb2x2ZWRCZXR0ZXJBdXRoU2NoZW1hcyA9IHN5bmNSZXNvbHZlZFNjaGVtYVdpdGhDb2xsZWN0aW9uTWFwKGRlZmF1bHRCZXR0ZXJBdXRoU2NoZW1hcywgY29sbGVjdGlvbk1hcClcblxuICAvLyBXZSBuZWVkIHRvIGJ1aWxkIHRoZSBjb2xsZWN0aW9ucyBhIHNlY29uZCB0aW1lIHdpdGggdGhlIHJlc29sdmVkIHNjaGVtYXNcbiAgLy8gZHVlIHRvIGhvb2tzLCBlbmRwb2ludHMsIHVzZUFzVGl0bGUsIGV0YyBzaG91bGQgcmVseSBvbiByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzIHRvIGdldCBzbHVnc1xuICAvLyBpZiB0aGV5IGFyZSByZWZlcmVuY2luZyB0byBvdGhlciBjb2xsZWN0aW9ucyB0aGVuIGl0IHNlbGYuXG4gIGNvbGxlY3Rpb25NYXAgPSBidWlsZENvbGxlY3Rpb25zKHtcbiAgICByZXNvbHZlZFNjaGVtYXM6IHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXMsXG4gICAgaW5jb21pbmdDb2xsZWN0aW9uczogcGF5bG9hZENvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXSxcbiAgICBwbHVnaW5PcHRpb25zXG4gIH0pXG5cbiAgY29uc3Qgc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgPSBzYW5pdGl6ZUJldHRlckF1dGhPcHRpb25zKHtcbiAgICBjb25maWc6IHBheWxvYWRDb25maWcsXG4gICAgcGx1Z2luT3B0aW9ucyxcbiAgICByZXNvbHZlZFNjaGVtYXM6IHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXNcbiAgfSlcblxuICBwbHVnaW5PcHRpb25zLmJldHRlckF1dGhPcHRpb25zID0gc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcblxuICByZXR1cm4ge1xuICAgIHBsdWdpbk9wdGlvbnMsXG4gICAgY29sbGVjdGlvbk1hcCxcbiAgICByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzLFxuICAgIHNhbml0aXplZEJldHRlckF1dGhPcHRpb25zXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJldHRlckF1dGhQbHVnaW4ocGx1Z2luT3B0aW9uczogQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMpIHtcbiAgcmV0dXJuIChjb25maWc6IENvbmZpZyk6IENvbmZpZyA9PiB7XG4gICAgaWYgKHBsdWdpbk9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBjb25maWdcbiAgICB9XG5cbiAgICBjb25maWcuY3VzdG9tID0ge1xuICAgICAgLi4uY29uZmlnLmN1c3RvbSxcbiAgICAgIGhhc0JldHRlckF1dGhQbHVnaW46IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbGxlY3Rpb25NYXAsIHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXMsIHNhbml0aXplZEJldHRlckF1dGhPcHRpb25zIH0gPSBidWlsZEJldHRlckF1dGhEYXRhKHtcbiAgICAgIHBheWxvYWRDb25maWc6IGNvbmZpZyBhcyBTYW5pdGl6ZWRDb25maWcsXG4gICAgICBwbHVnaW5PcHRpb25zXG4gICAgfSlcblxuICAgIHNldChjb25maWcsICdjdXN0b20uYmV0dGVyQXV0aC5jb25maWcnLCBzYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucylcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRmluYWxpemUgY29uZmlnIC0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKHBsdWdpbk9wdGlvbnMuZGlzYWJsZURlZmF1bHRQYXlsb2FkQXV0aCkge1xuICAgICAgYXBwbHlEaXNhYmxlZERlZmF1bHRBdXRoQ29uZmlnKHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwbHVnaW5PcHRpb25zLFxuICAgICAgICBjb2xsZWN0aW9uTWFwLFxuICAgICAgICByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbmZpZy5jb2xsZWN0aW9ucyA9IGNvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXVxuICAgIGNvbmZpZy5jb2xsZWN0aW9ucyA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbk1hcClcblxuICAgIGNvbnN0IGluY29taW5nT25Jbml0ID0gY29uZmlnLm9uSW5pdFxuXG4gICAgY29uZmlnLm9uSW5pdCA9IGFzeW5jIChwYXlsb2FkKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBFeGVjdXRlIGFueSBleGlzdGluZyBvbkluaXQgZnVuY3Rpb25zIGZpcnN0XG4gICAgICAgIGlmIChpbmNvbWluZ09uSW5pdCkge1xuICAgICAgICAgIGF3YWl0IGluY29taW5nT25Jbml0KHBheWxvYWQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIGFuZCBzZXQgdGhlIGJldHRlckF1dGggaW5zdGFuY2VcbiAgICAgICAgY29uc3QgYXV0aCA9IGluaXRCZXR0ZXJBdXRoPE5vbk51bGxhYmxlPHR5cGVvZiBzYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucy5wbHVnaW5zPj4oe1xuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgaWRUeXBlOiBwYXlsb2FkLmRiLmRlZmF1bHRJRFR5cGUsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLi4uc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMsXG4gICAgICAgICAgICBlbmFibGVEZWJ1Z0xvZ3M6IHBsdWdpbk9wdGlvbnMuZGVidWc/LmVuYWJsZURlYnVnTG9ncyA/PyBmYWxzZSxcbiAgICAgICAgICAgIHBsdWdpbnM6IFsuLi4oc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMucGx1Z2lucyA/PyBbXSldXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFR5cGUtc2FmZSBleHRlbnNpb24gb2YgcGF5bG9hZCB3aXRoIGJldHRlckF1dGhcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBheWxvYWQsICdiZXR0ZXJBdXRoJywge1xuICAgICAgICAgIHZhbHVlOiBhdXRoLFxuICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gaW5pdGlhbGl6ZSBCZXR0ZXJBdXRoOicsIGVycm9yKVxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYXlsb2FkQXV0aCh7IHBheWxvYWRDb25maWcgfTogeyBwYXlsb2FkQ29uZmlnOiBTYW5pdGl6ZWRDb25maWcgfSk6IEJldHRlckF1dGhPcHRpb25zIHtcbiAgY29uc3QgYmV0dGVyQXV0aENvbmZpZyA9IHBheWxvYWRDb25maWcuY3VzdG9tLmJldHRlckF1dGguY29uZmlnIGFzIEJldHRlckF1dGhPcHRpb25zXG5cbiAgaWYgKCFiZXR0ZXJBdXRoQ29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCZXR0ZXJBdXRoIGNvbmZpZyBub3QgZm91bmQuIE5vdCBzZXQgcGF5bG9hZENvbmZpZy5jdXN0b20uYmV0dGVyQXV0aC5jb25maWcnKVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uc1dpdGhBZGFwdGVyOiBCZXR0ZXJBdXRoT3B0aW9ucyA9IHtcbiAgICAuLi5iZXR0ZXJBdXRoQ29uZmlnLFxuICAgIGRhdGFiYXNlOiBwYXlsb2FkQWRhcHRlcih7XG4gICAgICBwYXlsb2FkQ2xpZW50OiBhc3luYyAoKSA9PiBhd2FpdCBnZXRQYXlsb2FkKHsgY29uZmlnOiBwYXlsb2FkQ29uZmlnIH0pLFxuICAgICAgYWRhcHRlckNvbmZpZzoge1xuICAgICAgICBlbmFibGVEZWJ1Z0xvZ3M6IGZhbHNlLFxuICAgICAgICBpZFR5cGU6IHBheWxvYWRDb25maWcuZGIuZGVmYXVsdElEVHlwZVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gb3B0aW9uc1dpdGhBZGFwdGVyXG59XG4iXSwibmFtZXMiOlsiZ2V0UGF5bG9hZCIsInBheWxvYWRBZGFwdGVyIiwiZ2V0RGVmYXVsdEJldHRlckF1dGhTY2hlbWEiLCJzeW5jUmVzb2x2ZWRTY2hlbWFXaXRoQ29sbGVjdGlvbk1hcCIsImFwcGx5RGlzYWJsZWREZWZhdWx0QXV0aENvbmZpZyIsImJ1aWxkQ29sbGVjdGlvbnMiLCJpbml0QmV0dGVyQXV0aCIsInNhbml0aXplQmV0dGVyQXV0aE9wdGlvbnMiLCJzZXRMb2dpbk1ldGhvZHMiLCJzZXQiLCJnZXRQYXlsb2FkQXV0aCIsImJ1aWxkQmV0dGVyQXV0aERhdGEiLCJwYXlsb2FkQ29uZmlnIiwicGx1Z2luT3B0aW9ucyIsImRlZmF1bHRCZXR0ZXJBdXRoU2NoZW1hcyIsImNvbGxlY3Rpb25NYXAiLCJyZXNvbHZlZFNjaGVtYXMiLCJpbmNvbWluZ0NvbGxlY3Rpb25zIiwiY29sbGVjdGlvbnMiLCJyZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzIiwic2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMiLCJjb25maWciLCJiZXR0ZXJBdXRoT3B0aW9ucyIsImJldHRlckF1dGhQbHVnaW4iLCJkaXNhYmxlZCIsImN1c3RvbSIsImhhc0JldHRlckF1dGhQbHVnaW4iLCJkaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoIiwiT2JqZWN0IiwidmFsdWVzIiwiaW5jb21pbmdPbkluaXQiLCJvbkluaXQiLCJwYXlsb2FkIiwiYXV0aCIsImlkVHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsIm9wdGlvbnMiLCJlbmFibGVEZWJ1Z0xvZ3MiLCJkZWJ1ZyIsInBsdWdpbnMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJlcnJvciIsImNvbnNvbGUiLCJ3aXRoUGF5bG9hZEF1dGgiLCJiZXR0ZXJBdXRoQ29uZmlnIiwiYmV0dGVyQXV0aCIsIkVycm9yIiwib3B0aW9uc1dpdGhBZGFwdGVyIiwiZGF0YWJhc2UiLCJwYXlsb2FkQ2xpZW50IiwiYWRhcHRlckNvbmZpZyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsVUFBVSxRQUFzQyxVQUFTO0FBQ2xFLFNBQVNDLGNBQWMsUUFBUSxtQ0FBa0M7QUFDakUsU0FBU0MsMEJBQTBCLFFBQVEsbUNBQWtDO0FBQzdFLFNBQVNDLG1DQUFtQyxRQUFRLHFEQUFvRDtBQUN4RyxTQUFTQyw4QkFBOEIsUUFBUSwyQ0FBMEM7QUFDekYsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQStCO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSx5QkFBd0I7QUFDdkQsU0FBU0MseUJBQXlCLFFBQVEsMkNBQTBDO0FBQ3BGLFNBQVND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
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ2JldHRlci1hdXRoL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UGF5bG9hZCwgU2FuaXRpemVkQ29uZmlnLCB0eXBlIENvbmZpZyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgeyBwYXlsb2FkQWRhcHRlciB9IGZyb20gJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9hZGFwdGVyJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEJldHRlckF1dGhTY2hlbWEgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWJldHRlci1hdXRoLXNjaGVtYSdcbmltcG9ydCB7IHN5bmNSZXNvbHZlZFNjaGVtYVdpdGhDb2xsZWN0aW9uTWFwIH0gZnJvbSAnLi9oZWxwZXJzL3N5bmMtcmVzb2x2ZWQtc2NoZW1hLXdpdGgtY29sbGVjdGlvbi1tYXAnXG5pbXBvcnQgeyBhcHBseURpc2FibGVkRGVmYXVsdEF1dGhDb25maWcgfSBmcm9tICcuL2xpYi9hcHBseS1kaXNhYmxlZC1kZWZhdWx0LWF1dGgtY29uZmlnJ1xuaW1wb3J0IHsgYnVpbGRDb2xsZWN0aW9ucyB9IGZyb20gJy4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL2luZGV4J1xuaW1wb3J0IHsgaW5pdEJldHRlckF1dGggfSBmcm9tICcuL2xpYi9pbml0LWJldHRlci1hdXRoJ1xuaW1wb3J0IHsgc2FuaXRpemVCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJy4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvaW5kZXgnXG5pbXBvcnQgeyBzZXRMb2dpbk1ldGhvZHMgfSBmcm9tICcuL2xpYi9zZXQtbG9naW4tbWV0aG9kcydcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnLi91dGlscy9zZXQnXG5cbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9pbmRleCdcbmV4cG9ydCB7IGdldFBheWxvYWRBdXRoIH0gZnJvbSAnLi9saWIvZ2V0LXBheWxvYWQtYXV0aCdcbmV4cG9ydCB7IHNhbml0aXplQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuL2xpYi9zYW5pdGl6ZS1iZXR0ZXItYXV0aC1vcHRpb25zL2luZGV4J1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gYnVpbGRCZXR0ZXJBdXRoRGF0YSh7IHBheWxvYWRDb25maWcsIHBsdWdpbk9wdGlvbnMgfTogeyBwYXlsb2FkQ29uZmlnOiBTYW5pdGl6ZWRDb25maWc7IHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zIH0pIHtcbiAgcGx1Z2luT3B0aW9ucyA9IHNldExvZ2luTWV0aG9kcyh7IHBsdWdpbk9wdGlvbnMgfSlcblxuICBjb25zdCBkZWZhdWx0QmV0dGVyQXV0aFNjaGVtYXMgPSBnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYShwbHVnaW5PcHRpb25zKVxuXG4gIGxldCBjb2xsZWN0aW9uTWFwID0gYnVpbGRDb2xsZWN0aW9ucyh7XG4gICAgcmVzb2x2ZWRTY2hlbWFzOiBkZWZhdWx0QmV0dGVyQXV0aFNjaGVtYXMsXG4gICAgaW5jb21pbmdDb2xsZWN0aW9uczogcGF5bG9hZENvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXSxcbiAgICBwbHVnaW5PcHRpb25zXG4gIH0pXG5cbiAgY29uc3QgcmVzb2x2ZWRCZXR0ZXJBdXRoU2NoZW1hcyA9IHN5bmNSZXNvbHZlZFNjaGVtYVdpdGhDb2xsZWN0aW9uTWFwKGRlZmF1bHRCZXR0ZXJBdXRoU2NoZW1hcywgY29sbGVjdGlvbk1hcClcblxuICAvLyBXZSBuZWVkIHRvIGJ1aWxkIHRoZSBjb2xsZWN0aW9ucyBhIHNlY29uZCB0aW1lIHdpdGggdGhlIHJlc29sdmVkIHNjaGVtYXNcbiAgLy8gZHVlIHRvIGhvb2tzLCBlbmRwb2ludHMsIHVzZUFzVGl0bGUsIGV0YyBzaG91bGQgcmVseSBvbiByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzIHRvIGdldCBzbHVnc1xuICAvLyBpZiB0aGV5IGFyZSByZWZlcmVuY2luZyB0byBvdGhlciBjb2xsZWN0aW9ucyB0aGVuIGl0IHNlbGYuXG4gIGNvbGxlY3Rpb25NYXAgPSBidWlsZENvbGxlY3Rpb25zKHtcbiAgICByZXNvbHZlZFNjaGVtYXM6IHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXMsXG4gICAgaW5jb21pbmdDb2xsZWN0aW9uczogcGF5bG9hZENvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXSxcbiAgICBwbHVnaW5PcHRpb25zXG4gIH0pXG5cbiAgY29uc3Qgc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgPSBzYW5pdGl6ZUJldHRlckF1dGhPcHRpb25zKHtcbiAgICBjb25maWc6IHBheWxvYWRDb25maWcsXG4gICAgcGx1Z2luT3B0aW9ucyxcbiAgICByZXNvbHZlZFNjaGVtYXM6IHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXNcbiAgfSlcblxuICBwbHVnaW5PcHRpb25zLmJldHRlckF1dGhPcHRpb25zID0gc2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcblxuICByZXR1cm4ge1xuICAgIHBsdWdpbk9wdGlvbnMsXG4gICAgY29sbGVjdGlvbk1hcCxcbiAgICByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzLFxuICAgIHNhbml0aXplZEJldHRlckF1dGhPcHRpb25zXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJldHRlckF1dGhQbHVnaW4ocGx1Z2luT3B0aW9uczogQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMpIHtcbiAgcmV0dXJuIChjb25maWc6IENvbmZpZyk6IENvbmZpZyA9PiB7XG4gICAgaWYgKHBsdWdpbk9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBjb25maWdcbiAgICB9XG5cbiAgICBjb25maWcuY3VzdG9tID0ge1xuICAgICAgLi4uY29uZmlnLmN1c3RvbSxcbiAgICAgIGhhc0JldHRlckF1dGhQbHVnaW46IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbGxlY3Rpb25NYXAsIHJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXMsIHNhbml0aXplZEJldHRlckF1dGhPcHRpb25zIH0gPSBidWlsZEJldHRlckF1dGhEYXRhKHtcbiAgICAgIHBheWxvYWRDb25maWc6IGNvbmZpZyBhcyBTYW5pdGl6ZWRDb25maWcsXG4gICAgICBwbHVnaW5PcHRpb25zXG4gICAgfSlcblxuICAgIHNldChjb25maWcsICdjdXN0b20uYmV0dGVyQXV0aC5jb25maWcnLCBzYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucylcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRmluYWxpemUgY29uZmlnIC0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKHBsdWdpbk9wdGlvbnMuZGlzYWJsZURlZmF1bHRQYXlsb2FkQXV0aCkge1xuICAgICAgYXBwbHlEaXNhYmxlZERlZmF1bHRBdXRoQ29uZmlnKHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwbHVnaW5PcHRpb25zLFxuICAgICAgICBjb2xsZWN0aW9uTWFwLFxuICAgICAgICByZXNvbHZlZEJldHRlckF1dGhTY2hlbWFzXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbmZpZy5jb2xsZWN0aW9ucyA9IGNvbmZpZy5jb2xsZWN0aW9ucyA/PyBbXVxuICAgIGNvbmZpZy5jb2xsZWN0aW9ucyA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbk1hcClcblxuICAgIGNvbnN0IGluY29taW5nT25Jbml0ID0gY29uZmlnLm9uSW5pdFxuXG4gICAgY29uZmlnLm9uSW5pdCA9IGFzeW5jIChwYXlsb2FkKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBFeGVjdXRlIGFueSBleGlzdGluZyBvbkluaXQgZnVuY3Rpb25zIGZpcnN0XG4gICAgICAgIGlmIChpbmNvbWluZ09uSW5pdCkge1xuICAgICAgICAgIGF3YWl0IGluY29taW5nT25Jbml0KHBheWxvYWQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIGFuZCBzZXQgdGhlIGJldHRlckF1dGggaW5zdGFuY2VcbiAgICAgICAgY29uc3QgYXV0aCA9IGluaXRCZXR0ZXJBdXRoPHR5cGVvZiBwbHVnaW5PcHRpb25zPih7XG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICBpZFR5cGU6IHBheWxvYWQuZGIuZGVmYXVsdElEVHlwZSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAuLi5zYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyxcbiAgICAgICAgICAgIGVuYWJsZURlYnVnTG9nczogcGx1Z2luT3B0aW9ucy5kZWJ1Zz8uZW5hYmxlRGVidWdMb2dzID8/IGZhbHNlLFxuICAgICAgICAgICAgcGx1Z2luczogWy4uLihzYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucy5wbHVnaW5zID8/IFtdKV1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gVHlwZS1zYWZlIGV4dGVuc2lvbiBvZiBwYXlsb2FkIHdpdGggYmV0dGVyQXV0aFxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocGF5bG9hZCwgJ2JldHRlckF1dGgnLCB7XG4gICAgICAgICAgdmFsdWU6IGF1dGgsXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBpbml0aWFsaXplIEJldHRlckF1dGg6JywgZXJyb3IpXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBheWxvYWRBdXRoKHsgcGF5bG9hZENvbmZpZyB9OiB7IHBheWxvYWRDb25maWc6IFNhbml0aXplZENvbmZpZyB9KTogQmV0dGVyQXV0aE9wdGlvbnMge1xuICBjb25zdCBiZXR0ZXJBdXRoQ29uZmlnID0gcGF5bG9hZENvbmZpZy5jdXN0b20uYmV0dGVyQXV0aC5jb25maWcgYXMgQmV0dGVyQXV0aE9wdGlvbnNcblxuICBpZiAoIWJldHRlckF1dGhDb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JldHRlckF1dGggY29uZmlnIG5vdCBmb3VuZC4gTm90IHNldCBwYXlsb2FkQ29uZmlnLmN1c3RvbS5iZXR0ZXJBdXRoLmNvbmZpZycpXG4gIH1cblxuICBjb25zdCBvcHRpb25zV2l0aEFkYXB0ZXI6IEJldHRlckF1dGhPcHRpb25zID0ge1xuICAgIC4uLmJldHRlckF1dGhDb25maWcsXG4gICAgZGF0YWJhc2U6IHBheWxvYWRBZGFwdGVyKHtcbiAgICAgIHBheWxvYWRDbGllbnQ6IGFzeW5jICgpID0+IGF3YWl0IGdldFBheWxvYWQoeyBjb25maWc6IHBheWxvYWRDb25maWcgfSksXG4gICAgICBhZGFwdGVyQ29uZmlnOiB7XG4gICAgICAgIGVuYWJsZURlYnVnTG9nczogZmFsc2UsXG4gICAgICAgIGlkVHlwZTogcGF5bG9hZENvbmZpZy5kYi5kZWZhdWx0SURUeXBlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zV2l0aEFkYXB0ZXJcbn1cbiJdLCJuYW1lcyI6WyJnZXRQYXlsb2FkIiwicGF5bG9hZEFkYXB0ZXIiLCJnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYSIsInN5bmNSZXNvbHZlZFNjaGVtYVdpdGhDb2xsZWN0aW9uTWFwIiwiYXBwbHlEaXNhYmxlZERlZmF1bHRBdXRoQ29uZmlnIiwiYnVpbGRDb2xsZWN0aW9ucyIsImluaXRCZXR0ZXJBdXRoIiwic2FuaXRpemVCZXR0ZXJBdXRoT3B0aW9ucyIsInNldExvZ2luTWV0aG9kcyIsInNldCIsImdldFBheWxvYWRBdXRoIiwiYnVpbGRCZXR0ZXJBdXRoRGF0YSIsInBheWxvYWRDb25maWciLCJwbHVnaW5PcHRpb25zIiwiZGVmYXVsdEJldHRlckF1dGhTY2hlbWFzIiwiY29sbGVjdGlvbk1hcCIsInJlc29sdmVkU2NoZW1hcyIsImluY29taW5nQ29sbGVjdGlvbnMiLCJjb2xsZWN0aW9ucyIsInJlc29sdmVkQmV0dGVyQXV0aFNjaGVtYXMiLCJzYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyIsImNvbmZpZyIsImJldHRlckF1dGhPcHRpb25zIiwiYmV0dGVyQXV0aFBsdWdpbiIsImRpc2FibGVkIiwiY3VzdG9tIiwiaGFzQmV0dGVyQXV0aFBsdWdpbiIsImRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGgiLCJPYmplY3QiLCJ2YWx1ZXMiLCJpbmNvbWluZ09uSW5pdCIsIm9uSW5pdCIsInBheWxvYWQiLCJhdXRoIiwiaWRUeXBlIiwiZGIiLCJkZWZhdWx0SURUeXBlIiwib3B0aW9ucyIsImVuYWJsZURlYnVnTG9ncyIsImRlYnVnIiwicGx1Z2lucyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImVycm9yIiwiY29uc29sZSIsIndpdGhQYXlsb2FkQXV0aCIsImJldHRlckF1dGhDb25maWciLCJiZXR0ZXJBdXRoIiwiRXJyb3IiLCJvcHRpb25zV2l0aEFkYXB0ZXIiLCJkYXRhYmFzZSIsInBheWxvYWRDbGllbnQiLCJhZGFwdGVyQ29uZmlnIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxVQUFVLFFBQXNDLFVBQVM7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLG1DQUFrQztBQUNqRSxTQUFTQywwQkFBMEIsUUFBUSxtQ0FBa0M7QUFDN0UsU0FBU0MsbUNBQW1DLFFBQVEscURBQW9EO0FBQ3hHLFNBQVNDLDhCQUE4QixRQUFRLDJDQUEwQztBQUN6RixTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBK0I7QUFDaEUsU0FBU0MsY0FBYyxRQUFRLHlCQUF3QjtBQUN2RCxTQUFTQyx5QkFBeUIsUUFBUSwyQ0FBMEM7QUFDcEYsU0FBU0MsZUFBZSxRQUFRLDBCQUF5QjtBQUV6RCxTQUFTQyxHQUFH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkeys.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/lib/build-collections/passkeys.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,4BAA4B,CAAA;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,uBAAuB,CAAC,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"passkeys.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/lib/build-collections/passkeys.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,4BAA4B,CAAA;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,uBAAuB,CAAC,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,CAuFvI"}
|
|
@@ -34,6 +34,7 @@ export function buildPasskeysCollection({ incomingCollections, pluginOptions, re
|
|
|
34
34
|
}
|
|
35
35
|
}),
|
|
36
36
|
credentialID: ()=>({
|
|
37
|
+
name: 'credentialId',
|
|
37
38
|
admin: {
|
|
38
39
|
readOnly: true,
|
|
39
40
|
description: 'The unique identifier of the registered credential'
|
|
@@ -112,4 +113,4 @@ export function buildPasskeysCollection({ incomingCollections, pluginOptions, re
|
|
|
112
113
|
return passkeyCollection;
|
|
113
114
|
}
|
|
114
115
|
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3Bhc3NrZXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMsIGJhTW9kZWxLZXksIGRlZmF1bHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgZ2V0QWRtaW5BY2Nlc3MgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1hZG1pbi1hY2Nlc3MnXG5pbXBvcnQgeyBnZXRTY2hlbWFDb2xsZWN0aW9uU2x1ZywgZ2V0U2NoZW1hRmllbGROYW1lIH0gZnJvbSAnLi91dGlscy9jb2xsZWN0aW9uLXNjaGVtYSdcbmltcG9ydCB7IGFzc2VydEFsbFNjaGVtYUZpZWxkcyB9IGZyb20gJy4vdXRpbHMvY29sbGVjdGlvbi1zY2hlbWEnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcyB9IGZyb20gJy4vdXRpbHMvcGF5bG9hZC1hY2Nlc3MnXG5pbXBvcnQgeyBnZXRDb2xsZWN0aW9uRmllbGRzIH0gZnJvbSAnLi91dGlscy90cmFuc2Zvcm0tc2NoZW1hLWZpZWxkcy10by1wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBQYXNza2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJ1aWxkQ29sbGVjdGlvblByb3BzLCBGaWVsZE92ZXJyaWRlcyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZCdcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGFzc2tleXNDb2xsZWN0aW9uKHsgaW5jb21pbmdDb2xsZWN0aW9ucywgcGx1Z2luT3B0aW9ucywgcmVzb2x2ZWRTY2hlbWFzIH06IEJ1aWxkQ29sbGVjdGlvblByb3BzKTogQ29sbGVjdGlvbkNvbmZpZyB7XG4gIGNvbnN0IHBhc3NrZXlTbHVnID0gZ2V0U2NoZW1hQ29sbGVjdGlvblNsdWcocmVzb2x2ZWRTY2hlbWFzLCBiYU1vZGVsS2V5LnBhc3NrZXkpXG4gIGNvbnN0IHBhc3NrZXlTY2hlbWEgPSByZXNvbHZlZFNjaGVtYXNbYmFNb2RlbEtleS5wYXNza2V5XVxuICBjb25zdCB1c2VySWRGaWVsZE5hbWUgPSBwYXNza2V5U2NoZW1hPy5maWVsZHM/LnVzZXJJZD8uZmllbGROYW1lID8/IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMucGFzc2tleS51c2VySWRcbiAgY29uc3QgYWRtaW5Sb2xlcyA9IHBsdWdpbk9wdGlvbnMudXNlcnM/LmFkbWluUm9sZXMgPz8gW2RlZmF1bHRzLmFkbWluUm9sZV1cblxuICBjb25zdCBleGlzdGluZ1Bhc3NrZXlDb2xsZWN0aW9uID0gaW5jb21pbmdDb2xsZWN0aW9ucy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IHBhc3NrZXlTbHVnKSBhc1xuICAgIHwgQ29sbGVjdGlvbkNvbmZpZ1xuICAgIHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgZmllbGRPdmVycmlkZXM6IEZpZWxkT3ZlcnJpZGVzPGtleW9mIFBhc3NrZXk+ID0ge1xuICAgIG5hbWU6ICgpID0+ICh7XG4gICAgICBhZG1pbjogeyByZWFkT25seTogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgbmFtZSBvZiB0aGUgcGFzc2tleScgfVxuICAgIH0pLFxuICAgIHB1YmxpY0tleTogKCkgPT4gKHtcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgYWRtaW46IHsgcmVhZE9ubHk6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHB1YmxpYyBrZXkgb2YgdGhlIHBhc3NrZXknIH1cbiAgICB9KSxcbiAgICB1c2VySWQ6ICgpID0+
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3Bhc3NrZXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMsIGJhTW9kZWxLZXksIGRlZmF1bHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgZ2V0QWRtaW5BY2Nlc3MgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1hZG1pbi1hY2Nlc3MnXG5pbXBvcnQgeyBnZXRTY2hlbWFDb2xsZWN0aW9uU2x1ZywgZ2V0U2NoZW1hRmllbGROYW1lIH0gZnJvbSAnLi91dGlscy9jb2xsZWN0aW9uLXNjaGVtYSdcbmltcG9ydCB7IGFzc2VydEFsbFNjaGVtYUZpZWxkcyB9IGZyb20gJy4vdXRpbHMvY29sbGVjdGlvbi1zY2hlbWEnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcyB9IGZyb20gJy4vdXRpbHMvcGF5bG9hZC1hY2Nlc3MnXG5pbXBvcnQgeyBnZXRDb2xsZWN0aW9uRmllbGRzIH0gZnJvbSAnLi91dGlscy90cmFuc2Zvcm0tc2NoZW1hLWZpZWxkcy10by1wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBQYXNza2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJ1aWxkQ29sbGVjdGlvblByb3BzLCBGaWVsZE92ZXJyaWRlcyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZCdcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGFzc2tleXNDb2xsZWN0aW9uKHsgaW5jb21pbmdDb2xsZWN0aW9ucywgcGx1Z2luT3B0aW9ucywgcmVzb2x2ZWRTY2hlbWFzIH06IEJ1aWxkQ29sbGVjdGlvblByb3BzKTogQ29sbGVjdGlvbkNvbmZpZyB7XG4gIGNvbnN0IHBhc3NrZXlTbHVnID0gZ2V0U2NoZW1hQ29sbGVjdGlvblNsdWcocmVzb2x2ZWRTY2hlbWFzLCBiYU1vZGVsS2V5LnBhc3NrZXkpXG4gIGNvbnN0IHBhc3NrZXlTY2hlbWEgPSByZXNvbHZlZFNjaGVtYXNbYmFNb2RlbEtleS5wYXNza2V5XVxuICBjb25zdCB1c2VySWRGaWVsZE5hbWUgPSBwYXNza2V5U2NoZW1hPy5maWVsZHM/LnVzZXJJZD8uZmllbGROYW1lID8/IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMucGFzc2tleS51c2VySWRcbiAgY29uc3QgYWRtaW5Sb2xlcyA9IHBsdWdpbk9wdGlvbnMudXNlcnM/LmFkbWluUm9sZXMgPz8gW2RlZmF1bHRzLmFkbWluUm9sZV1cblxuICBjb25zdCBleGlzdGluZ1Bhc3NrZXlDb2xsZWN0aW9uID0gaW5jb21pbmdDb2xsZWN0aW9ucy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IHBhc3NrZXlTbHVnKSBhc1xuICAgIHwgQ29sbGVjdGlvbkNvbmZpZ1xuICAgIHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgZmllbGRPdmVycmlkZXM6IEZpZWxkT3ZlcnJpZGVzPGtleW9mIFBhc3NrZXk+ID0ge1xuICAgIG5hbWU6ICgpID0+ICh7XG4gICAgICBhZG1pbjogeyByZWFkT25seTogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgbmFtZSBvZiB0aGUgcGFzc2tleScgfVxuICAgIH0pLFxuICAgIHB1YmxpY0tleTogKCkgPT4gKHtcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgYWRtaW46IHsgcmVhZE9ubHk6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHB1YmxpYyBrZXkgb2YgdGhlIHBhc3NrZXknIH1cbiAgICB9KSxcbiAgICB1c2VySWQ6ICgpID0+ICh7XG4gICAgICBpbmRleDogdHJ1ZSxcbiAgICAgIGFkbWluOiB7IHJlYWRPbmx5OiB0cnVlLCBkZXNjcmlwdGlvbjogJ1RoZSB1c2VyIHRoYXQgdGhlIHBhc3NrZXkgYmVsb25ncyB0bycgfVxuICAgIH0pLFxuICAgIGNyZWRlbnRpYWxJRDogKCkgPT4gKHtcbiAgICAgIG5hbWU6ICdjcmVkZW50aWFsSWQnLFxuICAgICAgYWRtaW46IHsgcmVhZE9ubHk6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZWdpc3RlcmVkIGNyZWRlbnRpYWwnIH1cbiAgICB9KSxcbiAgICBjb3VudGVyOiAoKSA9PiAoe1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBhZG1pbjogeyByZWFkT25seTogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgY291bnRlciBvZiB0aGUgcGFzc2tleScgfVxuICAgIH0pLFxuICAgIGRldmljZVR5cGU6ICgpID0+ICh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGFkbWluOiB7IHJlYWRPbmx5OiB0cnVlLCBkZXNjcmlwdGlvbjogJ1RoZSB0eXBlIG9mIGRldmljZSB1c2VkIHRvIHJlZ2lzdGVyIHRoZSBwYXNza2V5JyB9XG4gICAgfSksXG4gICAgYmFja2VkVXA6ICgpID0+ICh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGFkbWluOiB7IHJlYWRPbmx5OiB0cnVlLCBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHBhc3NrZXkgaXMgYmFja2VkIHVwJyB9XG4gICAgfSksXG4gICAgdHJhbnNwb3J0czogKCkgPT4gKHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgYWRtaW46IHsgcmVhZE9ubHk6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHRyYW5zcG9ydHMgdXNlZCB0byByZWdpc3RlciB0aGUgcGFzc2tleScgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb2xsZWN0aW9uRmllbGRzID0gZ2V0Q29sbGVjdGlvbkZpZWxkcyh7XG4gICAgc2NoZW1hOiBwYXNza2V5U2NoZW1hLFxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmaWVsZE92ZXJyaWRlc1xuICB9KVxuXG4gIGxldCBwYXNza2V5Q29sbGVjdGlvbjogQ29sbGVjdGlvbkNvbmZpZyA9IHtcbiAgICAuLi5leGlzdGluZ1Bhc3NrZXlDb2xsZWN0aW9uLFxuICAgIHNsdWc6IHBhc3NrZXlTbHVnLFxuICAgIGFkbWluOiB7XG4gICAgICBoaWRkZW46IHBsdWdpbk9wdGlvbnMuaGlkZVBsdWdpbkNvbGxlY3Rpb25zID8/IGZhbHNlLFxuICAgICAgdXNlQXNUaXRsZTogZ2V0U2NoZW1hRmllbGROYW1lKHJlc29sdmVkU2NoZW1hcywgYmFNb2RlbEtleS5wYXNza2V5LCAnbmFtZScpLFxuICAgICAgZGVzY3JpcHRpb246ICdQYXNza2V5cyBhcmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlcnMnLFxuICAgICAgZ3JvdXA6IHBsdWdpbk9wdGlvbnM/LmNvbGxlY3Rpb25BZG1pbkdyb3VwID8/ICdBdXRoJyxcbiAgICAgIC4uLmV4aXN0aW5nUGFzc2tleUNvbGxlY3Rpb24/LmFkbWluXG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIC4uLmdldEFkbWluQWNjZXNzKHBsdWdpbk9wdGlvbnMpLFxuICAgICAgcmVhZDogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoe1xuICAgICAgICBpZEZpZWxkOiB1c2VySWRGaWVsZE5hbWUsXG4gICAgICAgIGFkbWluUm9sZXNcbiAgICAgIH0pLFxuICAgICAgZGVsZXRlOiBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcyh7XG4gICAgICAgIGlkRmllbGQ6IHVzZXJJZEZpZWxkTmFtZSxcbiAgICAgICAgYWRtaW5Sb2xlc1xuICAgICAgfSksXG4gICAgICAuLi4oZXhpc3RpbmdQYXNza2V5Q29sbGVjdGlvbj8uYWNjZXNzID8/IHt9KVxuICAgIH0sXG4gICAgY3VzdG9tOiB7XG4gICAgICAuLi4oZXhpc3RpbmdQYXNza2V5Q29sbGVjdGlvbj8uY3VzdG9tID8/IHt9KSxcbiAgICAgIGJldHRlckF1dGhNb2RlbEtleTogYmFNb2RlbEtleS5wYXNza2V5XG4gICAgfSxcbiAgICBmaWVsZHM6IFsuLi4oZXhpc3RpbmdQYXNza2V5Q29sbGVjdGlvbj8uZmllbGRzID8/IFtdKSwgLi4uKGNvbGxlY3Rpb25GaWVsZHMgPz8gW10pXVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwbHVnaW5PcHRpb25zLnBsdWdpbkNvbGxlY3Rpb25PdmVycmlkZXM/LnBhc3NrZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcGFzc2tleUNvbGxlY3Rpb24gPSBwbHVnaW5PcHRpb25zLnBsdWdpbkNvbGxlY3Rpb25PdmVycmlkZXMucGFzc2tleXMoe1xuICAgICAgY29sbGVjdGlvbjogcGFzc2tleUNvbGxlY3Rpb25cbiAgICB9KVxuICB9XG5cbiAgYXNzZXJ0QWxsU2NoZW1hRmllbGRzKHBhc3NrZXlDb2xsZWN0aW9uLCBwYXNza2V5U2NoZW1hKVxuXG4gIHJldHVybiBwYXNza2V5Q29sbGVjdGlvblxufVxuIl0sIm5hbWVzIjpbImJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMiLCJiYU1vZGVsS2V5IiwiZGVmYXVsdHMiLCJnZXRBZG1pbkFjY2VzcyIsImdldFNjaGVtYUNvbGxlY3Rpb25TbHVnIiwiZ2V0U2NoZW1hRmllbGROYW1lIiwiYXNzZXJ0QWxsU2NoZW1hRmllbGRzIiwiaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMiLCJnZXRDb2xsZWN0aW9uRmllbGRzIiwiYnVpbGRQYXNza2V5c0NvbGxlY3Rpb24iLCJpbmNvbWluZ0NvbGxlY3Rpb25zIiwicGx1Z2luT3B0aW9ucyIsInJlc29sdmVkU2NoZW1hcyIsInBhc3NrZXlTbHVnIiwicGFzc2tleSIsInBhc3NrZXlTY2hlbWEiLCJ1c2VySWRGaWVsZE5hbWUiLCJmaWVsZHMiLCJ1c2VySWQiLCJmaWVsZE5hbWUiLCJhZG1pblJvbGVzIiwidXNlcnMiLCJhZG1pblJvbGUiLCJleGlzdGluZ1Bhc3NrZXlDb2xsZWN0aW9uIiwiZmluZCIsImNvbGxlY3Rpb24iLCJzbHVnIiwiZmllbGRPdmVycmlkZXMiLCJuYW1lIiwiYWRtaW4iLCJyZWFkT25seSIsImRlc2NyaXB0aW9uIiwicHVibGljS2V5IiwiaW5kZXgiLCJjcmVkZW50aWFsSUQiLCJjb3VudGVyIiwicmVxdWlyZWQiLCJkZXZpY2VUeXBlIiwiYmFja2VkVXAiLCJ0cmFuc3BvcnRzIiwiY29sbGVjdGlvbkZpZWxkcyIsInNjaGVtYSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwicGFzc2tleUNvbGxlY3Rpb24iLCJoaWRkZW4iLCJoaWRlUGx1Z2luQ29sbGVjdGlvbnMiLCJ1c2VBc1RpdGxlIiwiZ3JvdXAiLCJjb2xsZWN0aW9uQWRtaW5Hcm91cCIsImFjY2VzcyIsInJlYWQiLCJpZEZpZWxkIiwiZGVsZXRlIiwiY3VzdG9tIiwiYmV0dGVyQXV0aE1vZGVsS2V5IiwicGx1Z2luQ29sbGVjdGlvbk92ZXJyaWRlcyIsInBhc3NrZXlzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSw0QkFBNEIsRUFBRUMsVUFBVSxFQUFFQyxRQUFRLFFBQVEsa0JBQWlCO0FBQ3BGLFNBQVNDLGNBQWMsUUFBUSxpQ0FBZ0M7QUFDL0QsU0FBU0MsdUJBQXVCLEVBQUVDLGtCQUFrQixRQUFRLDRCQUEyQjtBQUN2RixTQUFTQyxxQkFBcUIsUUFBUSw0QkFBMkI7QUFDakUsU0FBU0MsNkJBQTZCLFFBQVEseUJBQXdCO0FBQ3RFLFNBQVNDLG1CQUFtQixRQUFRLDZDQUE0QztBQUtoRixPQUFPLFNBQVNDLHdCQUF3QixFQUFFQyxtQkFBbUIsRUFBRUMsYUFBYSxFQUFFQyxlQUFlLEVBQXdCO0lBQ25ILE1BQU1DLGNBQWNULHdCQUF3QlEsaUJBQWlCWCxXQUFXYSxPQUFPO0lBQy9FLE1BQU1DLGdCQUFnQkgsZUFBZSxDQUFDWCxXQUFXYSxPQUFPLENBQUM7SUFDekQsTUFBTUUsa0JBQWtCRCxlQUFlRSxRQUFRQyxRQUFRQyxhQUFhbkIsNkJBQTZCYyxPQUFPLENBQUNJLE1BQU07SUFDL0csTUFBTUUsYUFBYVQsY0FBY1UsS0FBSyxFQUFFRCxjQUFjO1FBQUNsQixTQUFT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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/lib/build-collections/sessions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAA6B,MAAM,4BAA4B,CAAA;AAEjG,wBAAgB,uBAAuB,CAAC,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/lib/build-collections/sessions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAA6B,MAAM,4BAA4B,CAAA;AAEjG,wBAAgB,uBAAuB,CAAC,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,CAmHvI"}
|