payload 2.0.0-beta.13 → 2.0.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/elements/ArrayAction/index.js +2 -2
- package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DocumentControls/index.js +1 -2
- package/dist/admin/components/elements/Hamburger/index.scss +2 -2
- package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Header/index.js +6 -6
- package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Localizer/index.js +1 -3
- package/dist/admin/components/elements/Nav/context.d.ts +1 -1
- package/dist/admin/components/elements/Nav/context.d.ts.map +1 -1
- package/dist/admin/components/elements/Nav/context.js +12 -7
- package/dist/admin/components/elements/Nav/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Nav/index.js +19 -18
- package/dist/admin/components/elements/WhereBuilder/Condition/index.js +6 -6
- package/dist/admin/components/elements/WhereBuilder/field-types.js +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +5 -5
- package/dist/admin/components/forms/Form/fieldReducer.js +7 -7
- package/dist/admin/components/forms/Form/index.js +3 -3
- package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Array/index.js +10 -10
- package/dist/admin/components/forms/field-types/Blocks/index.js +8 -8
- package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Select/Input.js +4 -4
- package/dist/admin/components/icons/MinimizeMaximize/index.d.ts +8 -0
- package/dist/admin/components/icons/MinimizeMaximize/index.d.ts.map +1 -0
- package/dist/admin/components/icons/MinimizeMaximize/index.js +85 -0
- package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
- package/dist/admin/components/templates/Default/index.js +10 -10
- package/dist/admin/components/views/API/index.d.ts +6 -0
- package/dist/admin/components/views/API/index.d.ts.map +1 -0
- package/dist/admin/components/views/API/index.js +281 -0
- package/dist/admin/components/views/API/index.scss +202 -0
- package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
- package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
- package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
- package/dist/admin/components/views/Global/Routes/index.js +8 -1
- package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +3 -3
- package/dist/admin/components/views/collections/Edit/SetStepNav.js +3 -3
- package/dist/auth/operations/me.d.ts.map +1 -1
- package/dist/auth/operations/me.js +13 -5
- package/dist/auth/strategies/jwt.js +3 -3
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +2 -5
- package/dist/bin/index.js +2 -2
- package/dist/database/migrations/migrateReset.d.ts.map +1 -1
- package/dist/database/migrations/migrateReset.js +17 -1
- package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
- package/dist/database/migrations/migrationsCollection.js +1 -5
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +2 -9
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +9 -7
- package/package.json +1 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts +0 -9
- package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/index.js +0 -53
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts +0 -10
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.js +0 -30
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts +0 -12
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.js +0 -17
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts +0 -12
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.js +0 -179
|
@@ -20,14 +20,10 @@ const migrationsCollection = {
|
|
|
20
20
|
{
|
|
21
21
|
name: 'batch',
|
|
22
22
|
type: 'number'
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'schema',
|
|
26
|
-
type: 'json'
|
|
27
23
|
}
|
|
28
24
|
],
|
|
29
25
|
graphQL: false,
|
|
30
26
|
slug: 'payload-migrations'
|
|
31
27
|
};
|
|
32
28
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGlvbnNDb2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnNDb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnID0ge1xuICBhZG1pbjoge1xuICAgIGhpZGRlbjogdHJ1ZSxcbiAgfSxcbiAgZmllbGRzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2JhdGNoJyxcbiAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgLy8gTk9URTogVGhpcyB2YWx1ZSBpcyAtMSBpZiBpdCBpcyBhIFwiZGV2IHB1c2hcIlxuICAgIH0sXG4gICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0byBwZXJzaXN0IHRoZSBpbmRleGVzIHNlcGFyYXRlIGZyb20gdGhlIHNjaGVtYT9cbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnaW5kZXhlcycsXG4gICAgLy8gICB0eXBlOiAnYXJyYXknLFxuICAgIC8vICAgZmllbGRzOiBbXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBuYW1lOiAnaW5kZXgnLFxuICAgIC8vICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAge1xuICAgIC8vICAgICAgIG5hbWU6ICd2YWx1ZScsXG4gICAgLy8gICAgICAgdHlwZTogJ2pzb24nLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgXSxcbiAgICAvLyB9LFxuICBdLFxuICBncmFwaFFMOiBmYWxzZSxcbiAgc2x1ZzogJ3BheWxvYWQtbWlncmF0aW9ucycsXG59XG4iXSwibmFtZXMiOlsibWlncmF0aW9uc0NvbGxlY3Rpb24iLCJhZG1pbiIsImhpZGRlbiIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwiZ3JhcGhRTCIsInNsdWciXSwibWFwcGluZ3MiOiI7Ozs7K0JBRWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF5QztJQUNwREMsT0FBTztRQUNMQyxRQUFRO0lBQ1Y7SUFDQUMsUUFBUTtRQUNOO1lBQ0VDLE1BQU07WUFDTkMsTUFBTTtRQUNSO1FBQ0E7WUFDRUQsTUFBTTtZQUNOQyxNQUFNO1FBRVI7S0FnQkQ7SUFDREMsU0FBUztJQUNUQyxNQUFNO0FBQ1IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM3D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AASD,eAAO,MAAM,OAAO,yKAgBjB,IAAI,KAAG,QAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM3D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AASD,eAAO,MAAM,OAAO,yKAgBjB,IAAI,KAAG,QAAQ,IAAI,CAyTrB,CAAA"}
|
|
@@ -54,15 +54,8 @@ const promise = async ({ id, context, data, doc, docWithLocales, errors, field,
|
|
|
54
54
|
}
|
|
55
55
|
// Validate
|
|
56
56
|
if (!skipValidationFromHere && field.validate) {
|
|
57
|
-
|
|
57
|
+
const valueToValidate = siblingData[field.name];
|
|
58
58
|
let jsonError;
|
|
59
|
-
if ([
|
|
60
|
-
'array',
|
|
61
|
-
'blocks'
|
|
62
|
-
].includes(field.type)) {
|
|
63
|
-
const rows = siblingData[field.name];
|
|
64
|
-
valueToValidate = Array.isArray(rows) ? rows.length : 0;
|
|
65
|
-
}
|
|
66
59
|
if (field.type === 'json' && typeof siblingData[field.name] === 'string') {
|
|
67
60
|
try {
|
|
68
61
|
JSON.parse(siblingData[field.name]);
|
|
@@ -304,4 +297,4 @@ const promise = async ({ id, context, data, doc, docWithLocales, errors, field,
|
|
|
304
297
|
}
|
|
305
298
|
};
|
|
306
299
|
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuL2dldEV4aXN0aW5nUm93RG9jJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jV2l0aExvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVtdXG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zOiAoKCkgPT4gdm9pZClbXVxuICBvcGVyYXRpb246IE9wZXJhdGlvblxuICBwYXRoOiBzdHJpbmdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2tpcFZhbGlkYXRpb246IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUnVuIGNvbmRpdGlvblxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIFZhbGlkYXRlIGRhdGFcbi8vIC0gVHJhbnNmb3JtIGRhdGEgZm9yIHN0b3JhZ2Vcbi8vIC0gVW5mbGF0dGVuIGxvY2FsZXNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBpZCxcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBkb2NXaXRoTG9jYWxlcyxcbiAgZXJyb3JzLFxuICBmaWVsZCxcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICBvcGVyYXRpb24sXG4gIHBhdGgsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG4gIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgc2tpcFZhbGlkYXRpb24sXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHBhc3Nlc0NvbmRpdGlvbiA9IGZpZWxkLmFkbWluPy5jb25kaXRpb25cbiAgICA/IGZpZWxkLmFkbWluLmNvbmRpdGlvbihkYXRhLCBzaWJsaW5nRGF0YSwgeyB1c2VyOiByZXEudXNlciB9KVxuICAgIDogdHJ1ZVxuICBsZXQgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHNraXBWYWxpZGF0aW9uIHx8ICFwYXNzZXNDb25kaXRpb25cblxuICBjb25zdCBkZWZhdWx0TG9jYWxlID0gcmVxLnBheWxvYWQuY29uZmlnPy5sb2NhbGl6YXRpb25cbiAgICA/IHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGVcbiAgICA6ICdlbidcbiAgY29uc3Qgb3BlcmF0aW9uTG9jYWxlID0gcmVxLmxvY2FsZSB8fCBkZWZhdWx0TG9jYWxlXG5cbiAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgLy8gc2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBmaWVsZCBpcyBsb2NhbGl6ZWQgYW5kIHRoZSBpbmNvbWluZyBkYXRhIGlzIG51bGxcbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIG9wZXJhdGlvbkxvY2FsZSAhPT0gZGVmYXVsdExvY2FsZSkge1xuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiYgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5iZWZvcmVDaGFuZ2UpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbkZyb21IZXJlICYmIGZpZWxkLnZhbGlkYXRlKSB7XG4gICAgICBsZXQgdmFsdWVUb1ZhbGlkYXRlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cbiAgICAgIGxldCBqc29uRXJyb3JcblxuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IEFycmF5LmlzQXJyYXkocm93cykgPyByb3dzLmxlbmd0aCA6IDBcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdqc29uJyAmJiB0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgSlNPTi5wYXJzZShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBqc29uRXJyb3IgPSBlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IGZpZWxkLnZhbGlkYXRlKHZhbHVlVG9WYWxpZGF0ZSwge1xuICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgaWQsXG4gICAgICAgIGRhdGE6IG1lcmdlKGRvYywgZGF0YSwgeyBhcnJheU1lcmdlOiAoXywgc291cmNlKSA9PiBzb3VyY2UgfSksXG4gICAgICAgIGpzb25FcnJvcixcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXlsb2FkOiByZXEucGF5bG9hZCxcbiAgICAgICAgc2libGluZ0RhdGE6IG1lcmdlKHNpYmxpbmdEb2MsIHNpYmxpbmdEYXRhLCB7IGFycmF5TWVyZ2U6IChfLCBzb3VyY2UpID0+IHNvdXJjZSB9KSxcbiAgICAgICAgdDogcmVxLnQsXG4gICAgICAgIHVzZXI6IHJlcS51c2VyLFxuICAgICAgfSlcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGAke3BhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgbWVzc2FnZTogdmFsaWRhdGlvblJlc3VsdCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQdXNoIG1lcmdlIGxvY2FsZSBhY3Rpb24gaWYgYXBwbGljYWJsZVxuICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgaWYgKHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBjb25zdCB7IGxvY2FsaXphdGlvbiB9ID0gcmVxLnBheWxvYWQuY29uZmlnXG4gICAgICAgICAgY29uc3QgbG9jYWxlRGF0YSA9IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoKGxvY2FsaXplZFZhbHVlcywgbG9jYWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID1cbiAgICAgICAgICAgICAgbG9jYWxlID09PSByZXEubG9jYWxlXG4gICAgICAgICAgICAgICAgPyBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuICAgICAgICAgICAgICAgIDogc2libGluZ0RvY1dpdGhMb2NhbGVzPy5bZmllbGQubmFtZV0/Lltsb2NhbGVdXG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBsb2NhbGUgdmFsdWUgaWYgaXQncyBub3QgdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubG9jYWxpemVkVmFsdWVzLFxuICAgICAgICAgICAgICAgIFtsb2NhbGVdOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsb2NhbGl6ZWRWYWx1ZXNcbiAgICAgICAgICB9LCB7fSlcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBsb2NhbGVzIHdpdGggZGF0YSwgc2V0IHRoZSBkYXRhXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGxvY2FsZURhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbG9jYWxlRGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIC8vIFRyYW5zZm9ybSBwb2ludCBkYXRhIGZvciBzdG9yYWdlXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoc2libGluZ0RhdGFbZmllbGQubmFtZV0pICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzBdICE9PSBudWxsICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7XG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoc2libGluZ0RhdGFbZmllbGQubmFtZV1bMF0pLFxuICAgICAgICAgICAgcGFyc2VGbG9hdChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVsxXSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNpYmxpbmdEb2M6IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aH0ke2ZpZWxkLm5hbWV9LiR7aX0uYCxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogcm93LFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jOiBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pLFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXM6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByb3dTaWJsaW5nRG9jID0gZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uJHtpfS5gLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogcm93LFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvd1NpYmxpbmdEb2MsXG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiByb3dTaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJQYXRoID0gcGF0aFxuICAgICAgbGV0IHRhYlNpYmxpbmdEYXRhID0gc2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1xuXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiUGF0aCA9IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gXG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aDogdGFiUGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogdGFiU2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYlNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJkb2NXaXRoTG9jYWxlcyIsImVycm9ycyIsImZpZWxkIiwibWVyZ2VMb2NhbGVBY3Rpb25zIiwib3BlcmF0aW9uIiwicGF0aCIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsInNpYmxpbmdEb2NXaXRoTG9jYWxlcyIsInNraXBWYWxpZGF0aW9uIiwicGFzc2VzQ29uZGl0aW9uIiwiYWRtaW4iLCJjb25kaXRpb24iLCJ1c2VyIiwic2tpcFZhbGlkYXRpb25Gcm9tSGVyZSIsImRlZmF1bHRMb2NhbGUiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwib3BlcmF0aW9uTG9jYWxlIiwibG9jYWxlIiwiZmllbGRBZmZlY3RzRGF0YSIsImxvY2FsaXplZCIsImluY2x1ZGVzIiwidHlwZSIsIm5hbWUiLCJob29rcyIsImJlZm9yZUNoYW5nZSIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwiaG9va2VkVmFsdWUiLCJvcmlnaW5hbERvYyIsInZhbHVlIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ2YWxpZGF0ZSIsInZhbHVlVG9WYWxpZGF0ZSIsImpzb25FcnJvciIsInJvd3MiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJKU09OIiwicGFyc2UiLCJlIiwidmFsaWRhdGlvblJlc3VsdCIsIm1lcmdlIiwiYXJyYXlNZXJnZSIsIl8iLCJzb3VyY2UiLCJ0IiwicHVzaCIsIm1lc3NhZ2UiLCJsb2NhbGVEYXRhIiwibG9jYWxlQ29kZXMiLCJsb2NhbGl6ZWRWYWx1ZXMiLCJmaWVsZFZhbHVlIiwiT2JqZWN0Iiwia2V5cyIsImNvb3JkaW5hdGVzIiwicGFyc2VGbG9hdCIsInRyYXZlcnNlRmllbGRzIiwiZmllbGRzIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwicm93IiwiaSIsImdldEV4aXN0aW5nUm93RG9jIiwiYWxsIiwicm93U2libGluZ0RvYyIsInJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyIsImJsb2NrVHlwZVRvTWF0Y2giLCJibG9ja1R5cGUiLCJibG9jayIsImJsb2NrcyIsImZpbmQiLCJzbHVnIiwidGFiUGF0aCIsInRhYlNpYmxpbmdEYXRhIiwidGFiU2libGluZ0RvYyIsInRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyIsInRhYkhhc05hbWUiLCJ0YWJzIiwibWFwIiwidGFiIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBb0N2QkE7OztlQUFBQTs7O2tFQW5DSzt1QkFNMkI7bUNBQ1g7Z0NBQ0g7Ozs7OztBQTJCeEIsTUFBTUEsVUFBVSxPQUFPLEVBQzVCQyxFQUFFLEVBQ0ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxLQUFLLEVBQ0xDLGtCQUFrQixFQUNsQkMsU0FBUyxFQUNUQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNUO0lBQ0wsTUFBTUMsa0JBQWtCVCxNQUFNVSxLQUFLLEVBQUVDLFlBQ2pDWCxNQUFNVSxLQUFLLENBQUNDLFNBQVMsQ0FBQ2YsTUFBTVMsYUFBYTtRQUFFTyxNQUFNUixJQUFJUSxJQUFJO0lBQUMsS0FDMUQ7SUFDSixJQUFJQyx5QkFBeUJMLGtCQUFrQixDQUFDQztJQUVoRCxNQUFNSyxnQkFBZ0JWLElBQUlXLE9BQU8sQ0FBQ0MsTUFBTSxFQUFFQyxlQUN0Q2IsSUFBSVcsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksRUFBRUgsZ0JBQ2pDO0lBQ0osTUFBTUksa0JBQWtCZCxJQUFJZSxNQUFNLElBQUlMO0lBRXRDLElBQUlNLElBQUFBLHVCQUFnQixFQUFDcEIsUUFBUTtRQUMzQiwwRUFBMEU7UUFDMUUsSUFBSUEsTUFBTXFCLFNBQVMsSUFBSUgsb0JBQW9CSixlQUFlO1lBQ3hELElBQUk7Z0JBQUM7Z0JBQVM7YUFBUyxDQUFDUSxRQUFRLENBQUN0QixNQUFNdUIsSUFBSSxLQUFLbEIsV0FBVyxDQUFDTCxNQUFNd0IsSUFBSSxDQUFDLEtBQUssTUFBTTtnQkFDaEZYLHlCQUF5QjtZQUMzQjtRQUNGO1FBRUEsZ0JBQWdCO1FBQ2hCLElBQUliLE1BQU15QixLQUFL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
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuL2dldEV4aXN0aW5nUm93RG9jJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jV2l0aExvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVtdXG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zOiAoKCkgPT4gdm9pZClbXVxuICBvcGVyYXRpb246IE9wZXJhdGlvblxuICBwYXRoOiBzdHJpbmdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2tpcFZhbGlkYXRpb246IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUnVuIGNvbmRpdGlvblxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIFZhbGlkYXRlIGRhdGFcbi8vIC0gVHJhbnNmb3JtIGRhdGEgZm9yIHN0b3JhZ2Vcbi8vIC0gVW5mbGF0dGVuIGxvY2FsZXNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBpZCxcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBkb2NXaXRoTG9jYWxlcyxcbiAgZXJyb3JzLFxuICBmaWVsZCxcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICBvcGVyYXRpb24sXG4gIHBhdGgsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG4gIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgc2tpcFZhbGlkYXRpb24sXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHBhc3Nlc0NvbmRpdGlvbiA9IGZpZWxkLmFkbWluPy5jb25kaXRpb25cbiAgICA/IGZpZWxkLmFkbWluLmNvbmRpdGlvbihkYXRhLCBzaWJsaW5nRGF0YSwgeyB1c2VyOiByZXEudXNlciB9KVxuICAgIDogdHJ1ZVxuICBsZXQgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHNraXBWYWxpZGF0aW9uIHx8ICFwYXNzZXNDb25kaXRpb25cblxuICBjb25zdCBkZWZhdWx0TG9jYWxlID0gcmVxLnBheWxvYWQuY29uZmlnPy5sb2NhbGl6YXRpb25cbiAgICA/IHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGVcbiAgICA6ICdlbidcbiAgY29uc3Qgb3BlcmF0aW9uTG9jYWxlID0gcmVxLmxvY2FsZSB8fCBkZWZhdWx0TG9jYWxlXG5cbiAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgLy8gc2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBmaWVsZCBpcyBsb2NhbGl6ZWQgYW5kIHRoZSBpbmNvbWluZyBkYXRhIGlzIG51bGxcbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIG9wZXJhdGlvbkxvY2FsZSAhPT0gZGVmYXVsdExvY2FsZSkge1xuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiYgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5iZWZvcmVDaGFuZ2UpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbkZyb21IZXJlICYmIGZpZWxkLnZhbGlkYXRlKSB7XG4gICAgICBjb25zdCB2YWx1ZVRvVmFsaWRhdGUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuICAgICAgbGV0IGpzb25FcnJvclxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2pzb24nICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBKU09OLnBhcnNlKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZylcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGpzb25FcnJvciA9IGVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgZmllbGQudmFsaWRhdGUodmFsdWVUb1ZhbGlkYXRlLCB7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgICBpZCxcbiAgICAgICAgZGF0YTogbWVyZ2UoZG9jLCBkYXRhLCB7IGFycmF5TWVyZ2U6IChfLCBzb3VyY2UpID0+IHNvdXJjZSB9KSxcbiAgICAgICAganNvbkVycm9yLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBheWxvYWQ6IHJlcS5wYXlsb2FkLFxuICAgICAgICBzaWJsaW5nRGF0YTogbWVyZ2Uoc2libGluZ0RvYywgc2libGluZ0RhdGEsIHsgYXJyYXlNZXJnZTogKF8sIHNvdXJjZSkgPT4gc291cmNlIH0pLFxuICAgICAgICB0OiByZXEudCxcbiAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICB9KVxuXG4gICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogYCR7cGF0aH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICBtZXNzYWdlOiB2YWxpZGF0aW9uUmVzdWx0LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFB1c2ggbWVyZ2UgbG9jYWxlIGFjdGlvbiBpZiBhcHBsaWNhYmxlXG4gICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICBpZiAocmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGNvbnN0IHsgbG9jYWxpemF0aW9uIH0gPSByZXEucGF5bG9hZC5jb25maWdcbiAgICAgICAgICBjb25zdCBsb2NhbGVEYXRhID0gbG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLnJlZHVjZSgobG9jYWxpemVkVmFsdWVzLCBsb2NhbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPVxuICAgICAgICAgICAgICBsb2NhbGUgPT09IHJlcS5sb2NhbGVcbiAgICAgICAgICAgICAgICA/IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICAgICAgICAgICAgOiBzaWJsaW5nRG9jV2l0aExvY2FsZXM/LltmaWVsZC5uYW1lXT8uW2xvY2FsZV1cblxuICAgICAgICAgICAgLy8gdXBkYXRlIGxvY2FsZSB2YWx1ZSBpZiBpdCdzIG5vdCB1bmRlZmluZWRcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5sb2NhbGl6ZWRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgW2xvY2FsZV06IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZFZhbHVlc1xuICAgICAgICAgIH0sIHt9KVxuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZXMgd2l0aCBkYXRhLCBzZXQgdGhlIGRhdGFcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobG9jYWxlRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBsb2NhbGVEYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgLy8gVHJhbnNmb3JtIHBvaW50IGRhdGEgZm9yIHN0b3JhZ2VcbiAgICAgIGlmIChcbiAgICAgICAgQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkgJiZcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1bMF0gIT09IG51bGwgJiZcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1bMV0gIT09IG51bGxcbiAgICAgICkge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHtcbiAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgcGFyc2VGbG9hdChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVswXSksXG4gICAgICAgICAgICBwYXJzZUZsb2F0KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JylcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvYzogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uJHtpfS5gLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0pLFxuICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvY1dpdGhMb2NhbGVzID0gZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0pXG5cbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVUb01hdGNoID0gcm93LmJsb2NrVHlwZSB8fCByb3dTaWJsaW5nRG9jLmJsb2NrVHlwZVxuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IGJsb2NrVHlwZVRvTWF0Y2gpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS4ke2l9LmAsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXM6IHJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFiJzoge1xuICAgICAgbGV0IHRhYlBhdGggPSBwYXRoXG4gICAgICBsZXQgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICBsZXQgdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzID0gc2libGluZ0RvY1dpdGhMb2NhbGVzXG5cbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICB0YWJQYXRoID0gYCR7cGF0aH0ke2ZpZWxkLm5hbWV9LmBcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JylcbiAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0gPSB7fVxuXG4gICAgICAgIHRhYlNpYmxpbmdEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFiU2libGluZ0RvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzID0gc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoOiB0YWJQYXRoLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiB0YWJTaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogdGFiU2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiB0YWJTaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiaWQiLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImRvY1dpdGhMb2NhbGVzIiwiZXJyb3JzIiwiZmllbGQiLCJtZXJnZUxvY2FsZUFjdGlvbnMiLCJvcGVyYXRpb24iLCJwYXRoIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwic2libGluZ0RvY1dpdGhMb2NhbGVzIiwic2tpcFZhbGlkYXRpb24iLCJwYXNzZXNDb25kaXRpb24iLCJhZG1pbiIsImNvbmRpdGlvbiIsInVzZXIiLCJza2lwVmFsaWRhdGlvbkZyb21IZXJlIiwiZGVmYXVsdExvY2FsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJvcGVyYXRpb25Mb2NhbGUiLCJsb2NhbGUiLCJmaWVsZEFmZmVjdHNEYXRhIiwibG9jYWxpemVkIiwiaW5jbHVkZXMiLCJ0eXBlIiwibmFtZSIsImhvb2tzIiwiYmVmb3JlQ2hhbmdlIiwicmVkdWNlIiwicHJpb3JIb29rIiwiY3VycmVudEhvb2siLCJob29rZWRWYWx1ZSIsIm9yaWdpbmFsRG9jIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwianNvbkVycm9yIiwiSlNPTiIsInBhcnNlIiwiZSIsInZhbGlkYXRpb25SZXN1bHQiLCJtZXJnZSIsImFycmF5TWVyZ2UiLCJfIiwic291cmNlIiwidCIsInB1c2giLCJtZXNzYWdlIiwibG9jYWxlRGF0YSIsImxvY2FsZUNvZGVzIiwibG9jYWxpemVkVmFsdWVzIiwiZmllbGRWYWx1ZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJjb29yZGluYXRlcyIsInBhcnNlRmxvYXQiLCJ0cmF2ZXJzZUZpZWxkcyIsImZpZWxkcyIsInJvd3MiLCJwcm9taXNlcyIsImZvckVhY2giLCJyb3ciLCJpIiwiZ2V0RXhpc3RpbmdSb3dEb2MiLCJhbGwiLCJyb3dTaWJsaW5nRG9jIiwicm93U2libGluZ0RvY1dpdGhMb2NhbGVzIiwiYmxvY2tUeXBlVG9NYXRjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsInNsdWciLCJ0YWJQYXRoIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFiU2libGluZ0RvY1dpdGhMb2NhbGVzIiwidGFiSGFzTmFtZSIsInRhYnMiLCJtYXAiLCJ0YWIiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFvQ3ZCQTs7O2VBQUFBOzs7a0VBbkNLO3VCQU0yQjttQ0FDWDtnQ0FDSDs7Ozs7O0FBMkJ4QixNQUFNQSxVQUFV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAmEtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAmEtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBzD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAiBC"}
|
|
@@ -358,19 +358,20 @@ const relationship = async (value, options)=>{
|
|
|
358
358
|
return validateFilterOptions(value, options);
|
|
359
359
|
};
|
|
360
360
|
const array = (value, { maxRows, minRows, required, t })=>{
|
|
361
|
-
|
|
361
|
+
const arrayLength = Array.isArray(value) ? value.length : 0;
|
|
362
|
+
if (minRows && arrayLength < minRows) {
|
|
362
363
|
return t('validation:requiresAtLeast', {
|
|
363
364
|
count: minRows,
|
|
364
365
|
label: t('rows')
|
|
365
366
|
});
|
|
366
367
|
}
|
|
367
|
-
if (maxRows &&
|
|
368
|
+
if (maxRows && arrayLength > maxRows) {
|
|
368
369
|
return t('validation:requiresNoMoreThan', {
|
|
369
370
|
count: maxRows,
|
|
370
371
|
label: t('rows')
|
|
371
372
|
});
|
|
372
373
|
}
|
|
373
|
-
if (!
|
|
374
|
+
if (!arrayLength && required) {
|
|
374
375
|
return t('validation:requiresAtLeast', {
|
|
375
376
|
count: 1,
|
|
376
377
|
label: t('row')
|
|
@@ -398,19 +399,20 @@ const radio = (value, { options, required, t })=>{
|
|
|
398
399
|
return required ? t('validation:required') : true;
|
|
399
400
|
};
|
|
400
401
|
const blocks = (value, { maxRows, minRows, required, t })=>{
|
|
401
|
-
|
|
402
|
+
const arrayLength = Array.isArray(value) ? value.length : 0;
|
|
403
|
+
if (minRows && arrayLength < minRows) {
|
|
402
404
|
return t('validation:requiresAtLeast', {
|
|
403
405
|
count: minRows,
|
|
404
406
|
label: t('rows')
|
|
405
407
|
});
|
|
406
408
|
}
|
|
407
|
-
if (maxRows &&
|
|
409
|
+
if (maxRows && arrayLength > maxRows) {
|
|
408
410
|
return t('validation:requiresNoMoreThan', {
|
|
409
411
|
count: maxRows,
|
|
410
412
|
label: t('rows')
|
|
411
413
|
});
|
|
412
414
|
}
|
|
413
|
-
if (!
|
|
415
|
+
if (!arrayLength && required) {
|
|
414
416
|
return t('validation:requiresAtLeast', {
|
|
415
417
|
count: 1,
|
|
416
418
|
label: t('row')
|
|
@@ -451,4 +453,4 @@ const _default = {
|
|
|
451
453
|
upload
|
|
452
454
|
};
|
|
453
455
|
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZSA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gdHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnID8gW3JlbGF0aW9uVG9dIDogcmVsYXRpb25Ub1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbGxlY3Rpb25zLm1hcChhc3luYyAoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgY29uc3QgdmFsdWVJRHM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy52YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH0sIG9wdGlvbkZpbHRlcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucy5wYXlsb2FkLmNvbGxlY3Rpb25zW29wdGlvbnMucmVsYXRpb25Ub10uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcbiAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGlmICgoIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKG1pblJvd3MgJiYgdmFsdWUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1pbjogbWluUm93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgncm93cycpLCBtYXg6IG1heFJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0ZWRJRCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGlkRmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dPy5jb25maWc/LmZpZWxkcz8uZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgKVxuICAgICAgbGV0IHR5cGVcblxuICAgICAgaWYgKGlkRmllbGQpIHtcbiAgICAgICAgdHlwZSA9IGlkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9ICdPYmplY3RJRCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgZmllbGQgaGFzIHRoZSBmb2xsb3dpbmcgaW52YWxpZCBzZWxlY3Rpb25zOiAke2ludmFsaWRSZWxhdGlvbnNoaXBzXG4gICAgICAgIC5tYXAoKGVyciwgaW52YWxpZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9YFxuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKX1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAobWluUm93cyAmJiB2YWx1ZSA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiB2YWx1ZSA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIXZhbHVlICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAodmFsdWUsIHsgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZU1hdGNoZXNPcHRpb24gPSBvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICAgcmV0dXJuIHZhbHVlTWF0Y2hlc09wdGlvbiB8fCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkID8gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIDogdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAobWluUm93cyAmJiB2YWx1ZSA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiB2YWx1ZSA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIXZhbHVlICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcG9pbnQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFBvaW50RmllbGQ+ID0gKFxuICB2YWx1ZTogW251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSA9IFsnJywgJyddLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgbG5nID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMF0pKVxuICBjb25zdCBsYXQgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVsxXSkpXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICgodmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGxhdCAhPT0gJ251bWJlcicpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obG5nKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxhdCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggIT09IDIpKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc1R3b051bWJlcnMnKVxuICB9XG5cbiAgaWYgKCh2YWx1ZVsxXSAmJiBOdW1iZXIuaXNOYU4obG5nKSkgfHwgKHZhbHVlWzBdICYmIE51bWJlci5pc05hTihsYXQpKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFycmF5LFxuICBibG9ja3MsXG4gIGNoZWNrYm94LFxuICBjb2RlLFxuICBkYXRlLFxuICBlbWFpbCxcbiAganNvbixcbiAgbnVtYmVyLFxuICBwYXNzd29yZCxcbiAgcG9pbnQsXG4gIHJhZGlvLFxuICByZWxhdGlvbnNoaXAsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJudW1iZXIiLCJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJ1cGxvYWQiLCJyZWxhdGlvbnNoaXAiLCJhcnJheSIsInNlbGVjdCIsInJhZGlvIiwiYmxvY2tzIiwicG9pbnQiLCJ2YWx1ZSIsImhhc01hbnkiLCJtYXgiLCJtYXhSb3dzIiwibWluIiwibWluUm93cyIsInJlcXVpcmVkIiwidCIsInRvVmFsaWRhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJmbG9hdFZhbHVlIiwicGFyc2VGbG9hdCIsIk51bWJlciIsImlzTmFOIiwibGFiZWwiLCJsZW5ndGgiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1pbkxlbmd0aCIsInBheWxvYWQiLCJjb25maWciLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsInRlc3QiLCJ1bmRlZmluZWQiLCJqc29uRXJyb3IiLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwib3B0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwicmVzdWx0IiwiZmluZCIsImRlcHRoIiwibGltaXQiLCJwYWdpbmF0aW9uIiwid2hlcmUiLCJhbmQiLCJpbiIsImRvY3MiLCJkb2MiLCJpbnZhbGlkUmVsYXRpb25zaGlwcyIsImZpbHRlciIsInJlcXVlc3RlZElEIiwiaW5kZXhPZiIsInJlZHVjZSIsImVyciIsImludmFsaWQiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsImlkRmllbGQiLCJmaWVsZHMiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsImdldElEVHlwZSIsImlzVmFsaWRJRCIsImpvaW4iLCJjb3VudCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5QmFBLE1BQU07ZUFBTkE7O0lBdURBQyxJQUFJO2VBQUpBOztJQTBCQUMsUUFBUTtlQUFSQTs7SUF5QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBd0JBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQXNHQUMsTUFBTTtlQUFOQTs7SUFtQkFDLFlBQVk7ZUFBWkE7O0lBcUVBQyxLQUFLO2VBQUxBOztJQW1CQUMsTUFBTTtlQUFOQTs7SUFxQ0FDLEtBQUs7ZUFBTEE7O0lBV0FDLE1BQU07ZUFBTkE7O0lBbUJBQyxLQUFLO2VBQUxBOztJQXVCYixPQWlCQztlQWpCRDs7O2tFQTVkc0I7MkJBQ0k7MkJBQ0E7dUJBQ087Ozs7OztBQUUxQixNQUFNZixTQUFr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
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZSA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gdHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnID8gW3JlbGF0aW9uVG9dIDogcmVsYXRpb25Ub1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbGxlY3Rpb25zLm1hcChhc3luYyAoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgY29uc3QgdmFsdWVJRHM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy52YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH0sIG9wdGlvbkZpbHRlcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucy5wYXlsb2FkLmNvbGxlY3Rpb25zW29wdGlvbnMucmVsYXRpb25Ub10uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcbiAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGlmICgoIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKG1pblJvd3MgJiYgdmFsdWUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1pbjogbWluUm93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgncm93cycpLCBtYXg6IG1heFJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0ZWRJRCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGlkRmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dPy5jb25maWc/LmZpZWxkcz8uZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgKVxuICAgICAgbGV0IHR5cGVcblxuICAgICAgaWYgKGlkRmllbGQpIHtcbiAgICAgICAgdHlwZSA9IGlkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9ICdPYmplY3RJRCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgZmllbGQgaGFzIHRoZSBmb2xsb3dpbmcgaW52YWxpZCBzZWxlY3Rpb25zOiAke2ludmFsaWRSZWxhdGlvbnNoaXBzXG4gICAgICAgIC5tYXAoKGVyciwgaW52YWxpZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9YFxuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKX1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogMFxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChtYXhSb3dzICYmIGFycmF5TGVuZ3RoID4gbWF4Um93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzTm9Nb3JlVGhhbicsIHsgY291bnQ6IG1heFJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmICghYXJyYXlMZW5ndGggJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgncm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBibG9ja3M6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEJsb2NrRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKG1pblJvd3MgJiYgYXJyYXlMZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogbWluUm93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKG1heFJvd3MgJiYgYXJyYXlMZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJywgeyBjb3VudDogbWF4Um93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKCFhcnJheUxlbmd0aCAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IDEsIGxhYmVsOiB0KCdyb3cnKSB9KVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBQb2ludEZpZWxkPiA9IChcbiAgdmFsdWU6IFtudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZ10gPSBbJycsICcnXSxcbiAgeyByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGNvbnN0IGxuZyA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzBdKSlcbiAgY29uc3QgbGF0ID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMV0pKVxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAoKHZhbHVlWzBdICYmIHZhbHVlWzFdICYmIHR5cGVvZiBsbmcgIT09ICdudW1iZXInICYmIHR5cGVvZiBsYXQgIT09ICdudW1iZXInKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxuZykgfHxcbiAgICAgIE51bWJlci5pc05hTihsYXQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoICE9PSAyKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNUd29OdW1iZXJzJylcbiAgfVxuXG4gIGlmICgodmFsdWVbMV0gJiYgTnVtYmVyLmlzTmFOKGxuZykpIHx8ICh2YWx1ZVswXSAmJiBOdW1iZXIuaXNOYU4obGF0KSkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcnJheSxcbiAgYmxvY2tzLFxuICBjaGVja2JveCxcbiAgY29kZSxcbiAgZGF0ZSxcbiAgZW1haWwsXG4gIGpzb24sXG4gIG51bWJlcixcbiAgcGFzc3dvcmQsXG4gIHBvaW50LFxuICByYWRpbyxcbiAgcmVsYXRpb25zaGlwLFxuICBzZWxlY3QsXG4gIHRleHQsXG4gIHRleHRhcmVhLFxuICB1cGxvYWQsXG59XG4iXSwibmFtZXMiOlsibnVtYmVyIiwidGV4dCIsInBhc3N3b3JkIiwiZW1haWwiLCJ0ZXh0YXJlYSIsImNvZGUiLCJqc29uIiwiY2hlY2tib3giLCJkYXRlIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwiYXJyYXkiLCJzZWxlY3QiLCJyYWRpbyIsImJsb2NrcyIsInBvaW50IiwidmFsdWUiLCJoYXNNYW55IiwibWF4IiwibWF4Um93cyIsIm1pbiIsIm1pblJvd3MiLCJyZXF1aXJlZCIsInQiLCJ0b1ZhbGlkYXRlIiwiQXJyYXkiLCJpc0FycmF5IiwidmFsdWVUb1ZhbGlkYXRlIiwiZmxvYXRWYWx1ZSIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc05hTiIsImxhYmVsIiwibGVuZ3RoIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJwYXlsb2FkIiwiY29uZmlnIiwiZGVmYXVsdE1heFRleHRMZW5ndGgiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiRGF0ZSIsInBhcnNlIiwidG9TdHJpbmciLCJ2YWxpZGF0ZUZpbHRlck9wdGlvbnMiLCJpZCIsImRhdGEiLCJmaWx0ZXJPcHRpb25zIiwicmVsYXRpb25UbyIsInNpYmxpbmdEYXRhIiwidXNlciIsImNhblVzZURPTSIsIm9wdGlvbnMiLCJjb2xsZWN0aW9ucyIsInZhbHVlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJjb2xsZWN0aW9uIiwib3B0aW9uRmlsdGVyIiwidmFsdWVJRHMiLCJmb3JFYWNoIiwidmFsIiwicHVzaCIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiYW5kIiwiaW4iLCJkb2NzIiwiZG9jIiwiaW52YWxpZFJlbGF0aW9uc2hpcHMiLCJmaWx0ZXIiLCJyZXF1ZXN0ZWRJRCIsImluZGV4T2YiLCJyZWR1Y2UiLCJlcnIiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsInR5cGUiLCJnZXRJRFR5cGUiLCJpc1ZhbGlkSUQiLCJqb2luIiwiYXJyYXlMZW5ndGgiLCJjb3VudCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5QmFBLE1BQU07ZUFBTkE7O0lBdURBQyxJQUFJO2VBQUpBOztJQTBCQUMsUUFBUTtlQUFSQTs7SUF5QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBd0JBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQXNHQUMsTUFBTTtlQUFOQTs7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
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;YACjB,MAAM;;eAEH,MAAM;;;eAGN,OAAO;CA0CnB,CAAA"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "useLivePreview", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return useLivePreview;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _react = require("react");
|
|
12
|
-
const _mergeData = require("./mergeData");
|
|
13
|
-
const useLivePreview = (props)=>{
|
|
14
|
-
const { depth = 0, initialPage, serverURL } = props;
|
|
15
|
-
const [data, setData] = (0, _react.useState)(initialPage);
|
|
16
|
-
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
17
|
-
const handleMessage = (0, _react.useCallback)(async (event)=>{
|
|
18
|
-
if (event.origin === serverURL && event.data) {
|
|
19
|
-
const eventData = JSON.parse(event?.data);
|
|
20
|
-
if (eventData.type === 'livePreview') {
|
|
21
|
-
const mergedData = await (0, _mergeData.mergeLivePreviewData)({
|
|
22
|
-
depth,
|
|
23
|
-
existingData: data,
|
|
24
|
-
fieldSchema: eventData.fieldSchemaJSON,
|
|
25
|
-
incomingData: eventData.data,
|
|
26
|
-
serverURL
|
|
27
|
-
});
|
|
28
|
-
setData(mergedData);
|
|
29
|
-
setIsLoading(false);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}, [
|
|
33
|
-
serverURL,
|
|
34
|
-
data,
|
|
35
|
-
depth
|
|
36
|
-
]);
|
|
37
|
-
(0, _react.useEffect)(()=>{
|
|
38
|
-
window.addEventListener('message', handleMessage);
|
|
39
|
-
window.parent.postMessage('ready', serverURL);
|
|
40
|
-
return ()=>{
|
|
41
|
-
window.removeEventListener('message', handleMessage);
|
|
42
|
-
};
|
|
43
|
-
}, [
|
|
44
|
-
serverURL,
|
|
45
|
-
handleMessage
|
|
46
|
-
]);
|
|
47
|
-
return {
|
|
48
|
-
data,
|
|
49
|
-
isLoading
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IG1lcmdlTGl2ZVByZXZpZXdEYXRhIH0gZnJvbSAnLi9tZXJnZURhdGEnXG5cbi8vIFRvIHByZXZlbnQgdGhlIGZsaWNrZXIgb2YgbWlzc2luZyBkYXRhIG9uIGluaXRpYWwgbG9hZCxcbi8vIHlvdSBjYW4gcGFzcyBpbiB0aGUgaW5pdGlhbCBwYWdlIGRhdGEgZnJvbSB0aGUgc2VydmVyXG4vLyBUbyBwcmV2ZW50IHRoZSBmbGlja2VyIG9mIHN0YWxlIGRhdGEgd2hpbGUgdGhlIHBvc3QgbWVzc2FnZSBpcyBiZWluZyBzZW50LFxuLy8geW91IGNhbiBjb25kaXRpb25hbGx5IHJlbmRlciBsb2FkaW5nIFVJIGJhc2VkIG9uIHRoZSBgaXNMb2FkaW5nYCBzdGF0ZVxuXG5leHBvcnQgY29uc3QgdXNlTGl2ZVByZXZpZXcgPSA8VCBleHRlbmRzIGFueT4ocHJvcHM6IHtcbiAgZGVwdGg/OiBudW1iZXJcbiAgaW5pdGlhbFBhZ2U6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn0pOiB7XG4gIGRhdGE6IFRcbiAgaXNMb2FkaW5nOiBib29sZWFuXG59ID0+IHtcbiAgY29uc3QgeyBkZXB0aCA9IDAsIGluaXRpYWxQYWdlLCBzZXJ2ZXJVUkwgfSA9IHByb3BzXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFQ+KGluaXRpYWxQYWdlKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcblxuICBjb25zdCBoYW5kbGVNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5vcmlnaW4gPT09IHNlcnZlclVSTCAmJiBldmVudC5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQ/LmRhdGEpXG5cbiAgICAgICAgaWYgKGV2ZW50RGF0YS50eXBlID09PSAnbGl2ZVByZXZpZXcnKSB7XG4gICAgICAgICAgY29uc3QgbWVyZ2VkRGF0YSA9IGF3YWl0IG1lcmdlTGl2ZVByZXZpZXdEYXRhPFQ+KHtcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZXhpc3RpbmdEYXRhOiBkYXRhLFxuICAgICAgICAgICAgZmllbGRTY2hlbWE6IGV2ZW50RGF0YS5maWVsZFNjaGVtYUpTT04sXG4gICAgICAgICAgICBpbmNvbWluZ0RhdGE6IGV2ZW50RGF0YS5kYXRhLFxuICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBzZXREYXRhKG1lcmdlZERhdGEpXG5cbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGRhdGEsIGRlcHRoXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ3JlYWR5Jywgc2VydmVyVVJMKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGhhbmRsZU1lc3NhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBpc0xvYWRpbmcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VMaXZlUHJldmlldyIsInByb3BzIiwiZGVwdGgiLCJpbml0aWFsUGFnZSIsInNlcnZlclVSTCIsImRhdGEiLCJzZXREYXRhIiwidXNlU3RhdGUiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJoYW5kbGVNZXNzYWdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsIm9yaWdpbiIsImV2ZW50RGF0YSIsIkpTT04iLCJwYXJzZSIsInR5cGUiLCJtZXJnZWREYXRhIiwibWVyZ2VMaXZlUHJldmlld0RhdGEiLCJleGlzdGluZ0RhdGEiLCJmaWVsZFNjaGVtYSIsImZpZWxkU2NoZW1hSlNPTiIsImluY29taW5nRGF0YSIsInVzZUVmZmVjdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBU2FBOzs7ZUFBQUE7Ozt1QkFUb0M7MkJBRVo7QUFPOUIsTUFBTUEsaUJBQWlCLENBQWdCQztJQVE1QyxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxFQUFFQyxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHSDtJQUM5QyxNQUFNLENBQUNJLE1BQU1DLFFBQVEsR0FBR0MsSUFBQUEsZUFBUSxFQUFJSjtJQUNwQyxNQUFNLENBQUNLLFdBQVdDLGFBQWEsR0FBR0YsSUFBQUEsZUFBUSxFQUFVO0lBRXBELE1BQU1HLGdCQUFnQkMsSUFBQUEsa0JBQVcsRUFDL0IsT0FBT0M7UUFDTCxJQUFJQSxNQUFNQyxNQUFNLEtBQUtULGFBQWFRLE1BQU1QLElBQUksRUFBRTtZQUM1QyxNQUFNUyxZQUFZQyxLQUFLQyxLQUFLLENBQUNKLE9BQU9QO1lBRXBDLElBQUlTLFVBQVVHLElBQUksS0FBSyxlQUFlO2dCQUNwQyxNQUFNQyxhQUFhLE1BQU1DLElBQUFBLCtCQUFvQixFQUFJO29CQUMvQ2pCO29CQUNBa0IsY0FBY2Y7b0JBQ2RnQixhQUFhUCxVQUFVUSxlQUFlO29CQUN0Q0MsY0FBY1QsVUFBVVQsSUFBSTtvQkFDNUJEO2dCQUNGO2dCQUVBRSxRQUFRWTtnQkFFUlQsYUFBYTtZQUNmO1FBQ0Y7SUFDRixHQUNBO1FBQUNMO1FBQVdDO1FBQU1IO0tBQU07SUFHMUJzQixJQUFBQSxnQkFBUyxFQUFDO1FBQ1JDLE9BQU9DLGdCQUFnQixDQUFDLFdBQVdoQjtRQUNuQ2UsT0FBT0UsTUFBTSxDQUFDQyxXQUFXLENBQUMsU0FBU3hCO1FBRW5DLE9BQU87WUFDTHFCLE9BQU9JLG1CQUFtQixDQUFDLFdBQVduQjtRQUN4QztJQUNGLEdBQUc7UUFBQ047UUFBV007S0FBYztJQUU3QixPQUFPO1FBQ0xMO1FBQ0FHO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type MergeLiveDataArgs<T> = {
|
|
2
|
-
apiRoute?: string;
|
|
3
|
-
depth: number;
|
|
4
|
-
existingData: T;
|
|
5
|
-
fieldSchema: Record<string, unknown>[];
|
|
6
|
-
incomingData: T;
|
|
7
|
-
serverURL: string;
|
|
8
|
-
};
|
|
9
|
-
export declare const mergeLivePreviewData: <T>({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL, }: MergeLiveDataArgs<T>) => Promise<T>;
|
|
10
|
-
//# sourceMappingURL=mergeData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeData.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/mergeData.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAyBhC,CAAA"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "mergeLivePreviewData", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return mergeLivePreviewData;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _traverseFields = require("./traverseFields");
|
|
12
|
-
const mergeLivePreviewData = async ({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL })=>{
|
|
13
|
-
const result = {
|
|
14
|
-
...existingData
|
|
15
|
-
};
|
|
16
|
-
const populationPromises = [];
|
|
17
|
-
(0, _traverseFields.traverseFields)({
|
|
18
|
-
apiRoute,
|
|
19
|
-
depth,
|
|
20
|
-
fieldSchema,
|
|
21
|
-
incomingData,
|
|
22
|
-
populationPromises,
|
|
23
|
-
result,
|
|
24
|
-
serverURL
|
|
25
|
-
});
|
|
26
|
-
await Promise.all(populationPromises);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L21lcmdlRGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbmV4cG9ydCB0eXBlIE1lcmdlTGl2ZURhdGFBcmdzPFQ+ID0ge1xuICBhcGlSb3V0ZT86IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGV4aXN0aW5nRGF0YTogVFxuICBmaWVsZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICBpbmNvbWluZ0RhdGE6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IG1lcmdlTGl2ZVByZXZpZXdEYXRhID0gYXN5bmMgPFQ+KHtcbiAgYXBpUm91dGUsXG4gIGRlcHRoLFxuICBleGlzdGluZ0RhdGEsXG4gIGZpZWxkU2NoZW1hLFxuICBpbmNvbWluZ0RhdGEsXG4gIHNlcnZlclVSTCxcbn06IE1lcmdlTGl2ZURhdGFBcmdzPFQ+KTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uZXhpc3RpbmdEYXRhIH1cblxuICBjb25zdCBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdXG5cbiAgdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFwaVJvdXRlLFxuICAgIGRlcHRoLFxuICAgIGZpZWxkU2NoZW1hLFxuICAgIGluY29taW5nRGF0YSxcbiAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgcmVzdWx0LFxuICAgIHNlcnZlclVSTCxcbiAgfSlcblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3B1bGF0aW9uUHJvbWlzZXMpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbIm1lcmdlTGl2ZVByZXZpZXdEYXRhIiwiYXBpUm91dGUiLCJkZXB0aCIsImV4aXN0aW5nRGF0YSIsImZpZWxkU2NoZW1hIiwiaW5jb21pbmdEYXRhIiwic2VydmVyVVJMIiwicmVzdWx0IiwicG9wdWxhdGlvblByb21pc2VzIiwidHJhdmVyc2VGaWVsZHMiLCJQcm9taXNlIiwiYWxsIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7Z0NBWGtCO0FBV3hCLE1BQU1BLHVCQUF1QixPQUFVLEVBQzVDQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsU0FBUyxFQUNZO0lBQ3JCLE1BQU1DLFNBQVM7UUFBRSxHQUFHSixZQUFZO0lBQUM7SUFFakMsTUFBTUsscUJBQXNDLEVBQUU7SUFFOUNDLElBQUFBLDhCQUFjLEVBQUM7UUFDYlI7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUc7UUFDQUQ7UUFDQUQ7SUFDRjtJQUVBLE1BQU1JLFFBQVFDLEdBQUcsQ0FBQ0g7SUFFbEIsT0FBT0Q7QUFDVCJ9
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type Args = {
|
|
2
|
-
accessor: number | string;
|
|
3
|
-
apiRoute?: string;
|
|
4
|
-
collection: string;
|
|
5
|
-
depth: number;
|
|
6
|
-
id: number | string;
|
|
7
|
-
ref: Record<string, unknown>;
|
|
8
|
-
serverURL: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const promise: ({ id, accessor, apiRoute, collection, depth, ref, serverURL, }: Args) => Promise<void>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/promise.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,OAAO,mEAQjB,IAAI,KAAG,QAAQ,IAAI,CAOrB,CAAA"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "promise", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return promise;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const promise = async ({ id, accessor, apiRoute, collection, depth, ref, serverURL })=>{
|
|
12
|
-
// TODO: get dynamic `api` route from config
|
|
13
|
-
const res = await fetch(`${serverURL}${apiRoute || '/api'}/${collection}/${id}?depth=${depth}`).then((res)=>res.json());
|
|
14
|
-
ref[accessor] = res;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBBcmdzID0ge1xuICBhY2Nlc3NvcjogbnVtYmVyIHwgc3RyaW5nXG4gIGFwaVJvdXRlPzogc3RyaW5nXG4gIGNvbGxlY3Rpb246IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBzZXJ2ZXJVUkw6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jICh7XG4gIGlkLFxuICBhY2Nlc3NvcixcbiAgYXBpUm91dGUsXG4gIGNvbGxlY3Rpb24sXG4gIGRlcHRoLFxuICByZWYsXG4gIHNlcnZlclVSTCxcbn06IEFyZ3MpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgLy8gVE9ETzogZ2V0IGR5bmFtaWMgYGFwaWAgcm91dGUgZnJvbSBjb25maWdcbiAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBmZXRjaChcbiAgICBgJHtzZXJ2ZXJVUkx9JHthcGlSb3V0ZSB8fCAnL2FwaSd9LyR7Y29sbGVjdGlvbn0vJHtpZH0/ZGVwdGg9JHtkZXB0aH1gLFxuICApLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcblxuICByZWZbYWNjZXNzb3JdID0gcmVzXG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiYWNjZXNzb3IiLCJhcGlSb3V0ZSIsImNvbGxlY3Rpb24iLCJkZXB0aCIsInJlZiIsInNlcnZlclVSTCIsInJlcyIsImZldGNoIiwidGhlbiIsImpzb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLFVBQVUsT0FBTyxFQUM1QkMsRUFBRSxFQUNGQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsVUFBVSxFQUNWQyxLQUFLLEVBQ0xDLEdBQUcsRUFDSEMsU0FBUyxFQUNKO0lBQ0wsNENBQTRDO0lBQzVDLE1BQU1DLE1BQVcsTUFBTUMsTUFDckIsQ0FBQyxFQUFFRixVQUFVLEVBQUVKLFlBQVksT0FBTyxDQUFDLEVBQUVDLFdBQVcsQ0FBQyxFQUFFSCxHQUFHLE9BQU8sRUFBRUksTUFBTSxDQUFDLEVBQ3RFSyxJQUFJLENBQUMsQ0FBQ0YsTUFBUUEsSUFBSUcsSUFBSTtJQUV4QkwsR0FBRyxDQUFDSixTQUFTLEdBQUdNO0FBQ2xCIn0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type Args<T> = {
|
|
2
|
-
apiRoute?: string;
|
|
3
|
-
depth: number;
|
|
4
|
-
fieldSchema: Record<string, unknown>[];
|
|
5
|
-
incomingData: T;
|
|
6
|
-
populationPromises: Promise<void>[];
|
|
7
|
-
result: T;
|
|
8
|
-
serverURL: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const traverseFields: <T>({ apiRoute, depth, fieldSchema, incomingData, populationPromises, result, serverURL, }: Args<T>) => void;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=traverseFields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/traverseFields.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,MAAM,EAAE,CAAC,CAAA;IACT,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,0GAQd,IAkNZ,CAAA"}
|