payload-auth 1.6.3 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +19 -16
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +5 -25
- package/dist/better-auth/adapter/types.d.ts +4 -2
- package/dist/better-auth/adapter/types.d.ts.map +1 -1
- package/dist/better-auth/adapter/types.js +1 -1
- package/dist/better-auth/generated-types.d.ts +110 -46
- package/dist/better-auth/generated-types.d.ts.map +1 -1
- package/dist/better-auth/generated-types.js +1 -1
- package/dist/better-auth/plugin/constants.d.ts +15 -1
- package/dist/better-auth/plugin/constants.d.ts.map +1 -1
- package/dist/better-auth/plugin/constants.js +21 -7
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +1 -1
- package/dist/better-auth/plugin/helpers/get-collection.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-collection.js +1 -1
- package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +3 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.js +63 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +7 -7
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +1 -1
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +2 -1
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +6 -3
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +1 -2
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.js +49 -0
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/index.js +6 -2
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +14 -1
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.js +56 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +5 -2
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +10 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +93 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +8 -12
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +5 -3
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +6 -7
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +5 -2
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +5 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +3 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +4 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +9 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +2 -2
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +2 -2
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +2 -2
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +2 -2
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +3 -3
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +2 -2
- package/dist/better-auth/plugin/types.d.ts +14 -4
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/better-auth/scripts/generate-types.js +28 -36
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/package.json +10 -43
- package/dist/authjs/index.d.ts +0 -2
- package/dist/authjs/index.d.ts.map +0 -1
- package/dist/authjs/index.js +0 -3
- package/dist/clerk/admin-ui.d.ts +0 -4
- package/dist/clerk/admin-ui.d.ts.map +0 -1
- package/dist/clerk/admin-ui.js +0 -5
- package/dist/clerk/index.d.ts +0 -7
- package/dist/clerk/index.d.ts.map +0 -1
- package/dist/clerk/index.js +0 -8
- package/dist/clerk/plugin/auth-strategy.d.ts +0 -11
- package/dist/clerk/plugin/auth-strategy.d.ts.map +0 -1
- package/dist/clerk/plugin/auth-strategy.js +0 -45
- package/dist/clerk/plugin/collections/users/access.d.ts +0 -14
- package/dist/clerk/plugin/collections/users/access.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/access.js +0 -36
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts +0 -14
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.js +0 -108
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.d.ts +0 -4
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.js +0 -5
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts +0 -13
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.js +0 -33
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts +0 -11
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.js +0 -27
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts +0 -13
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.js +0 -35
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts +0 -12
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.js +0 -87
- package/dist/clerk/plugin/collections/users/fields.d.ts +0 -6
- package/dist/clerk/plugin/collections/users/fields.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/fields.js +0 -81
- package/dist/clerk/plugin/collections/users/index.d.ts +0 -10
- package/dist/clerk/plugin/collections/users/index.d.ts.map +0 -1
- package/dist/clerk/plugin/collections/users/index.js +0 -95
- package/dist/clerk/plugin/components/after-login-form.d.ts +0 -4
- package/dist/clerk/plugin/components/after-login-form.d.ts.map +0 -1
- package/dist/clerk/plugin/components/after-login-form.js +0 -65
- package/dist/clerk/plugin/components/logout-button.d.ts +0 -2
- package/dist/clerk/plugin/components/logout-button.d.ts.map +0 -1
- package/dist/clerk/plugin/components/logout-button.js +0 -49
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts +0 -6
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts.map +0 -1
- package/dist/clerk/plugin/components/sync-clerk-users-button.js +0 -75
- package/dist/clerk/plugin.d.ts +0 -6
- package/dist/clerk/plugin.d.ts.map +0 -1
- package/dist/clerk/plugin.js +0 -63
- package/dist/clerk/types.d.ts +0 -63
- package/dist/clerk/types.d.ts.map +0 -1
- package/dist/clerk/types.js +0 -3
- package/dist/clerk/utils/clerk-user.d.ts +0 -21
- package/dist/clerk/utils/clerk-user.d.ts.map +0 -1
- package/dist/clerk/utils/clerk-user.js +0 -45
- package/dist/clerk/utils/index.d.ts +0 -4
- package/dist/clerk/utils/index.d.ts.map +0 -1
- package/dist/clerk/utils/index.js +0 -5
- package/dist/clerk/utils/load-clerk-instance.d.ts +0 -8
- package/dist/clerk/utils/load-clerk-instance.d.ts.map +0 -1
- package/dist/clerk/utils/load-clerk-instance.js +0 -11
- package/dist/clerk/utils/svix.d.ts +0 -9
- package/dist/clerk/utils/svix.d.ts.map +0 -1
- package/dist/clerk/utils/svix.js +0 -40
- package/dist/clerk/utils/user.d.ts +0 -17
- package/dist/clerk/utils/user.d.ts.map +0 -1
- package/dist/clerk/utils/user.js +0 -46
- package/dist/kinde/index.d.ts +0 -2
- package/dist/kinde/index.d.ts.map +0 -1
- package/dist/kinde/index.js +0 -3
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { stripe } from "@better-auth/stripe";
|
|
2
2
|
import { emailHarmony, phoneHarmony } from "better-auth-harmony";
|
|
3
3
|
import { getSchema } from "better-auth/db";
|
|
4
|
-
import { admin, anonymous, apiKey, bearer, emailOTP, genericOAuth, jwt, magicLink, multiSession, oneTap, oneTimeToken, openAPI, organization, oidcProvider, phoneNumber, twoFactor, username, customSession } from "better-auth/plugins";
|
|
4
|
+
import { admin, anonymous, apiKey, bearer, emailOTP, genericOAuth, jwt, magicLink, multiSession, oneTap, oneTimeToken, openAPI, organization, oidcProvider, phoneNumber, twoFactor, username, customSession, deviceAuthorization, mcp, lastLoginMethod } from "better-auth/plugins";
|
|
5
5
|
import { nextCookies } from "better-auth/next-js";
|
|
6
6
|
import { passkey } from "better-auth/plugins/passkey";
|
|
7
|
-
import { sso } from "better-auth/
|
|
8
|
-
import { polar } from "@polar-sh/better-auth";
|
|
7
|
+
import { sso } from "@better-auth/sso";
|
|
8
|
+
import { polar, checkout } from "@polar-sh/better-auth";
|
|
9
9
|
import { Polar } from "@polar-sh/sdk";
|
|
10
10
|
import fs from "node:fs/promises";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
|
+
import Stripe from "stripe";
|
|
13
14
|
const client = new Polar({
|
|
14
15
|
accessToken: 'pk_test_1234567890',
|
|
15
16
|
server: 'sandbox'
|
|
@@ -59,34 +60,30 @@ const plugins = [
|
|
|
59
60
|
phoneNumber(),
|
|
60
61
|
nextCookies(),
|
|
61
62
|
customSession(async ()=>({})),
|
|
63
|
+
mcp({
|
|
64
|
+
loginPage: ''
|
|
65
|
+
}),
|
|
66
|
+
deviceAuthorization(),
|
|
67
|
+
lastLoginMethod({
|
|
68
|
+
storeInDatabase: true
|
|
69
|
+
}),
|
|
62
70
|
stripe({
|
|
63
|
-
stripeClient:
|
|
64
|
-
apiKey: 'typescript'
|
|
65
|
-
},
|
|
71
|
+
stripeClient: new Stripe('typescript'),
|
|
66
72
|
stripeWebhookSecret: 'typescript',
|
|
67
73
|
subscription: {
|
|
68
74
|
enabled: true,
|
|
69
75
|
plans: [
|
|
70
76
|
{
|
|
71
|
-
id: 'basic',
|
|
72
77
|
name: 'Basic',
|
|
73
|
-
|
|
74
|
-
interval: 'month',
|
|
75
|
-
currency: 'usd'
|
|
78
|
+
priceId: 'basic'
|
|
76
79
|
},
|
|
77
80
|
{
|
|
78
|
-
id: 'pro',
|
|
79
81
|
name: 'Pro',
|
|
80
|
-
|
|
81
|
-
interval: 'month',
|
|
82
|
-
currency: 'usd'
|
|
82
|
+
priceId: 'pro'
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
|
-
id: 'enterprise',
|
|
86
85
|
name: 'Enterprise',
|
|
87
|
-
|
|
88
|
-
interval: 'month',
|
|
89
|
-
currency: 'usd'
|
|
86
|
+
priceId: 'enterprise'
|
|
90
87
|
}
|
|
91
88
|
]
|
|
92
89
|
}
|
|
@@ -94,23 +91,18 @@ const plugins = [
|
|
|
94
91
|
// As of writing this, Polar don't create schema fields, but just in case in the future we leave this here.
|
|
95
92
|
polar({
|
|
96
93
|
client,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
productId: 'enterprise',
|
|
110
|
-
slug: 'enterprise'
|
|
111
|
-
}
|
|
112
|
-
]
|
|
113
|
-
}
|
|
94
|
+
use: [
|
|
95
|
+
checkout({
|
|
96
|
+
products: [
|
|
97
|
+
{
|
|
98
|
+
productId: '123-456-789',
|
|
99
|
+
slug: 'pro' // Custom slug for easy reference in Checkout URL, e.g. /checkout/pro
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
successUrl: '/success?checkout_id={CHECKOUT_ID}',
|
|
103
|
+
authenticatedUsersOnly: true
|
|
104
|
+
})
|
|
105
|
+
]
|
|
114
106
|
})
|
|
115
107
|
];
|
|
116
108
|
const betterAuthConfig = {
|
|
@@ -233,4 +225,4 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
233
225
|
console.log(`Generated types written to ${file}`);
|
|
234
226
|
})();
|
|
235
227
|
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9zY3JpcHRzL2dlbmVyYXRlLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmlwZSB9IGZyb20gJ0BiZXR0ZXItYXV0aC9zdHJpcGUnXG5pbXBvcnQgeyBlbWFpbEhhcm1vbnksIHBob25lSGFybW9ueSB9IGZyb20gJ2JldHRlci1hdXRoLWhhcm1vbnknXG5pbXBvcnQgeyBnZXRTY2hlbWEgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB0eXBlIHsgRmllbGRBdHRyaWJ1dGUgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB7XG4gIGFkbWluLFxuICBhbm9ueW1vdXMsXG4gIGFwaUtleSxcbiAgYmVhcmVyLFxuICBlbWFpbE9UUCxcbiAgZ2VuZXJpY09BdXRoLFxuICBqd3QsXG4gIG1hZ2ljTGluayxcbiAgbXVsdGlTZXNzaW9uLFxuICBvbmVUYXAsXG4gIG9uZVRpbWVUb2tlbixcbiAgb3BlbkFQSSxcbiAgb3JnYW5pemF0aW9uLFxuICBvaWRjUHJvdmlkZXIsXG4gIHBob25lTnVtYmVyLFxuICB0d29GYWN0b3IsXG4gIHVzZXJuYW1lLFxuICBjdXN0b21TZXNzaW9uXG59IGZyb20gJ2JldHRlci1hdXRoL3BsdWdpbnMnXG5pbXBvcnQgeyBuZXh0Q29va2llcyB9IGZyb20gJ2JldHRlci1hdXRoL25leHQtanMnXG5pbXBvcnQgeyBwYXNza2V5IH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9wYXNza2V5J1xuaW1wb3J0IHsgc3NvIH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9zc28nXG5pbXBvcnQgeyBwb2xhciB9IGZyb20gJ0Bwb2xhci1zaC9iZXR0ZXItYXV0aCdcbmltcG9ydCB7IFBvbGFyIH0gZnJvbSAnQHBvbGFyLXNoL3NkaydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xuXG5jb25zdCBjbGllbnQgPSBuZXcgUG9sYXIoe1xuICBhY2Nlc3NUb2tlbjogJ3BrX3Rlc3RfMTIzNDU2Nzg5MCcsXG4gIHNlcnZlcjogJ3NhbmRib3gnXG59KTtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgdXNlcm5hbWUoKSxcbiAgYWRtaW4oKSxcbiAgYXBpS2V5KCksXG4gIHBhc3NrZXkoKSxcbiAgZW1haWxIYXJtb255KCksXG4gIHBob25lSGFybW9ueSgpLFxuICBiZWFyZXIoKSxcbiAgZW1haWxPVFAoeyBzZW5kVmVyaWZpY2F0aW9uT1RQOiBhc3luYyAoKSA9PiB7fSB9KSxcbiAgbWFnaWNMaW5rKHsgc2VuZE1hZ2ljTGluazogYXN5bmMgKCkgPT4ge30gfSksXG4gIHBob25lTnVtYmVyKHsgc2VuZE9UUDogYXN5bmMgKCkgPT4ge30gfSksXG4gIG9uZVRhcCgpLFxuICBhbm9ueW1vdXMoKSxcbiAgbXVsdGlTZXNzaW9uKCksXG4gIG9uZVRpbWVUb2tlbigpLFxuICBvaWRjUHJvdmlkZXIoeyBsb2dpblBhZ2U6ICcnIH0pLFxuICBzc28oKSxcbiAgZ2VuZXJpY09BdXRoKHsgY29uZmlnOiBbeyBwcm92aWRlcklkOiAndHlwZXNjcmlwdCcsIGNsaWVudElkOiAndHlwZXNjcmlwdCcsIGNsaWVudFNlY3JldDogJ3R5cGVzY3JpcHQnIH1dIH0pLFxuICBvcGVuQVBJKCksXG4gIG9yZ2FuaXphdGlvbih7IHRlYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSB9KSxcbiAgand0KCksXG4gIHR3b0ZhY3RvcigpLFxuICBwaG9uZU51bWJlcigpLFxuICBuZXh0Q29va2llcygpLFxuICBjdXN0b21TZXNzaW9uKGFzeW5jICgpID0+ICh7fSkpLFxuICBzdHJpcGUoe1xuICAgIHN0cmlwZUNsaWVudDogeyBhcGlLZXk6ICd0eXBlc2NyaXB0JyB9LFxuICAgIHN0cmlwZVdlYmhvb2tTZWNyZXQ6ICd0eXBlc2NyaXB0JyxcbiAgICBzdWJzY3JpcHRpb246IHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwbGFuczogW1xuICAgICAgICB7IGlkOiAnYmFzaWMnLCBuYW1lOiAnQmFzaWMnLCBwcmljZTogMTAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9LFxuICAgICAgICB7IGlkOiAncHJvJywgbmFtZTogJ1BybycsIHByaWNlOiAyMDAwLCBpbnRlcnZhbDogJ21vbnRoJywgY3VycmVuY3k6ICd1c2QnIH0sXG4gICAgICAgIHsgaWQ6ICdlbnRlcnByaXNlJywgbmFtZTogJ0VudGVycHJpc2UnLCBwcmljZTogMzAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9XG4gICAgICBdXG4gICAgfVxuICB9KSxcbiAgLy8gQXMgb2Ygd3JpdGluZyB0aGlzLCBQb2xhciBkb24ndCBjcmVhdGUgc2NoZW1hIGZpZWxkcywgYnV0IGp1c3QgaW4gY2FzZSBpbiB0aGUgZnV0dXJlIHdlIGxlYXZlIHRoaXMgaGVyZS5cbiAgcG9sYXIoe1xuICAgIGNsaWVudCxcbiAgICBjaGVja291dDoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHByb2R1Y3RzOiBbXG4gICAgICAgIHsgcHJvZHVjdElkOiAnYmFzaWMnLCBzbHVnOiAnYmFzaWMnIH0sXG4gICAgICAgIHsgcHJvZHVjdElkOiAncHJvJywgc2x1ZzogJ3BybycgfSxcbiAgICAgICAgeyBwcm9kdWN0SWQ6ICdlbnRlcnByaXNlJywgc2x1ZzogJ2VudGVycHJpc2UnIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pXG5dXG5cbmNvbnN0IGJldHRlckF1dGhDb25maWc6IFNhbml0aXplZEJldHRlckF1dGhPcHRpb25zID0ge1xuICBlbWFpbEFuZFBhc3N3b3JkOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgdXNlcjogeyBhZGRpdGlvbmFsRmllbGRzOiB7IHJvbGU6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHRWYWx1ZTogJ3VzZXInLCBpbnB1dDogZmFsc2UgfSB9IH0sXG4gIHBsdWdpbnNcbn1cblxuY29uc3QgYmFzZVNjaGVtYSA9IGdldFNjaGVtYSh7IC4uLmJldHRlckF1dGhDb25maWcsIHBsdWdpbnM6IFtdIH0pXG5cbnR5cGUgU2NoZW1hID0gUmVjb3JkPHN0cmluZywgeyBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPiB9PlxuXG5jb25zdCBtYXAgPSAodDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHQgPT09ICdib29sZWFuJykgcmV0dXJuICdib29sZWFuJ1xuICBpZiAodCA9PT0gJ2RhdGUnKSByZXR1cm4gJ0RhdGUnXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuICdudW1iZXInXG4gIGlmICh0ID09PSAnc3RyaW5nJykgcmV0dXJuICdzdHJpbmcnXG4gIGlmICh0ID09PSAnbnVtYmVyW10nKSByZXR1cm4gJ251bWJlcltdJ1xuICBpZiAodCA9PT0gJ3N0cmluZ1tdJykgcmV0dXJuICdzdHJpbmdbXSdcbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5jb25zdCBwYXNjYWwgPSAoczogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNcbiAgICAuc3BsaXQoL1stX10vZylcbiAgICAubWFwKChwKSA9PiBwLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcC5zbGljZSgxKSlcbiAgICAuam9pbignJylcblxuY29uc3QgZGlmZiA9IChiYXNlOiBTY2hlbWEsIHRhcmdldDogU2NoZW1hKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRmllbGRBdHRyaWJ1dGU+PiA9PiB7XG4gIGNvbnN0IGQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPj4gPSB7fVxuICBmb3IgKGNvbnN0IFttLCB7IGZpZWxkcyB9XSBvZiBPYmplY3QuZW50cmllcyh0YXJnZXQpKSB7XG4gICAgY29uc3QgYWRkZWQgPSBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZpbHRlcigoW2tdKSA9PiAhKGsgaW4gKGJhc2VbbV0/LmZpZWxkcyA/PyB7fSkpKVxuICAgIGlmIChhZGRlZC5sZW5ndGgpIGRbbV0gPSBPYmplY3QuZnJvbUVudHJpZXMoYWRkZWQpXG4gIH1cbiAgcmV0dXJuIGRcbn1cblxuY29uc3QgZ2VuID0gKCk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXQgPSAnLy8gQXV0by1nZW5lcmF0ZWQgdHlwZXMuIERvIG5vdCBlZGl0LlxcblxcbidcblxuICBjb25zdCBwbHVnaW5BZGRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBGaWVsZEF0dHJpYnV0ZT4+PiA9IHt9XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgcGwgb2YgcGx1Z2lucykge1xuICAgIGNvbnN0IGlkID0gKHBsIGFzIGFueSkuaWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgaWYgKCFpZCB8fCBzZWVuLmhhcyhpZCkpIGNvbnRpbnVlXG4gICAgc2Vlbi5hZGQoaWQpXG4gICAgY29uc3QgYWRkcyA9IGRpZmYoYmFzZVNjaGVtYSwgZ2V0U2NoZW1hKHsgLi4uYmV0dGVyQXV0aENvbmZpZywgcGx1Z2luczogW3BsXSB9KSlcbiAgICBmb3IgKGNvbnN0IFttLCBmXSBvZiBPYmplY3QuZW50cmllcyhhZGRzKSkge1xuICAgICAgcGx1Z2luQWRkc1ttXSA/Pz0ge31cbiAgICAgIHBsdWdpbkFkZHNbbV1baWRdID0gZlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1vZGVscyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4uT2JqZWN0LmtleXMoYmFzZVNjaGVtYSksIC4uLk9iamVjdC5rZXlzKHBsdWdpbkFkZHMpXSlcblxuICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgIGNvbnN0IFAgPSBwYXNjYWwobW9kZWwpXG4gICAgY29uc3QgYmFzZSA9IGJhc2VTY2hlbWFbbW9kZWxdPy5maWVsZHMgPz8ge31cbiAgICBjb25zdCBwbHVnaW5zRm9yTW9kZWwgPSBwbHVnaW5BZGRzW21vZGVsXSA/PyB7fVxuICAgIGNvbnN0IHBsdWdpbklkcyA9IE9iamVjdC5rZXlzKHBsdWdpbnNGb3JNb2RlbClcblxuICAgIGlmIChPYmplY3Qua2V5cyhiYXNlKS5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgQmFzZSR7UH1GaWVsZHMgPSB7XFxuYFxuICAgICAgZm9yIChjb25zdCBbaywgZl0gb2YgT2JqZWN0LmVudHJpZXMoYmFzZSkpIG91dCArPSBgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICBvdXQgKz0gJ31cXG5cXG4nXG4gICAgfVxuXG4gICAgY29uc3QgbmVlZFBsdWdpbk1hcCA9IHBsdWdpbklkcy5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKGJhc2UpLmxlbmd0aFxuICAgIGlmIChuZWVkUGx1Z2luTWFwICYmIHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfVBsdWdpbkZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtwaWQsIGZsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHBsdWdpbnNGb3JNb2RlbCkpIHtcbiAgICAgICAgb3V0ICs9IGAgICR7SlNPTi5zdHJpbmdpZnkocGlkKX06IHtcXG5gXG4gICAgICAgIGZvciAoY29uc3QgW2ssIGZdIG9mIE9iamVjdC5lbnRyaWVzKGZsZHMpKSBvdXQgKz0gYCAgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICAgIG91dCArPSAnICB9XFxuJ1xuICAgICAgfVxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoICYmIHBsdWdpbklkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG9ubHkgPSBwbHVnaW5JZHNbMF1cbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfUZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtrLCBmXSBvZiBPYmplY3QuZW50cmllcyhwbHVnaW5zRm9yTW9kZWxbb25seV0pKVxuICAgICAgICBvdXQgKz0gYCAgJHtmLmZpZWxkTmFtZSA/PyBrfSR7Zi5yZXF1aXJlZCA/ICcnIDogJz8nfTogJHttYXAoZi50eXBlIGFzIHN0cmluZyl9XFxuYFxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgICAgb3V0ICs9IGBleHBvcnQgdHlwZSAke1B9ID0gJHtQfUZpZWxkc1xcblxcbmBcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW11cbiAgICBpZiAoT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoKSBwYXJ0cy5wdXNoKGBCYXNlJHtQfUZpZWxkc2ApXG4gICAgaWYgKHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1hcE5hbWUgPSBuZWVkUGx1Z2luTWFwID8gYCR7UH1QbHVnaW5GaWVsZHNgIDogdW5kZWZpbmVkXG4gICAgICBwYXJ0cy5wdXNoKC4uLnBsdWdpbklkcy5tYXAoKGlkKSA9PiAobWFwTmFtZSA/IGAke21hcE5hbWV9WyR7SlNPTi5zdHJpbmdpZnkoaWQpfV1gIDogJ25ldmVyJykgLyogbm90IHJlYWNoYWJsZSAqLykpXG4gICAgfVxuICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfSA9ICR7cGFydHMuam9pbignICYgJyl9XFxuXFxuYFxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdW5pb24gdHlwZSBvZiBwbHVnaW4gaWRlbnRpZmllcnNcbiAgY29uc3QgcGx1Z2luSWRVbmlvbiA9IFsuLi5zZWVuXVxuICAgIC5tYXAoKGlkKSA9PiBKU09OLnN0cmluZ2lmeShpZCkpXG4gICAgLmpvaW4oJyB8ICcpXG4gIG91dCArPSBgZXhwb3J0IHR5cGUgUGx1Z2luSWQgPSAke3BsdWdpbklkVW5pb259XFxuXFxuYFxuXG4gIC8vIEdlbmVyYXRlIGZ1bGwgc2NoZW1hIG1hcHBpbmdcbiAgb3V0ICs9IGBleHBvcnQgdHlwZSBCZXR0ZXJBdXRoRnVsbFNjaGVtYSA9IHtcXG5gXG4gIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgY29uc3QgUCA9IHBhc2NhbChtb2RlbClcbiAgICBvdXQgKz0gYCAgJHtKU09OLnN0cmluZ2lmeShtb2RlbCl9OiAke1B9XFxuYFxuICB9XG4gIG91dCArPSBgfVxcblxcbmBcblxuICAvLyBHZW5lcmF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBtb2RlbCBuYW1lc1xuICBvdXQgKz0gYGV4cG9ydCB0eXBlIE1vZGVsS2V5ID0ga2V5b2YgQmV0dGVyQXV0aEZ1bGxTY2hlbWFgXG5cbiAgcmV0dXJuIG91dFxufVxuXG5jb25zdCBnZW5lcmF0ZWQgPSBnZW4oKVxuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKVxuOyhhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vZ2VuZXJhdGVkLXR5cGVzLnRzJylcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGUsIGdlbmVyYXRlZCwgJ3V0ZjgnKVxuICBjb25zb2xlLmxvZyhgR2VuZXJhdGVkIHR5cGVzIHdyaXR0ZW4gdG8gJHtmaWxlfWApXG59KSgpXG4iXSwibmFtZXMiOlsic3RyaXBlIiwiZW1haWxIYXJtb255IiwicGhvbmVIYXJtb255IiwiZ2V0U2NoZW1hIiwiYWRtaW4iLCJhbm9ueW1vdXMiLCJhcGlLZXkiLCJiZWFyZXIiLCJlbWFpbE9UUCIsImdlbmVyaWNPQXV0aCIsImp3dCIsIm1hZ2ljTGluayIsIm11bHRpU2Vzc2lvbiIsIm9uZVRhcCIsIm9uZVRpbWVUb2tlbiIsIm9wZW5BUEkiLCJvcmdhbml6YXRpb24iLCJvaWRjUHJvdmlkZXIiLCJwaG9uZU51bWJlciIsInR3b0ZhY3RvciIsInVzZXJuYW1lIiwiY3VzdG9tU2Vzc2lvbiIsIm5leHRDb29raWVzIiwicGFzc2tleSIsInNzbyIsInBvbGFyIiwiUG9sYXIiLCJmcyIsInBhdGgiLCJmaWxlVVJMVG9QYXRoIiwiY2xpZW50IiwiYWNjZXNzVG9rZW4iLCJzZXJ2ZXIiLCJwbHVnaW5zIiwic2VuZFZlcmlmaWNhdGlvbk9UUCIsInNlbmRNYWdpY0xpbmsiLCJzZW5kT1RQIiwibG9naW5QYWdlIiwiY29uZmlnIiwicHJvdmlkZXJJZCIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwidGVhbXMiLCJlbmFibGVkIiwic3RyaXBlQ2xpZW50Iiwic3RyaXBlV2ViaG9va1NlY3JldCIsInN1YnNjcmlwdGlvbiIsInBsYW5zIiwiaWQiLCJuYW1lIiwicHJpY2UiLCJpbnRlcnZhbCIsImN1cnJlbmN5IiwiY2hlY2tvdXQiLCJwcm9kdWN0cyIsInByb2R1Y3RJZCIsInNsdWciLCJiZXR0ZXJBdXRoQ29uZmlnIiwiZW1haWxBbmRQYXNzd29yZCIsInVzZXIiLCJhZGRpdGlvbmFsRmllbGRzIiwicm9sZSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJpbnB1dCIsImJhc2VTY2hlbWEiLCJtYXAiLCJ0IiwicGFzY2FsIiwicyIsInNwbGl0IiwicCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJqb2luIiwiZGlmZiIsImJhc2UiLCJ0YXJnZXQiLCJkIiwibSIsImZpZWxkcyIsIk9iamVjdCIsImVudHJpZXMiLCJhZGRlZCIsImZpbHRlciIsImsiLCJsZW5ndGgiLCJmcm9tRW50cmllcyIsImdlbiIsIm91dCIsInBsdWdpbkFkZHMiLCJzZWVuIiwiU2V0IiwicGwiLCJoYXMiLCJhZGQiLCJhZGRzIiwiZiIsIm1vZGVscyIsImtleXMiLCJtb2RlbCIsIlAiLCJwbHVnaW5zRm9yTW9kZWwiLCJwbHVnaW5JZHMiLCJmaWVsZE5hbWUiLCJyZXF1aXJlZCIsIm5lZWRQbHVnaW5NYXAiLCJwaWQiLCJmbGRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm9ubHkiLCJwYXJ0cyIsInB1c2giLCJtYXBOYW1lIiwidW5kZWZpbmVkIiwicGx1Z2luSWRVbmlvbiIsImdlbmVyYXRlZCIsIl9fZGlybmFtZSIsImRpcm5hbWUiLCJ1cmwiLCJmaWxlIiwicmVzb2x2ZSIsIndyaXRlRmlsZSIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBUSxzQkFBcUI7QUFDNUMsU0FBU0MsWUFBWSxFQUFFQyxZQUFZLFFBQVEsc0JBQXFCO0FBQ2hFLFNBQVNDLFNBQVMsUUFBUSxpQkFBZ0I7QUFFMUMsU0FDRUMsS0FBSyxFQUNMQyxTQUFTLEVBQ1RDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFlBQVksRUFDWkMsR0FBRyxFQUNIQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsTUFBTSxFQUNOQyxZQUFZLEVBQ1pDLE9BQU8sRUFDUEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxRQUFRLEVBQ1JDLGFBQWEsUUFDUixzQkFBcUI7QUFDNUIsU0FBU0MsV0FBVyxRQUFRLHNCQUFxQjtBQUNqRCxTQUFTQyxPQUFPLFFBQVEsOEJBQTZCO0FBQ3JELFNBQVNDLEdBQUcsUUFBUSwwQkFBeUI7QUFDN0MsU0FBU0MsS0FBSyxRQUFRLHdCQUF1QjtBQUM3QyxTQUFTQyxLQUFLLFFBQVEsZ0JBQWU7QUFFckMsT0FBT0MsUUFBUSxtQkFBa0I7QUFDakMsT0FBT0MsVUFBVSxZQUFXO0FBQzVCLFNBQVNDLGFBQWEsUUFBUSxXQUFVO0FBRXhDLE1BQU1DLFNBQVMsSUFBSUosTUFBTTtJQUN2QkssYUFBYTtJQUNiQyxRQUFRO0FBQ1Y7QUFFQSxNQUFNQyxVQUFVO0lBQ2RiO0lBQ0FoQjtJQUNBRTtJQUNBaUI7SUFDQXRCO0lBQ0FDO0lBQ0FLO0lBQ0FDLFNBQVM7UUFBRTBCLHFCQUFxQixXQUFh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
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9zY3JpcHRzL2dlbmVyYXRlLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmlwZSB9IGZyb20gJ0BiZXR0ZXItYXV0aC9zdHJpcGUnXG5pbXBvcnQgeyBlbWFpbEhhcm1vbnksIHBob25lSGFybW9ueSB9IGZyb20gJ2JldHRlci1hdXRoLWhhcm1vbnknXG5pbXBvcnQgeyBnZXRTY2hlbWEgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB0eXBlIHsgREJGaWVsZEF0dHJpYnV0ZSB9IGZyb20gJ2JldHRlci1hdXRoL2RiJ1xuaW1wb3J0IHtcbiAgYWRtaW4sXG4gIGFub255bW91cyxcbiAgYXBpS2V5LFxuICBiZWFyZXIsXG4gIGVtYWlsT1RQLFxuICBnZW5lcmljT0F1dGgsXG4gIGp3dCxcbiAgbWFnaWNMaW5rLFxuICBtdWx0aVNlc3Npb24sXG4gIG9uZVRhcCxcbiAgb25lVGltZVRva2VuLFxuICBvcGVuQVBJLFxuICBvcmdhbml6YXRpb24sXG4gIG9pZGNQcm92aWRlcixcbiAgcGhvbmVOdW1iZXIsXG4gIHR3b0ZhY3RvcixcbiAgdXNlcm5hbWUsXG4gIGN1c3RvbVNlc3Npb24sXG4gIGRldmljZUF1dGhvcml6YXRpb24sXG4gIG1jcCxcbiAgbGFzdExvZ2luTWV0aG9kXG59IGZyb20gJ2JldHRlci1hdXRoL3BsdWdpbnMnXG5pbXBvcnQgeyBuZXh0Q29va2llcyB9IGZyb20gJ2JldHRlci1hdXRoL25leHQtanMnXG5pbXBvcnQgeyBwYXNza2V5IH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9wYXNza2V5J1xuaW1wb3J0IHsgc3NvIH0gZnJvbSAnQGJldHRlci1hdXRoL3NzbydcbmltcG9ydCB7IHBvbGFyLCBjaGVja291dCB9IGZyb20gJ0Bwb2xhci1zaC9iZXR0ZXItYXV0aCdcbmltcG9ydCB7IFBvbGFyIH0gZnJvbSAnQHBvbGFyLXNoL3NkaydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IFN0cmlwZSBmcm9tICdzdHJpcGUnXG5cbmNvbnN0IGNsaWVudCA9IG5ldyBQb2xhcih7XG4gIGFjY2Vzc1Rva2VuOiAncGtfdGVzdF8xMjM0NTY3ODkwJyxcbiAgc2VydmVyOiAnc2FuZGJveCdcbn0pXG5cbmNvbnN0IHBsdWdpbnMgPSBbXG4gIHVzZXJuYW1lKCksXG4gIGFkbWluKCksXG4gIGFwaUtleSgpLFxuICBwYXNza2V5KCksXG4gIGVtYWlsSGFybW9ueSgpLFxuICBwaG9uZUhhcm1vbnkoKSxcbiAgYmVhcmVyKCksXG4gIGVtYWlsT1RQKHsgc2VuZFZlcmlmaWNhdGlvbk9UUDogYXN5bmMgKCkgPT4ge30gfSksXG4gIG1hZ2ljTGluayh7IHNlbmRNYWdpY0xpbms6IGFzeW5jICgpID0+IHt9IH0pLFxuICBwaG9uZU51bWJlcih7IHNlbmRPVFA6IGFzeW5jICgpID0+IHt9IH0pLFxuICBvbmVUYXAoKSxcbiAgYW5vbnltb3VzKCksXG4gIG11bHRpU2Vzc2lvbigpLFxuICBvbmVUaW1lVG9rZW4oKSxcbiAgb2lkY1Byb3ZpZGVyKHsgbG9naW5QYWdlOiAnJyB9KSxcbiAgc3NvKCksXG4gIGdlbmVyaWNPQXV0aCh7IGNvbmZpZzogW3sgcHJvdmlkZXJJZDogJ3R5cGVzY3JpcHQnLCBjbGllbnRJZDogJ3R5cGVzY3JpcHQnLCBjbGllbnRTZWNyZXQ6ICd0eXBlc2NyaXB0JyB9XSB9KSxcbiAgb3BlbkFQSSgpLFxuICBvcmdhbml6YXRpb24oeyB0ZWFtczogeyBlbmFibGVkOiB0cnVlIH0gfSksXG4gIGp3dCgpLFxuICB0d29GYWN0b3IoKSxcbiAgcGhvbmVOdW1iZXIoKSxcbiAgbmV4dENvb2tpZXMoKSxcbiAgY3VzdG9tU2Vzc2lvbihhc3luYyAoKSA9PiAoe30pKSxcbiAgbWNwKHsgbG9naW5QYWdlOiAnJyB9KSxcbiAgZGV2aWNlQXV0aG9yaXphdGlvbigpLFxuICBsYXN0TG9naW5NZXRob2QoeyBzdG9yZUluRGF0YWJhc2U6IHRydWUgfSksXG4gIHN0cmlwZSh7XG4gICAgc3RyaXBlQ2xpZW50OiBuZXcgU3RyaXBlKCd0eXBlc2NyaXB0JyksXG4gICAgc3RyaXBlV2ViaG9va1NlY3JldDogJ3R5cGVzY3JpcHQnLFxuICAgIHN1YnNjcmlwdGlvbjoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHBsYW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQmFzaWMnLFxuICAgICAgICAgIHByaWNlSWQ6ICdiYXNpYydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdQcm8nLFxuICAgICAgICAgIHByaWNlSWQ6ICdwcm8nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRW50ZXJwcmlzZScsXG4gICAgICAgICAgcHJpY2VJZDogJ2VudGVycHJpc2UnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pLFxuICAvLyBBcyBvZiB3cml0aW5nIHRoaXMsIFBvbGFyIGRvbid0IGNyZWF0ZSBzY2hlbWEgZmllbGRzLCBidXQganVzdCBpbiBjYXNlIGluIHRoZSBmdXR1cmUgd2UgbGVhdmUgdGhpcyBoZXJlLlxuICBwb2xhcih7XG4gICAgY2xpZW50LFxuICAgIHVzZTogW1xuICAgICAgY2hlY2tvdXQoe1xuICAgICAgICBwcm9kdWN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2R1Y3RJZDogJzEyMy00NTYtNzg5JywgLy8gSUQgb2YgUHJvZHVjdCBmcm9tIFBvbGFyIERhc2hib2FyZFxuICAgICAgICAgICAgc2x1ZzogJ3BybycgLy8gQ3VzdG9tIHNsdWcgZm9yIGVhc3kgcmVmZXJlbmNlIGluIENoZWNrb3V0IFVSTCwgZS5nLiAvY2hlY2tvdXQvcHJvXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdWNjZXNzVXJsOiAnL3N1Y2Nlc3M/Y2hlY2tvdXRfaWQ9e0NIRUNLT1VUX0lEfScsXG4gICAgICAgIGF1dGhlbnRpY2F0ZWRVc2Vyc09ubHk6IHRydWVcbiAgICAgIH0pXG4gICAgXVxuICB9KVxuXVxuXG5jb25zdCBiZXR0ZXJBdXRoQ29uZmlnOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyA9IHtcbiAgZW1haWxBbmRQYXNzd29yZDogeyBlbmFibGVkOiB0cnVlIH0sXG4gIHVzZXI6IHsgYWRkaXRpb25hbEZpZWxkczogeyByb2xlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0VmFsdWU6ICd1c2VyJywgaW5wdXQ6IGZhbHNlIH0gfSB9LFxuICBwbHVnaW5zXG59XG5cbmNvbnN0IGJhc2VTY2hlbWEgPSBnZXRTY2hlbWEoeyAuLi5iZXR0ZXJBdXRoQ29uZmlnLCBwbHVnaW5zOiBbXSB9KVxuXG50eXBlIFNjaGVtYSA9IFJlY29yZDxzdHJpbmcsIHsgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBEQkZpZWxkQXR0cmlidXRlPiB9PlxuXG5jb25zdCBtYXAgPSAodDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHQgPT09ICdib29sZWFuJykgcmV0dXJuICdib29sZWFuJ1xuICBpZiAodCA9PT0gJ2RhdGUnKSByZXR1cm4gJ0RhdGUnXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuICdudW1iZXInXG4gIGlmICh0ID09PSAnc3RyaW5nJykgcmV0dXJuICdzdHJpbmcnXG4gIGlmICh0ID09PSAnbnVtYmVyW10nKSByZXR1cm4gJ251bWJlcltdJ1xuICBpZiAodCA9PT0gJ3N0cmluZ1tdJykgcmV0dXJuICdzdHJpbmdbXSdcbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5jb25zdCBwYXNjYWwgPSAoczogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNcbiAgICAuc3BsaXQoL1stX10vZylcbiAgICAubWFwKChwKSA9PiBwLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcC5zbGljZSgxKSlcbiAgICAuam9pbignJylcblxuY29uc3QgZGlmZiA9IChiYXNlOiBTY2hlbWEsIHRhcmdldDogU2NoZW1hKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgREJGaWVsZEF0dHJpYnV0ZT4+ID0+IHtcbiAgY29uc3QgZDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgREJGaWVsZEF0dHJpYnV0ZT4+ID0ge31cbiAgZm9yIChjb25zdCBbbSwgeyBmaWVsZHMgfV0gb2YgT2JqZWN0LmVudHJpZXModGFyZ2V0KSkge1xuICAgIGNvbnN0IGFkZGVkID0gT2JqZWN0LmVudHJpZXMoZmllbGRzKS5maWx0ZXIoKFtrXSkgPT4gIShrIGluIChiYXNlW21dPy5maWVsZHMgPz8ge30pKSlcbiAgICBpZiAoYWRkZWQubGVuZ3RoKSBkW21dID0gT2JqZWN0LmZyb21FbnRyaWVzKGFkZGVkKVxuICB9XG4gIHJldHVybiBkXG59XG5cbmNvbnN0IGdlbiA9ICgpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0ID0gJy8vIEF1dG8tZ2VuZXJhdGVkIHR5cGVzLiBEbyBub3QgZWRpdC5cXG5cXG4nXG5cbiAgY29uc3QgcGx1Z2luQWRkczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgREJGaWVsZEF0dHJpYnV0ZT4+PiA9IHt9XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgcGwgb2YgcGx1Z2lucykge1xuICAgIGNvbnN0IGlkID0gKHBsIGFzIGFueSkuaWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgaWYgKCFpZCB8fCBzZWVuLmhhcyhpZCkpIGNvbnRpbnVlXG4gICAgc2Vlbi5hZGQoaWQpXG4gICAgY29uc3QgYWRkcyA9IGRpZmYoYmFzZVNjaGVtYSwgZ2V0U2NoZW1hKHsgLi4uYmV0dGVyQXV0aENvbmZpZywgcGx1Z2luczogW3BsXSB9KSlcbiAgICBmb3IgKGNvbnN0IFttLCBmXSBvZiBPYmplY3QuZW50cmllcyhhZGRzKSkge1xuICAgICAgcGx1Z2luQWRkc1ttXSA/Pz0ge31cbiAgICAgIHBsdWdpbkFkZHNbbV1baWRdID0gZlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1vZGVscyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4uT2JqZWN0LmtleXMoYmFzZVNjaGVtYSksIC4uLk9iamVjdC5rZXlzKHBsdWdpbkFkZHMpXSlcblxuICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgIGNvbnN0IFAgPSBwYXNjYWwobW9kZWwpXG4gICAgY29uc3QgYmFzZSA9IGJhc2VTY2hlbWFbbW9kZWxdPy5maWVsZHMgPz8ge31cbiAgICBjb25zdCBwbHVnaW5zRm9yTW9kZWwgPSBwbHVnaW5BZGRzW21vZGVsXSA/PyB7fVxuICAgIGNvbnN0IHBsdWdpbklkcyA9IE9iamVjdC5rZXlzKHBsdWdpbnNGb3JNb2RlbClcblxuICAgIGlmIChPYmplY3Qua2V5cyhiYXNlKS5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgQmFzZSR7UH1GaWVsZHMgPSB7XFxuYFxuICAgICAgZm9yIChjb25zdCBbaywgZl0gb2YgT2JqZWN0LmVudHJpZXMoYmFzZSkpIG91dCArPSBgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICBvdXQgKz0gJ31cXG5cXG4nXG4gICAgfVxuXG4gICAgY29uc3QgbmVlZFBsdWdpbk1hcCA9IHBsdWdpbklkcy5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKGJhc2UpLmxlbmd0aFxuICAgIGlmIChuZWVkUGx1Z2luTWFwICYmIHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfVBsdWdpbkZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtwaWQsIGZsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHBsdWdpbnNGb3JNb2RlbCkpIHtcbiAgICAgICAgb3V0ICs9IGAgICR7SlNPTi5zdHJpbmdpZnkocGlkKX06IHtcXG5gXG4gICAgICAgIGZvciAoY29uc3QgW2ssIGZdIG9mIE9iamVjdC5lbnRyaWVzKGZsZHMpKSBvdXQgKz0gYCAgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICAgIG91dCArPSAnICB9XFxuJ1xuICAgICAgfVxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoICYmIHBsdWdpbklkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG9ubHkgPSBwbHVnaW5JZHNbMF1cbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfUZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtrLCBmXSBvZiBPYmplY3QuZW50cmllcyhwbHVnaW5zRm9yTW9kZWxbb25seV0pKVxuICAgICAgICBvdXQgKz0gYCAgJHtmLmZpZWxkTmFtZSA/PyBrfSR7Zi5yZXF1aXJlZCA/ICcnIDogJz8nfTogJHttYXAoZi50eXBlIGFzIHN0cmluZyl9XFxuYFxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgICAgb3V0ICs9IGBleHBvcnQgdHlwZSAke1B9ID0gJHtQfUZpZWxkc1xcblxcbmBcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW11cbiAgICBpZiAoT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoKSBwYXJ0cy5wdXNoKGBCYXNlJHtQfUZpZWxkc2ApXG4gICAgaWYgKHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1hcE5hbWUgPSBuZWVkUGx1Z2luTWFwID8gYCR7UH1QbHVnaW5GaWVsZHNgIDogdW5kZWZpbmVkXG4gICAgICBwYXJ0cy5wdXNoKC4uLnBsdWdpbklkcy5tYXAoKGlkKSA9PiAobWFwTmFtZSA/IGAke21hcE5hbWV9WyR7SlNPTi5zdHJpbmdpZnkoaWQpfV1gIDogJ25ldmVyJykgLyogbm90IHJlYWNoYWJsZSAqLykpXG4gICAgfVxuICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfSA9ICR7cGFydHMuam9pbignICYgJyl9XFxuXFxuYFxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdW5pb24gdHlwZSBvZiBwbHVnaW4gaWRlbnRpZmllcnNcbiAgY29uc3QgcGx1Z2luSWRVbmlvbiA9IFsuLi5zZWVuXS5tYXAoKGlkKSA9PiBKU09OLnN0cmluZ2lmeShpZCkpLmpvaW4oJyB8ICcpXG4gIG91dCArPSBgZXhwb3J0IHR5cGUgUGx1Z2luSWQgPSAke3BsdWdpbklkVW5pb259XFxuXFxuYFxuXG4gIC8vIEdlbmVyYXRlIGZ1bGwgc2NoZW1hIG1hcHBpbmdcbiAgb3V0ICs9IGBleHBvcnQgdHlwZSBCZXR0ZXJBdXRoRnVsbFNjaGVtYSA9IHtcXG5gXG4gIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgY29uc3QgUCA9IHBhc2NhbChtb2RlbClcbiAgICBvdXQgKz0gYCAgJHtKU09OLnN0cmluZ2lmeShtb2RlbCl9OiAke1B9XFxuYFxuICB9XG4gIG91dCArPSBgfVxcblxcbmBcblxuICAvLyBHZW5lcmF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBtb2RlbCBuYW1lc1xuICBvdXQgKz0gYGV4cG9ydCB0eXBlIE1vZGVsS2V5ID0ga2V5b2YgQmV0dGVyQXV0aEZ1bGxTY2hlbWFgXG5cbiAgcmV0dXJuIG91dFxufVxuXG5jb25zdCBnZW5lcmF0ZWQgPSBnZW4oKVxuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKVxuOyhhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vZ2VuZXJhdGVkLXR5cGVzLnRzJylcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGUsIGdlbmVyYXRlZCwgJ3V0ZjgnKVxuICBjb25zb2xlLmxvZyhgR2VuZXJhdGVkIHR5cGVzIHdyaXR0ZW4gdG8gJHtmaWxlfWApXG59KSgpXG4iXSwibmFtZXMiOlsic3RyaXBlIiwiZW1haWxIYXJtb255IiwicGhvbmVIYXJtb255IiwiZ2V0U2NoZW1hIiwiYWRtaW4iLCJhbm9ueW1vdXMiLCJhcGlLZXkiLCJiZWFyZXIiLCJlbWFpbE9UUCIsImdlbmVyaWNPQXV0aCIsImp3dCIsIm1hZ2ljTGluayIsIm11bHRpU2Vzc2lvbiIsIm9uZVRhcCIsIm9uZVRpbWVUb2tlbiIsIm9wZW5BUEkiLCJvcmdhbml6YXRpb24iLCJvaWRjUHJvdmlkZXIiLCJwaG9uZU51bWJlciIsInR3b0ZhY3RvciIsInVzZXJuYW1lIiwiY3VzdG9tU2Vzc2lvbiIsImRldmljZUF1dGhvcml6YXRpb24iLCJtY3AiLCJsYXN0TG9naW5NZXRob2QiLCJuZXh0Q29va2llcyIsInBhc3NrZXkiLCJzc28iLCJwb2xhciIsImNoZWNrb3V0IiwiUG9sYXIiLCJmcyIsInBhdGgiLCJmaWxlVVJMVG9QYXRoIiwiU3RyaXBlIiwiY2xpZW50IiwiYWNjZXNzVG9rZW4iLCJzZXJ2ZXIiLCJwbHVnaW5zIiwic2VuZFZlcmlmaWNhdGlvbk9UUCIsInNlbmRNYWdpY0xpbmsiLCJzZW5kT1RQIiwibG9naW5QYWdlIiwiY29uZmlnIiwicHJvdmlkZXJJZCIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwidGVhbXMiLCJlbmFibGVkIiwic3RvcmVJbkRhdGFiYXNlIiwic3RyaXBlQ2xpZW50Iiwic3RyaXBlV2ViaG9va1NlY3JldCIsInN1YnNjcmlwdGlvbiIsInBsYW5zIiwibmFtZSIsInByaWNlSWQiLCJ1c2UiLCJwcm9kdWN0cyIsInByb2R1Y3RJZCIsInNsdWciLCJzdWNjZXNzVXJsIiwiYXV0aGVudGljYXRlZFVzZXJzT25seSIsImJldHRlckF1dGhDb25maWciLCJlbWFpbEFuZFBhc3N3b3JkIiwidXNlciIsImFkZGl0aW9uYWxGaWVsZHMiLCJyb2xlIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImlucHV0IiwiYmFzZVNjaGVtYSIsIm1hcCIsInQiLCJwYXNjYWwiLCJzIiwic3BsaXQiLCJwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImpvaW4iLCJkaWZmIiwiYmFzZSIsInRhcmdldCIsImQiLCJtIiwiZmllbGRzIiwiT2JqZWN0IiwiZW50cmllcyIsImFkZGVkIiwiZmlsdGVyIiwiayIsImxlbmd0aCIsImZyb21FbnRyaWVzIiwiZ2VuIiwib3V0IiwicGx1Z2luQWRkcyIsInNlZW4iLCJTZXQiLCJwbCIsImlkIiwiaGFzIiwiYWRkIiwiYWRkcyIsImYiLCJtb2RlbHMiLCJrZXlzIiwibW9kZWwiLCJQIiwicGx1Z2luc0Zvck1vZGVsIiwicGx1Z2luSWRzIiwiZmllbGROYW1lIiwicmVxdWlyZWQiLCJuZWVkUGx1Z2luTWFwIiwicGlkIiwiZmxkcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbmx5IiwicGFydHMiLCJwdXNoIiwibWFwTmFtZSIsInVuZGVmaW5lZCIsInBsdWdpbklkVW5pb24iLCJnZW5lcmF0ZWQiLCJfX2Rpcm5hbWUiLCJkaXJuYW1lIiwidXJsIiwiZmlsZSIsInJlc29sdmUiLCJ3cml0ZUZpbGUiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsc0JBQXFCO0FBQzVDLFNBQVNDLFlBQVksRUFBRUMsWUFBWSxRQUFRLHNCQUFxQjtBQUNoRSxTQUFTQyxTQUFTLFFBQVEsaUJBQWdCO0FBRTFDLFNBQ0VDLEtBQUssRUFDTEMsU0FBUyxFQUNUQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxZQUFZLEVBQ1pDLEdBQUcsRUFDSEMsU0FBUyxFQUNUQyxZQUFZLEVBQ1pDLE1BQU0sRUFDTkMsWUFBWSxFQUNaQyxPQUFPLEVBQ1BDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMs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
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
// These re-exports will be used by consumers of the library
|
|
2
2
|
export * from "./better-auth";
|
|
3
|
-
export * from "./clerk";
|
|
4
|
-
export * from "./kinde";
|
|
5
|
-
export * from "./authjs";
|
|
6
3
|
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGVzZSByZS1leHBvcnRzIHdpbGwgYmUgdXNlZCBieSBjb25zdW1lcnMgb2YgdGhlIGxpYnJhcnlcbmV4cG9ydCAqIGZyb20gJy4vYmV0dGVyLWF1dGgnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELGNBQWMsZ0JBQWUifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload-auth",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.5",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -32,36 +32,6 @@
|
|
|
32
32
|
"types": "./dist/better-auth/plugin/payload/exports/rsc.d.ts",
|
|
33
33
|
"default": "./dist/better-auth/plugin/payload/exports/rsc.js"
|
|
34
34
|
},
|
|
35
|
-
"./clerk": {
|
|
36
|
-
"import": "./dist/clerk/index.js",
|
|
37
|
-
"types": "./dist/clerk/index.d.ts",
|
|
38
|
-
"default": "./dist/clerk/index.js"
|
|
39
|
-
},
|
|
40
|
-
"./clerk/plugin": {
|
|
41
|
-
"import": "./dist/clerk/plugin/index.js",
|
|
42
|
-
"types": "./dist/clerk/plugin/index.d.ts",
|
|
43
|
-
"default": "./dist/clerk/plugin/index.js"
|
|
44
|
-
},
|
|
45
|
-
"./clerk/utils": {
|
|
46
|
-
"import": "./dist/clerk/utils/index.js",
|
|
47
|
-
"types": "./dist/clerk/utils/index.d.ts",
|
|
48
|
-
"default": "./dist/clerk/utils/index.js"
|
|
49
|
-
},
|
|
50
|
-
"./clerk/admin/ui": {
|
|
51
|
-
"import": "./dist/clerk/admin-ui.js",
|
|
52
|
-
"types": "./dist/clerk/admin-ui.d.ts",
|
|
53
|
-
"default": "./dist/clerk/admin-ui.js"
|
|
54
|
-
},
|
|
55
|
-
"./kinde": {
|
|
56
|
-
"import": "./dist/kinde/index.js",
|
|
57
|
-
"types": "./dist/kinde/index.d.ts",
|
|
58
|
-
"default": "./dist/kinde/index.js"
|
|
59
|
-
},
|
|
60
|
-
"./authjs": {
|
|
61
|
-
"import": "./dist/authjs/index.js",
|
|
62
|
-
"types": "./dist/authjs/index.d.ts",
|
|
63
|
-
"default": "./dist/authjs/index.js"
|
|
64
|
-
},
|
|
65
35
|
"./shared/payload/fields": {
|
|
66
36
|
"import": "./dist/shared/payload/fields/index.js",
|
|
67
37
|
"types": "./dist/shared/payload/fields/index.d.ts",
|
|
@@ -82,16 +52,19 @@
|
|
|
82
52
|
"generate:better-auth-types": "rm -rf src/better-auth/generated-types.ts && tsx src/better-auth/scripts/generate-types.ts"
|
|
83
53
|
},
|
|
84
54
|
"peerDependencies": {
|
|
85
|
-
"@payloadcms/ui": "
|
|
86
|
-
"better-auth": "
|
|
55
|
+
"@payloadcms/ui": ">=3.55.1 <4",
|
|
56
|
+
"better-auth": ">=1.3.11 <2",
|
|
87
57
|
"next": "^15.3.0",
|
|
88
|
-
"payload": "
|
|
58
|
+
"payload": ">=3.55.1 <4",
|
|
89
59
|
"react": "^19",
|
|
90
60
|
"react-dom": "^19"
|
|
91
61
|
},
|
|
92
62
|
"devDependencies": {
|
|
93
|
-
"@
|
|
94
|
-
"@
|
|
63
|
+
"@payloadcms/db-postgres": ">3.55.1 <4",
|
|
64
|
+
"@better-auth/sso": "1.3.27",
|
|
65
|
+
"@better-auth/stripe": "1.3.27",
|
|
66
|
+
"@polar-sh/better-auth": "1.1.9",
|
|
67
|
+
"@polar-sh/sdk": "^0.35.3",
|
|
95
68
|
"@swc/cli": "0.6.0",
|
|
96
69
|
"@swc/core": "1.11.13",
|
|
97
70
|
"@types/node": "^20.0.0",
|
|
@@ -106,13 +79,7 @@
|
|
|
106
79
|
"vitest": "^1.0.0"
|
|
107
80
|
},
|
|
108
81
|
"dependencies": {
|
|
109
|
-
"@better-auth/
|
|
110
|
-
"@better-auth/utils": "0.2.4",
|
|
111
|
-
"@clerk/backend": "^1.25.8",
|
|
112
|
-
"@clerk/clerk-js": "^5.63.5",
|
|
113
|
-
"@clerk/nextjs": "^6.12.12",
|
|
114
|
-
"@polar-sh/better-auth": "^0.1.1",
|
|
115
|
-
"@polar-sh/sdk": "^0.32.13",
|
|
82
|
+
"@better-auth/utils": "0.3.0",
|
|
116
83
|
"@tanstack/react-form": "1.4.0",
|
|
117
84
|
"class-variance-authority": "0.7.1",
|
|
118
85
|
"clsx": "2.1.1",
|
package/dist/authjs/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authjs/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,WAAW,CAAA"}
|
package/dist/authjs/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export const authjs = 'authjs';
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoanMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGF1dGhqcyA9ICdhdXRoanMnXG4iXSwibmFtZXMiOlsiYXV0aGpzIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLFNBQVMsU0FBUSJ9
|
package/dist/clerk/admin-ui.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-ui.d.ts","sourceRoot":"","sources":["../../src/clerk/admin-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA"}
|
package/dist/clerk/admin-ui.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { SyncClerkUsersButton } from "./plugin/components/sync-clerk-users-button";
|
|
2
|
-
export { AfterLoginForm } from "./plugin/components/after-login-form";
|
|
3
|
-
export { LogoutButton } from "./plugin/components/logout-button";
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVyay9hZG1pbi11aS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTeW5jQ2xlcmtVc2Vyc0J1dHRvbiB9IGZyb20gJy4vcGx1Z2luL2NvbXBvbmVudHMvc3luYy1jbGVyay11c2Vycy1idXR0b24nXG5leHBvcnQgeyBBZnRlckxvZ2luRm9ybSB9IGZyb20gJy4vcGx1Z2luL2NvbXBvbmVudHMvYWZ0ZXItbG9naW4tZm9ybSdcbmV4cG9ydCB7IExvZ291dEJ1dHRvbiB9IGZyb20gJy4vcGx1Z2luL2NvbXBvbmVudHMvbG9nb3V0LWJ1dHRvbidcbiJdLCJuYW1lcyI6WyJTeW5jQ2xlcmtVc2Vyc0J1dHRvbiIsIkFmdGVyTG9naW5Gb3JtIiwiTG9nb3V0QnV0dG9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSw4Q0FBNkM7QUFDbEYsU0FBU0MsY0FBYyxRQUFRLHVDQUFzQztBQUNyRSxTQUFTQyxZQUFZLFFBQVEsb0NBQW1DIn0=
|
package/dist/clerk/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clerk/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/clerk/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from "./plugin";
|
|
2
|
-
export * from "./types";
|
|
3
|
-
export * from "./utils";
|
|
4
|
-
import { clerkPlugin } from "./plugin";
|
|
5
|
-
import { clerkAuthStrategy } from "./plugin/auth-strategy";
|
|
6
|
-
export { clerkPlugin, clerkAuthStrategy };
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVyay9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BsdWdpbidcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBjbGVya1BsdWdpbiB9IGZyb20gJy4vcGx1Z2luJ1xuaW1wb3J0IHsgY2xlcmtBdXRoU3RyYXRlZ3kgfSBmcm9tICcuL3BsdWdpbi9hdXRoLXN0cmF0ZWd5J1xuXG5leHBvcnQgeyBjbGVya1BsdWdpbiwgY2xlcmtBdXRoU3RyYXRlZ3kgfVxuIl0sIm5hbWVzIjpbImNsZXJrUGx1Z2luIiwiY2xlcmtBdXRoU3RyYXRlZ3kiXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVTtBQUN4QixjQUFjLFVBQVM7QUFDdkIsY0FBYyxVQUFTO0FBRXZCLFNBQVNBLFdBQVcsUUFBUSxXQUFVO0FBQ3RDLFNBQVNDLGlCQUFpQixRQUFRLHlCQUF3QjtBQUUxRCxTQUFTRCxXQUFXLEVBQUVDLGlCQUFpQixHQUFFIn0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AuthStrategy } from 'payload';
|
|
2
|
-
/**
|
|
3
|
-
* Authentication strategy for Clerk
|
|
4
|
-
* Integrates Payload with Clerk using the official Clerk auth method
|
|
5
|
-
*
|
|
6
|
-
* @param adminRoles - Admin roles
|
|
7
|
-
* @param userSlug - User collection slug
|
|
8
|
-
* @returns Auth strategy
|
|
9
|
-
*/
|
|
10
|
-
export declare function clerkAuthStrategy(userSlug?: string): AuthStrategy;
|
|
11
|
-
//# sourceMappingURL=auth-strategy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-strategy.d.ts","sourceRoot":"","sources":["../../../src/clerk/plugin/auth-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAM3C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAgB,GAAG,YAAY,CA8B1E"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { auth } from "@clerk/nextjs/server";
|
|
2
|
-
import { getUserByClerkId } from "../utils/user";
|
|
3
|
-
const CLERK_AUTH_STRATEGY_NAME = 'clerk';
|
|
4
|
-
/**
|
|
5
|
-
* Authentication strategy for Clerk
|
|
6
|
-
* Integrates Payload with Clerk using the official Clerk auth method
|
|
7
|
-
*
|
|
8
|
-
* @param adminRoles - Admin roles
|
|
9
|
-
* @param userSlug - User collection slug
|
|
10
|
-
* @returns Auth strategy
|
|
11
|
-
*/ export function clerkAuthStrategy(userSlug = 'users') {
|
|
12
|
-
return {
|
|
13
|
-
name: CLERK_AUTH_STRATEGY_NAME,
|
|
14
|
-
authenticate: async ({ payload, strategyName = CLERK_AUTH_STRATEGY_NAME })=>{
|
|
15
|
-
try {
|
|
16
|
-
const { userId } = await auth();
|
|
17
|
-
if (!userId) {
|
|
18
|
-
return {
|
|
19
|
-
user: null
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const user = await getUserByClerkId(payload, userSlug, userId);
|
|
23
|
-
if (!user) {
|
|
24
|
-
return {
|
|
25
|
-
user: null
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
user: {
|
|
30
|
-
...user,
|
|
31
|
-
collection: userSlug,
|
|
32
|
-
_strategy: strategyName
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
} catch (error) {
|
|
36
|
-
console.error('Error in Clerk auth strategy:', error);
|
|
37
|
-
return {
|
|
38
|
-
user: null
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vYXV0aC1zdHJhdGVneS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEF1dGhTdHJhdGVneSB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgeyBhdXRoIH0gZnJvbSAnQGNsZXJrL25leHRqcy9zZXJ2ZXInXG5pbXBvcnQgeyBnZXRVc2VyQnlDbGVya0lkIH0gZnJvbSAnLi4vdXRpbHMvdXNlcidcblxuY29uc3QgQ0xFUktfQVVUSF9TVFJBVEVHWV9OQU1FID0gJ2NsZXJrJ1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0aW9uIHN0cmF0ZWd5IGZvciBDbGVya1xuICogSW50ZWdyYXRlcyBQYXlsb2FkIHdpdGggQ2xlcmsgdXNpbmcgdGhlIG9mZmljaWFsIENsZXJrIGF1dGggbWV0aG9kXG4gKlxuICogQHBhcmFtIGFkbWluUm9sZXMgLSBBZG1pbiByb2xlc1xuICogQHBhcmFtIHVzZXJTbHVnIC0gVXNlciBjb2xsZWN0aW9uIHNsdWdcbiAqIEByZXR1cm5zIEF1dGggc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZXJrQXV0aFN0cmF0ZWd5KHVzZXJTbHVnOiBzdHJpbmcgPSAndXNlcnMnKTogQXV0aFN0cmF0ZWd5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBDTEVSS19BVVRIX1NUUkFURUdZX05BTUUsXG4gICAgYXV0aGVudGljYXRlOiBhc3luYyAoeyBwYXlsb2FkLCBzdHJhdGVneU5hbWUgPSBDTEVSS19BVVRIX1NUUkFURUdZX05BTUUgfSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB1c2VySWQgfSA9IGF3YWl0IGF1dGgoKVxuXG4gICAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdXNlcjogbnVsbCB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlckJ5Q2xlcmtJZChwYXlsb2FkLCB1c2VyU2x1ZywgdXNlcklkKVxuXG4gICAgICAgIGlmICghdXNlcikge1xuICAgICAgICAgIHJldHVybiB7IHVzZXI6IG51bGwgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogdXNlclNsdWcsXG4gICAgICAgICAgICBfc3RyYXRlZ3k6IHN0cmF0ZWd5TmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gQ2xlcmsgYXV0aCBzdHJhdGVneTonLCBlcnJvcilcbiAgICAgICAgcmV0dXJuIHsgdXNlcjogbnVsbCB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiYXV0aCIsImdldFVzZXJCeUNsZXJrSWQiLCJDTEVSS19BVVRIX1NUUkFURUdZX05BTUUiLCJjbGVya0F1dGhTdHJhdGVneSIsInVzZXJTbHVnIiwibmFtZSIsImF1dGhlbnRpY2F0ZSIsInBheWxvYWQiLCJzdHJhdGVneU5hbWUiLCJ1c2VySWQiLCJ1c2VyIiwiY29sbGVjdGlvbiIsIl9zdHJhdGVneSIsImVycm9yIiwiY29uc29sZSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsSUFBSSxRQUFRLHVCQUFzQjtBQUMzQyxTQUFTQyxnQkFBZ0IsUUFBUSxnQkFBZTtBQUVoRCxNQUFNQywyQkFBMkI7QUFFakM7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU0Msa0JBQWtCQyxXQUFtQixPQUFPO0lBQzFELE9BQU87UUFDTEMsTUFBTUg7UUFDTkksY0FBYyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsZUFBZU4sd0JBQXdCLEVBQUU7WUFDdkUsSUFBSTtnQkFDRixNQUFNLEVBQUVPLE1BQU0sRUFBRSxHQUFHLE1BQU1UO2dCQUV6QixJQUFJLENBQUNTLFFBQVE7b0JBQ1gsT0FBTzt3QkFBRUMsTUFBTTtvQkFBSztnQkFDdEI7Z0JBRUEsTUFBTUEsT0FBTyxNQUFNVCxpQkFBaUJNLFNBQVNILFVBQVVLO2dCQUV2RCxJQUFJLENBQUNDLE1BQU07b0JBQ1QsT0FBTzt3QkFBRUEsTUFBTTtvQkFBSztnQkFDdEI7Z0JBRUEsT0FBTztvQkFDTEEsTUFBTTt3QkFDSixHQUFHQSxJQUFJO3dCQUNQQyxZQUFZUDt3QkFDWlEsV0FBV0o7b0JBQ2I7Z0JBQ0Y7WUFDRixFQUFFLE9BQU9LLE9BQU87Z0JBQ2RDLFFBQVFELEtBQUssQ0FBQyxpQ0FBaUNBO2dCQUMvQyxPQUFPO29CQUFFSCxNQUFNO2dCQUFLO1lBQ3RCO1FBQ0Y7SUFDRjtBQUNGIn0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Access } from 'payload';
|
|
2
|
-
export declare const getReadAccess: ({ adminRoles }: {
|
|
3
|
-
adminRoles: string[];
|
|
4
|
-
}) => Access;
|
|
5
|
-
export declare const getCreateAccess: ({ adminRoles }: {
|
|
6
|
-
adminRoles: string[];
|
|
7
|
-
}) => Access;
|
|
8
|
-
export declare const getUpdateAccess: ({ adminRoles }: {
|
|
9
|
-
adminRoles: string[];
|
|
10
|
-
}) => Access;
|
|
11
|
-
export declare const getDeleteAccess: ({ adminRoles }: {
|
|
12
|
-
adminRoles: string[];
|
|
13
|
-
}) => Access;
|
|
14
|
-
//# sourceMappingURL=access.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../../../src/clerk/plugin/collections/users/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAA;AAcrD,eAAO,MAAM,aAAa,GAAI,gBAAgB;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,MAUxE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,gBAAgB;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,MAI1E,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,gBAAgB;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,MAI1E,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,gBAAgB;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,MAI1E,CAAA"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
const isAdmin = (req, adminRoles)=>{
|
|
2
|
-
return Boolean(req.user && adminRoles.includes(req.user.role));
|
|
3
|
-
};
|
|
4
|
-
const isCurrentUser = (req)=>{
|
|
5
|
-
return {
|
|
6
|
-
id: {
|
|
7
|
-
equals: req.user?.id
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
export const getReadAccess = ({ adminRoles })=>{
|
|
12
|
-
return ({ req })=>{
|
|
13
|
-
if (!req.user) return false;
|
|
14
|
-
if (isAdmin(req, adminRoles)) {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
return isCurrentUser(req);
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
export const getCreateAccess = ({ adminRoles })=>{
|
|
21
|
-
return ({ req })=>{
|
|
22
|
-
return isAdmin(req, adminRoles);
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export const getUpdateAccess = ({ adminRoles })=>{
|
|
26
|
-
return ({ req })=>{
|
|
27
|
-
return isAdmin(req, adminRoles);
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
export const getDeleteAccess = ({ adminRoles })=>{
|
|
31
|
-
return ({ req })=>{
|
|
32
|
-
return isAdmin(req, adminRoles);
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29sbGVjdGlvbnMvdXNlcnMvYWNjZXNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWNjZXNzLCBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQnXG5cbmNvbnN0IGlzQWRtaW4gPSAocmVxOiBhbnksIGFkbWluUm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBCb29sZWFuKHJlcS51c2VyICYmIGFkbWluUm9sZXMuaW5jbHVkZXMocmVxLnVzZXIucm9sZSBhcyBzdHJpbmcpKVxufVxuXG5jb25zdCBpc0N1cnJlbnRVc2VyID0gKHJlcTogUGF5bG9hZFJlcXVlc3QpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDoge1xuICAgICAgZXF1YWxzOiByZXEudXNlcj8uaWRcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFJlYWRBY2Nlc3MgPSAoeyBhZG1pblJvbGVzIH06IHsgYWRtaW5Sb2xlczogc3RyaW5nW10gfSk6IEFjY2VzcyA9PiB7XG4gIHJldHVybiAoeyByZXEgfSkgPT4ge1xuICAgIGlmICghcmVxLnVzZXIpIHJldHVybiBmYWxzZVxuXG4gICAgaWYgKGlzQWRtaW4ocmVxLCBhZG1pblJvbGVzKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gaXNDdXJyZW50VXNlcihyZXEpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldENyZWF0ZUFjY2VzcyA9ICh7IGFkbWluUm9sZXMgfTogeyBhZG1pblJvbGVzOiBzdHJpbmdbXSB9KTogQWNjZXNzID0+IHtcbiAgcmV0dXJuICh7IHJlcSB9KSA9PiB7XG4gICAgcmV0dXJuIGlzQWRtaW4ocmVxLCBhZG1pblJvbGVzKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVBY2Nlc3MgPSAoeyBhZG1pblJvbGVzIH06IHsgYWRtaW5Sb2xlczogc3RyaW5nW10gfSk6IEFjY2VzcyA9PiB7XG4gIHJldHVybiAoeyByZXEgfSkgPT4ge1xuICAgIHJldHVybiBpc0FkbWluKHJlcSwgYWRtaW5Sb2xlcylcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0RGVsZXRlQWNjZXNzID0gKHsgYWRtaW5Sb2xlcyB9OiB7IGFkbWluUm9sZXM6IHN0cmluZ1tdIH0pOiBBY2Nlc3MgPT4ge1xuICByZXR1cm4gKHsgcmVxIH0pID0+IHtcbiAgICByZXR1cm4gaXNBZG1pbihyZXEsIGFkbWluUm9sZXMpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0FkbWluIiwicmVxIiwiYWRtaW5Sb2xlcyIsIkJvb2xlYW4iLCJ1c2VyIiwiaW5jbHVkZXMiLCJyb2xlIiwiaXNDdXJyZW50VXNlciIsImlkIiwiZXF1YWxzIiwiZ2V0UmVhZEFjY2VzcyIsImdldENyZWF0ZUFjY2VzcyIsImdldFVwZGF0ZUFjY2VzcyIsImdldERlbGV0ZUFjY2VzcyJdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTUEsVUFBVSxDQUFDQyxLQUFVQztJQUN6QixPQUFPQyxRQUFRRixJQUFJRyxJQUFJLElBQUlGLFdBQVdHLFFBQVEsQ0FBQ0osSUFBSUcsSUFBSSxDQUFDRSxJQUFJO0FBQzlEO0FBRUEsTUFBTUMsZ0JBQWdCLENBQUNOO0lBQ3JCLE9BQU87UUFDTE8sSUFBSTtZQUNGQyxRQUFRUixJQUFJRyxJQUFJLEVBQUVJO1FBQ3BCO0lBQ0Y7QUFDRjtBQUVBLE9BQU8sTUFBTUUsZ0JBQWdCLENBQUMsRUFBRVIsVUFBVSxFQUE0QjtJQUNwRSxPQUFPLENBQUMsRUFBRUQsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDQSxJQUFJRyxJQUFJLEVBQUUsT0FBTztRQUV0QixJQUFJSixRQUFRQyxLQUFLQyxhQUFhO1lBQzVCLE9BQU87UUFDVDtRQUVBLE9BQU9LLGNBQWNOO0lBQ3ZCO0FBQ0YsRUFBQztBQUVELE9BQU8sTUFBTVUsa0JBQWtCLENBQUMsRUFBRVQsVUFBVSxFQUE0QjtJQUN0RSxPQUFPLENBQUMsRUFBRUQsR0FBRyxFQUFFO1FBQ2IsT0FBT0QsUUFBUUMsS0FBS0M7SUFDdEI7QUFDRixFQUFDO0FBRUQsT0FBTyxNQUFNVSxrQkFBa0IsQ0FBQyxFQUFFVixVQUFVLEVBQTRCO0lBQ3RFLE9BQU8sQ0FBQyxFQUFFRCxHQUFHLEVBQUU7UUFDYixPQUFPRCxRQUFRQyxLQUFLQztJQUN0QjtBQUNGLEVBQUM7QUFFRCxPQUFPLE1BQU1XLGtCQUFrQixDQUFDLEVBQUVYLFVBQVUsRUFBNEI7SUFDdEUsT0FBTyxDQUFDLEVBQUVELEdBQUcsRUFBRTtRQUNiLE9BQU9ELFFBQVFDLEtBQUtDO0lBQ3RCO0FBQ0YsRUFBQyJ9
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Endpoint } from 'payload';
|
|
2
|
-
export interface SyncClerkUsersResponse {
|
|
3
|
-
syncedUsers: number;
|
|
4
|
-
success: boolean;
|
|
5
|
-
message?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
count?: number;
|
|
8
|
-
created?: number;
|
|
9
|
-
updated?: number;
|
|
10
|
-
}
|
|
11
|
-
export declare const syncClerkUsersEndpoint: ({ userCollectionSlug }: {
|
|
12
|
-
userCollectionSlug: string;
|
|
13
|
-
}) => Endpoint;
|
|
14
|
-
//# sourceMappingURL=sync-from-clerk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-from-clerk.d.ts","sourceRoot":"","sources":["../../../../../../src/clerk/plugin/collections/users/endpoints/sync-from-clerk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,SAAS,CAAA;AAK5C,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,sBAAsB,GAAI,wBAAwB;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,KAAG,QAgH/F,CAAA"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { APIError } from "payload";
|
|
2
|
-
import { createClerkClient } from "@clerk/backend";
|
|
3
|
-
import { getPrimaryEmail } from "../../../../utils";
|
|
4
|
-
export const syncClerkUsersEndpoint = ({ userCollectionSlug })=>{
|
|
5
|
-
return {
|
|
6
|
-
path: '/sync-from-clerk',
|
|
7
|
-
method: 'post',
|
|
8
|
-
handler: async (req)=>{
|
|
9
|
-
try {
|
|
10
|
-
const { payload } = req;
|
|
11
|
-
const mappingFunction = payload.config.custom.clerkPlugin.clerkToPayloadMapping;
|
|
12
|
-
if (!process.env.CLERK_SECRET_KEY) {
|
|
13
|
-
throw new APIError('CLERK_SECRET_KEY is not defined', 400);
|
|
14
|
-
}
|
|
15
|
-
const clerkClient = createClerkClient({
|
|
16
|
-
secretKey: process.env.CLERK_SECRET_KEY
|
|
17
|
-
});
|
|
18
|
-
const totalUsers = await clerkClient.users.getCount();
|
|
19
|
-
const limit = 100;
|
|
20
|
-
const totalPages = Math.ceil(totalUsers / limit);
|
|
21
|
-
let allUsers = [];
|
|
22
|
-
for(let page = 0; page < totalPages; page++){
|
|
23
|
-
const offset = page * limit;
|
|
24
|
-
const pageUsers = await fetch(`https://api.clerk.com/v1/users?limit=${limit}&offset=${offset}`, {
|
|
25
|
-
headers: {
|
|
26
|
-
Authorization: `Bearer ${process.env.CLERK_SECRET_KEY}`
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
const pageUsersData = await pageUsers.json();
|
|
30
|
-
allUsers = [
|
|
31
|
-
...allUsers,
|
|
32
|
-
...pageUsersData
|
|
33
|
-
];
|
|
34
|
-
console.log(`Fetched page ${page + 1}/${totalPages}, users: ${pageUsersData.length}`);
|
|
35
|
-
}
|
|
36
|
-
let created = 0;
|
|
37
|
-
let updated = 0;
|
|
38
|
-
for (const clerkUser of allUsers){
|
|
39
|
-
const payloadUserData = mappingFunction(clerkUser);
|
|
40
|
-
const randomPassword = Array(3).fill(0).map(()=>Math.random().toString(36).slice(2)).join('');
|
|
41
|
-
let existingUser = await payload.find({
|
|
42
|
-
collection: userCollectionSlug,
|
|
43
|
-
where: {
|
|
44
|
-
clerkId: {
|
|
45
|
-
equals: clerkUser.id
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
if (!existingUser.docs.length && clerkUser.emailAddresses && clerkUser.emailAddresses.length > 0) {
|
|
50
|
-
const primaryEmail = getPrimaryEmail(clerkUser);
|
|
51
|
-
if (primaryEmail) {
|
|
52
|
-
existingUser = await payload.find({
|
|
53
|
-
collection: userCollectionSlug,
|
|
54
|
-
where: {
|
|
55
|
-
email: {
|
|
56
|
-
equals: primaryEmail
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (existingUser.docs.length > 0) {
|
|
63
|
-
await payload.update({
|
|
64
|
-
collection: userCollectionSlug,
|
|
65
|
-
id: existingUser.docs[0].id,
|
|
66
|
-
data: payloadUserData
|
|
67
|
-
});
|
|
68
|
-
updated++;
|
|
69
|
-
} else {
|
|
70
|
-
await payload.create({
|
|
71
|
-
collection: userCollectionSlug,
|
|
72
|
-
data: {
|
|
73
|
-
...payloadUserData,
|
|
74
|
-
password: randomPassword
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
created++;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
console.log(`Synced ${allUsers.length} users from Clerk. Created: ${created}, Updated: ${updated}`);
|
|
81
|
-
const response = {
|
|
82
|
-
syncedUsers: allUsers.length,
|
|
83
|
-
success: true,
|
|
84
|
-
message: `Successfully synced ${allUsers.length} users from Clerk. Created: ${created}, Updated: ${updated}`,
|
|
85
|
-
count: allUsers.length,
|
|
86
|
-
created,
|
|
87
|
-
updated
|
|
88
|
-
};
|
|
89
|
-
return new Response(JSON.stringify(response), {
|
|
90
|
-
status: 200,
|
|
91
|
-
headers: {
|
|
92
|
-
'Content-Type': 'application/json'
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
} catch (error) {
|
|
96
|
-
console.error('Error syncing users from Clerk:', error);
|
|
97
|
-
const errorResponse = {
|
|
98
|
-
syncedUsers: 0,
|
|
99
|
-
success: false,
|
|
100
|
-
error: error instanceof Error ? error.message : 'Failed to sync users from Clerk'
|
|
101
|
-
};
|
|
102
|
-
throw new APIError(errorResponse.error || 'Unknown error', 500);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29sbGVjdGlvbnMvdXNlcnMvZW5kcG9pbnRzL3N5bmMtZnJvbS1jbGVyay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElFcnJvciwgRW5kcG9pbnQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHsgY3JlYXRlQ2xlcmtDbGllbnQgfSBmcm9tICdAY2xlcmsvYmFja2VuZCdcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJ0BjbGVyay9iYWNrZW5kJ1xuaW1wb3J0IHsgZ2V0UHJpbWFyeUVtYWlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3luY0NsZXJrVXNlcnNSZXNwb25zZSB7XG4gIHN5bmNlZFVzZXJzOiBudW1iZXJcbiAgc3VjY2VzczogYm9vbGVhblxuICBtZXNzYWdlPzogc3RyaW5nXG4gIGVycm9yPzogc3RyaW5nXG4gIGNvdW50PzogbnVtYmVyXG4gIGNyZWF0ZWQ/OiBudW1iZXJcbiAgdXBkYXRlZD86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3Qgc3luY0NsZXJrVXNlcnNFbmRwb2ludCA9ICh7IHVzZXJDb2xsZWN0aW9uU2x1ZyB9OiB7IHVzZXJDb2xsZWN0aW9uU2x1Zzogc3RyaW5nIH0pOiBFbmRwb2ludCA9PiB7XG4gIHJldHVybiB7XG4gICAgcGF0aDogJy9zeW5jLWZyb20tY2xlcmsnLFxuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIGhhbmRsZXI6IGFzeW5jIChyZXEpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gcmVxXG4gICAgICAgIGNvbnN0IG1hcHBpbmdGdW5jdGlvbiA9IHBheWxvYWQuY29uZmlnLmN1c3RvbS5jbGVya1BsdWdpbi5jbGVya1RvUGF5bG9hZE1hcHBpbmdcblxuICAgICAgICBpZiAoIXByb2Nlc3MuZW52LkNMRVJLX1NFQ1JFVF9LRVkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ0NMRVJLX1NFQ1JFVF9LRVkgaXMgbm90IGRlZmluZWQnLCA0MDApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGVya0NsaWVudCA9IGNyZWF0ZUNsZXJrQ2xpZW50KHtcbiAgICAgICAgICBzZWNyZXRLZXk6IHByb2Nlc3MuZW52LkNMRVJLX1NFQ1JFVF9LRVlcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0b3RhbFVzZXJzID0gYXdhaXQgY2xlcmtDbGllbnQudXNlcnMuZ2V0Q291bnQoKVxuXG4gICAgICAgIGNvbnN0IGxpbWl0ID0gMTAwXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodG90YWxVc2VycyAvIGxpbWl0KVxuICAgICAgICBsZXQgYWxsVXNlcnM6IFVzZXJbXSA9IFtdXG5cbiAgICAgICAgZm9yIChsZXQgcGFnZSA9IDA7IHBhZ2UgPCB0b3RhbFBhZ2VzOyBwYWdlKyspIHtcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSBwYWdlICogbGltaXRcbiAgICAgICAgICBjb25zdCBwYWdlVXNlcnMgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9hcGkuY2xlcmsuY29tL3YxL3VzZXJzP2xpbWl0PSR7bGltaXR9Jm9mZnNldD0ke29mZnNldH1gLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtwcm9jZXNzLmVudi5DTEVSS19TRUNSRVRfS0VZfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgcGFnZVVzZXJzRGF0YSA9IGF3YWl0IHBhZ2VVc2Vycy5qc29uKClcblxuICAgICAgICAgIGFsbFVzZXJzID0gWy4uLmFsbFVzZXJzLCAuLi5wYWdlVXNlcnNEYXRhXVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYEZldGNoZWQgcGFnZSAke3BhZ2UgKyAxfS8ke3RvdGFsUGFnZXN9LCB1c2VyczogJHtwYWdlVXNlcnNEYXRhLmxlbmd0aH1gKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNyZWF0ZWQgPSAwXG4gICAgICAgIGxldCB1cGRhdGVkID0gMFxuXG4gICAgICAgIGZvciAoY29uc3QgY2xlcmtVc2VyIG9mIGFsbFVzZXJzKSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZFVzZXJEYXRhID0gbWFwcGluZ0Z1bmN0aW9uKGNsZXJrVXNlcilcblxuICAgICAgICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gQXJyYXkoMylcbiAgICAgICAgICAgIC5maWxsKDApXG4gICAgICAgICAgICAubWFwKCgpID0+IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpKVxuICAgICAgICAgICAgLmpvaW4oJycpXG5cbiAgICAgICAgICBsZXQgZXhpc3RpbmdVc2VyID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IHVzZXJDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiB7IGNsZXJrSWQ6IHsgZXF1YWxzOiBjbGVya1VzZXIuaWQgfSB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICghZXhpc3RpbmdVc2VyLmRvY3MubGVuZ3RoICYmIGNsZXJrVXNlci5lbWFpbEFkZHJlc3NlcyAmJiBjbGVya1VzZXIuZW1haWxBZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJpbWFyeUVtYWlsID0gZ2V0UHJpbWFyeUVtYWlsKGNsZXJrVXNlcilcblxuICAgICAgICAgICAgaWYgKHByaW1hcnlFbWFpbCkge1xuICAgICAgICAgICAgICBleGlzdGluZ1VzZXIgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHVzZXJDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICB3aGVyZTogeyBlbWFpbDogeyBlcXVhbHM6IHByaW1hcnlFbWFpbCB9IH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdVc2VyLmRvY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYXdhaXQgcGF5bG9hZC51cGRhdGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiB1c2VyQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkOiBleGlzdGluZ1VzZXIuZG9jc1swXS5pZCxcbiAgICAgICAgICAgICAgZGF0YTogcGF5bG9hZFVzZXJEYXRhXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdXBkYXRlZCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogdXNlckNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZFVzZXJEYXRhLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY3JlYXRlZCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYFN5bmNlZCAke2FsbFVzZXJzLmxlbmd0aH0gdXNlcnMgZnJvbSBDbGVyay4gQ3JlYXRlZDogJHtjcmVhdGVkfSwgVXBkYXRlZDogJHt1cGRhdGVkfWApXG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2U6IFN5bmNDbGVya1VzZXJzUmVzcG9uc2UgPSB7XG4gICAgICAgICAgc3luY2VkVXNlcnM6IGFsbFVzZXJzLmxlbmd0aCxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IGBTdWNjZXNzZnVsbHkgc3luY2VkICR7YWxsVXNlcnMubGVuZ3RofSB1c2VycyBmcm9tIENsZXJrLiBDcmVhdGVkOiAke2NyZWF0ZWR9LCBVcGRhdGVkOiAke3VwZGF0ZWR9YCxcbiAgICAgICAgICBjb3VudDogYWxsVXNlcnMubGVuZ3RoLFxuICAgICAgICAgIGNyZWF0ZWQsXG4gICAgICAgICAgdXBkYXRlZFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSksIHtcbiAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfVxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3luY2luZyB1c2VycyBmcm9tIENsZXJrOicsIGVycm9yKVxuXG4gICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2U6IFN5bmNDbGVya1VzZXJzUmVzcG9uc2UgPSB7XG4gICAgICAgICAgc3luY2VkVXNlcnM6IDAsXG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBzeW5jIHVzZXJzIGZyb20gQ2xlcmsnXG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoZXJyb3JSZXNwb25zZS5lcnJvciB8fCAnVW5rbm93biBlcnJvcicsIDUwMClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJBUElFcnJvciIsImNyZWF0ZUNsZXJrQ2xpZW50IiwiZ2V0UHJpbWFyeUVtYWlsIiwic3luY0NsZXJrVXNlcnNFbmRwb2ludCIsInVzZXJDb2xsZWN0aW9uU2x1ZyIsInBhdGgiLCJtZXRob2QiLCJoYW5kbGVyIiwicmVxIiwicGF5bG9hZCIsIm1hcHBpbmdGdW5jdGlvbiIsImNvbmZpZyIsImN1c3RvbSIsImNsZXJrUGx1Z2luIiwiY2xlcmtUb1BheWxvYWRNYXBwaW5nIiwicHJvY2VzcyIsImVudiIsIkNMRVJLX1NFQ1JFVF9LRVkiLCJjbGVya0NsaWVudCIsInNlY3JldEtleSIsInRvdGFsVXNlcnMiLCJ1c2VycyIsImdldENvdW50IiwibGltaXQiLCJ0b3RhbFBhZ2VzIiwiTWF0aCIsImNlaWwiLCJhbGxVc2VycyIsInBhZ2UiLCJvZmZzZXQiLCJwYWdlVXNlcnMiLCJmZXRjaCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwicGFnZVVzZXJzRGF0YSIsImpzb24iLCJjb25zb2xlIiwibG9nIiwibGVuZ3RoIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJjbGVya1VzZXIiLCJwYXlsb2FkVXNlckRhdGEiLCJyYW5kb21QYXNzd29yZCIsIkFycmF5IiwiZmlsbCIsIm1hcCIsInJhbmRvbSIsInRvU3RyaW5nIiwic2xpY2UiLCJqb2luIiwiZXhpc3RpbmdVc2VyIiwiZmluZCIsImNvbGxlY3Rpb24iLCJ3aGVyZSIsImNsZXJrSWQiLCJlcXVhbHMiLCJpZCIsImRvY3MiLCJlbWFpbEFkZHJlc3NlcyIsInByaW1hcnlFbWFpbCIsImVtYWlsIiwidXBkYXRlIiwiZGF0YSIsImNyZWF0ZSIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJzeW5jZWRVc2VycyIsInN1Y2Nlc3MiLCJtZXNzYWdlIiwiY291bnQiLCJSZXNwb25zZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJlcnJvciIsImVycm9yUmVzcG9uc2UiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFrQixVQUFTO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLGlCQUFnQjtBQUVsRCxTQUFTQyxlQUFlLFFBQVEsb0JBQW1CO0FBWW5ELE9BQU8sTUFBTUMseUJBQXlCLENBQUMsRUFBRUMsa0JBQWtCLEVBQWtDO0lBQzNGLE9BQU87UUFDTEMsTUFBTTtRQUNOQyxRQUFRO1FBQ1JDLFNBQVMsT0FBT0M7WUFDZCxJQUFJO2dCQUNGLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdEO2dCQUNwQixNQUFNRSxrQkFBa0JE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
|