@nlabs/reaktor 1.17.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -0
- package/docs/ASSISTANT.md +138 -0
- package/docs/GENERATION.md +42 -5
- package/docs/NATIVE_PUSH.md +56 -0
- package/lib/actions/alfredFaq.d.ts +80 -0
- package/lib/actions/alfredFaq.js +206 -0
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/contentGeneration.d.ts +4 -0
- package/lib/actions/contentGeneration.js +82 -10
- package/lib/actions/contentGenerationErrors.js +1 -1
- package/lib/actions/conversations.d.ts +1 -1
- package/lib/actions/conversations.js +19 -9
- package/lib/actions/crm.js +1 -1
- package/lib/actions/crud.js +26 -1
- package/lib/actions/databaseAccounts.js +1 -1
- package/lib/actions/databaseProvisioningLease.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/geminiVideo.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/higgsfield.js +1 -1
- package/lib/actions/imageGeneration.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +2 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +23 -7
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/ollamaGeneration.js +1 -1
- package/lib/actions/openaiResponseSession.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/phoneSupport.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +1 -1
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.js +57 -4
- package/lib/actions/videoGeneration.js +1 -1
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/geminiGenerationAdapter.js +1 -1
- package/lib/adapters/higgsfieldAdapter.js +1 -1
- package/lib/adapters/higgsfieldModelCatalog.js +1 -1
- package/lib/adapters/higgsfieldModels.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/imageGenerationAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/assistant/core.d.ts +53 -0
- package/lib/assistant/core.js +123 -0
- package/lib/assistant/faq.d.ts +26 -0
- package/lib/assistant/faq.js +238 -0
- package/lib/assistant/faqCore.d.ts +23 -0
- package/lib/assistant/faqCore.js +20 -0
- package/lib/assistant/index.d.ts +7 -0
- package/lib/assistant/index.js +5 -0
- package/lib/assistant/service.d.ts +35 -0
- package/lib/assistant/service.js +201 -0
- package/lib/config.js +1 -1
- package/lib/constants/collections.js +1 -1
- package/lib/durableChat/conversations.d.ts +62 -0
- package/lib/durableChat/conversations.js +729 -0
- package/lib/durableChat/errors.d.ts +6 -0
- package/lib/durableChat/errors.js +11 -0
- package/lib/durableChat/events.d.ts +22 -0
- package/lib/durableChat/events.js +50 -0
- package/lib/durableChat/index.d.ts +8 -0
- package/lib/durableChat/index.js +10 -0
- package/lib/durableChat/membership.d.ts +24 -0
- package/lib/durableChat/membership.js +85 -0
- package/lib/durableChat/messageTypes.d.ts +76 -0
- package/lib/durableChat/messageTypes.js +3 -0
- package/lib/durableChat/messages.d.ts +16 -0
- package/lib/durableChat/messages.js +257 -0
- package/lib/durableChat/transaction.d.ts +10 -0
- package/lib/durableChat/transaction.js +53 -0
- package/lib/durableChat/types.d.ts +81 -0
- package/lib/durableChat/types.js +3 -0
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -3
- package/lib/lambdas/actions/websockets.js +4 -4
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +1 -1
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/higgsfield/higgsfield.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/nativePush/graphql.d.ts +14 -0
- package/lib/nativePush/graphql.js +105 -0
- package/lib/nativePush/index.d.ts +7 -0
- package/lib/nativePush/index.js +9 -0
- package/lib/nativePush/migrations.d.ts +2 -0
- package/lib/nativePush/migrations.js +36 -0
- package/lib/nativePush/nativePushContract.fixture.d.ts +22 -0
- package/lib/nativePush/nativePushContract.fixture.js +27 -0
- package/lib/nativePush/payload.d.ts +2 -0
- package/lib/nativePush/payload.js +106 -0
- package/lib/nativePush/repository.d.ts +9 -0
- package/lib/nativePush/repository.js +120 -0
- package/lib/nativePush/service.d.ts +2 -0
- package/lib/nativePush/service.js +110 -0
- package/lib/nativePush/snsProvider.d.ts +17 -0
- package/lib/nativePush/snsProvider.js +165 -0
- package/lib/nativePush/types.d.ts +89 -0
- package/lib/nativePush/types.js +3 -0
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/contentGeneration.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +1 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +1 -1
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/higgsfield.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/imageGeneration.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +1 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/objectTypes/videoGeneration.js +1 -1
- package/lib/organizations/accountLifecycle.d.ts +7 -0
- package/lib/organizations/accountLifecycle.js +106 -0
- package/lib/organizations/authorization.d.ts +9 -0
- package/lib/organizations/authorization.js +40 -0
- package/lib/organizations/billing.d.ts +38 -0
- package/lib/organizations/billing.js +277 -0
- package/lib/organizations/billingProvider.d.ts +4 -0
- package/lib/organizations/billingProvider.js +287 -0
- package/lib/organizations/billingUpdates.d.ts +9 -0
- package/lib/organizations/billingUpdates.js +388 -0
- package/lib/organizations/index.d.ts +10 -0
- package/lib/organizations/index.js +12 -0
- package/lib/organizations/mail.d.ts +10 -0
- package/lib/organizations/mail.js +60 -0
- package/lib/organizations/memberDirectory.d.ts +15 -0
- package/lib/organizations/memberDirectory.js +28 -0
- package/lib/organizations/membership.d.ts +19 -0
- package/lib/organizations/membership.js +248 -0
- package/lib/organizations/passwordRecovery.d.ts +9 -0
- package/lib/organizations/passwordRecovery.js +50 -0
- package/lib/organizations/plans.d.ts +6 -0
- package/lib/organizations/plans.js +40 -0
- package/lib/organizations/providerPagination.d.ts +6 -0
- package/lib/organizations/providerPagination.js +23 -0
- package/lib/organizations/reconciliation.d.ts +11 -0
- package/lib/organizations/reconciliation.js +400 -0
- package/lib/organizations/signup.d.ts +25 -0
- package/lib/organizations/signup.js +169 -0
- package/lib/organizations/store.d.ts +25 -0
- package/lib/organizations/store.js +167 -0
- package/lib/organizations/types.d.ts +138 -0
- package/lib/organizations/types.js +3 -0
- package/lib/organizations/verification.d.ts +3 -0
- package/lib/organizations/verification.js +51 -0
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +1 -1
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/higgsfield/higgsfield.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/databaseCredentials.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.js +1 -1
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/databaseCredentials.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/generationCallback.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/mediaAccess.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/nodeRealtime.js +1 -1
- package/lib/utils/opaqueToken.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/secretDatabase.js +1 -1
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +1 -1
- package/lib/utils/stripeUtils.ts.bak +1 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +16 -3
|
@@ -125,4 +125,4 @@ export const deleteConnection = (context, fromType, fromId, toType, toId, connec
|
|
|
125
125
|
});
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb25uZWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7bGl0ZXJhbH0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2J1aWxkRmlsdGVyQ2xhdXNlfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RmlsdGVyR3JvdXB9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7Q29ubmVjdGlvbktpbmRzfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5cbmltcG9ydCB0eXBlIHtDb25uZWN0aW9uS2luZFR5cGUsIENvbm5lY3Rpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnY29ubmVjdGlvbnMnO1xuY29uc3QgaGFzQ29ubmVjdGlvbkNvbGxlY3Rpb24gPSBsaXRlcmFsKCdoYXNDb25uZWN0aW9uJyk7XG5cbmNvbnN0IHJlbW92ZUZvbGxvd0Nvbm5lY3Rpb25zRm9yQmxvY2tlZFBhaXIgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21Eb2NJZDogc3RyaW5nLFxuICB0b0RvY0lkOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSkucXVlcnkoYXFsYFxuICAgIEZPUiBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSIGhjLnR5cGUgPT0gJHtDb25uZWN0aW9uS2luZHMuRk9MTE9XfVxuICAgICAgRklMVEVSIChcbiAgICAgICAgKGhjLl9mcm9tID09ICR7ZnJvbURvY0lkfSAmJiBoYy5fdG8gPT0gJHt0b0RvY0lkfSlcbiAgICAgICAgfHwgKGhjLl9mcm9tID09ICR7dG9Eb2NJZH0gJiYgaGMuX3RvID09ICR7ZnJvbURvY0lkfSlcbiAgICAgIClcbiAgICAgIFJFTU9WRSBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICBgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZyxcbiAgdmFsdWU/OiBzdHJpbmcsXG4gIGNvbm5lY3Rpb25UeXBlOiBDb25uZWN0aW9uS2luZFR5cGUgPSBDb25uZWN0aW9uS2luZHMuRk9MTE9XXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuICBjb25zdCBpbnNlcnQgPSB7XG4gICAgX2Zyb206IGZvcm1hdEZyb21Eb2NJZCxcbiAgICBfdG86IGZvcm1hdFRvRG9jSWQsXG4gICAgaXNEaXJlY3Q6IHRydWUsXG4gICAgdHlwZTogY29ubmVjdGlvblR5cGUsXG4gICAgdmFsdWU6ICEhdmFsdWUgPyBwYXJzZVN0cmluZyh2YWx1ZSwgMzIpIDogdW5kZWZpbmVkXG4gIH07XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIGlmKGNvbm5lY3Rpb25UeXBlID09PSBDb25uZWN0aW9uS2luZHMuQkxPQ0spIHtcbiAgICAgICAgYXdhaXQgcmVtb3ZlRm9sbG93Q29ubmVjdGlvbnNGb3JCbG9ja2VkUGFpcihjb250ZXh0LCBmb3JtYXRGcm9tRG9jSWQsIGZvcm1hdFRvRG9jSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpKVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZyxcbiAgY29ubmVjdGlvblR5cGU6IENvbm5lY3Rpb25LaW5kVHlwZSA9IENvbm5lY3Rpb25LaW5kcy5GT0xMT1dcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuXG4gIGNvbnN0IGZpbHRlcnM6IEZpbHRlckdyb3VwID0ge1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0RnJvbURvY0lkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0VG9Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICd0eXBlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBjb25uZWN0aW9uVHlwZX1cbiAgICBdXG4gIH07XG4gIGNvbnN0IGZpbHRlckNsYXVzZSA9IGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMsICdoYycpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgXG4gICAgRk9SIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gaGNcbiAgYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIGNvbm5lY3Rpb25UeXBlOiBDb25uZWN0aW9uS2luZFR5cGUgPSBDb25uZWN0aW9uS2luZHMuRk9MTE9XXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2RlbGV0ZUNvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcblxuICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJHcm91cCA9IHtcbiAgICBsb2dpYzogJ0FORCcsXG4gICAgY29uZGl0aW9uczogW1xuICAgICAge2ZpZWxkOiAnX2Zyb20nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdEZyb21Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICdfdG8nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFRvRG9jSWR9LFxuICAgICAge2ZpZWxkOiAndHlwZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogY29ubmVjdGlvblR5cGV9XG4gICAgXVxuICB9O1xuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZShmaWx0ZXJzLCAnaGMnKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYFxuICAgIEZPUiBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJDbGF1c2UpfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gIGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VBcmFuZ29JZCIsInBhcnNlU3RyaW5nIiwiYXFsIiwibGl0ZXJhbCIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsImJ1aWxkRmlsdGVyQ2xhdXNlIiwidXNlRGIiLCJDb25uZWN0aW9uS2luZHMiLCJldmVudENhdGVnb3J5IiwiaGFzQ29ubmVjdGlvbkNvbGxlY3Rpb24iLCJyZW1vdmVGb2xsb3dDb25uZWN0aW9uc0ZvckJsb2NrZWRQYWlyIiwiY29udGV4dCIsImZyb21Eb2NJZCIsInRvRG9jSWQiLCJkYXRhYmFzZU5hbWUiLCJxdWVyeSIsIkZPTExPVyIsImFkZENvbm5lY3Rpb24iLCJmcm9tVHlwZSIsImZyb21JZCIsInRvVHlwZSIsInRvSWQiLCJ2YWx1ZSIsImNvbm5lY3Rpb25UeXBlIiwiYWN0aW9uIiwiZm9ybWF0RnJvbURvY0lkIiwiZm9ybWF0VG9Eb2NJZCIsImluc2VydCIsIl9mcm9tIiwiX3RvIiwiaXNEaXJlY3QiLCJ0eXBlIiwidW5kZWZpbmVkIiwiYXFsUXJ5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiQkxPQ0siLCJjYXRjaCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsIkRBVEFCQVNFX0VSUk9SIiwiZ2V0Q29ubmVjdGlvbiIsImZpbHRlcnMiLCJsb2dpYyIsImNvbmRpdGlvbnMiLCJmaWVsZCIsIm9wZXJhdG9yIiwiZmlsdGVyQ2xhdXNlIiwiY3Vyc29yIiwibmV4dCIsImRlbGV0ZUNvbm5lY3Rpb24iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVFBLGFBQWEsRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUN4RSxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUM3QixTQUFRQyxPQUFPLFFBQU8sZUFBZTtBQUVyQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBQ25ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFDcEQsU0FBUUMsaUJBQWlCLFFBQU8seUJBQXlCO0FBQ3pELFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFJaEQsU0FBUUMsZUFBZSxRQUFPLGdDQUFnQztBQUk5RCxNQUFNQyxnQkFBZ0I7QUFDdEIsTUFBTUMsMEJBQTBCUCxRQUFRO0FBRXhDLE1BQU1RLHdDQUF3QyxPQUM1Q0MsU0FDQUMsV0FDQUM7SUFFQSxNQUFNUCxNQUFNSyxRQUFRRyxZQUFZLEVBQUVDLEtBQUssQ0FBQ2QsR0FBRyxDQUFDO2NBQ2hDLEVBQUVRLHdCQUF3Qjt3QkFDaEIsRUFBRUYsZ0JBQWdCUyxNQUFNLENBQUM7O3FCQUU1QixFQUFFSixVQUFVLGNBQWMsRUFBRUMsUUFBUTt3QkFDakMsRUFBRUEsUUFBUSxjQUFjLEVBQUVELFVBQVU7O21CQUV6QyxFQUFFSCx3QkFBd0I7RUFDM0MsQ0FBQztBQUNIO0FBRUEsT0FBTyxNQUFNUSxnQkFBZ0IsQ0FDM0JOLFNBQ0FPLFVBQ0FDLFFBQ0FDLFFBQ0FDLE1BQ0FDLE9BQ0FDLGlCQUFxQ2hCLGdCQUFnQlMsTUFBTTtJQUUzRCxNQUFNUSxTQUFTO0lBQ2YsTUFBTSxFQUFDVixZQUFZLEVBQUMsR0FBR0g7SUFFdkIsTUFBTWMsa0JBQWtCMUIsY0FBYyxHQUFHbUIsU0FBUyxDQUFDLEVBQUVDLFFBQVE7SUFDN0QsTUFBTU8s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
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb25uZWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7bGl0ZXJhbH0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2J1aWxkRmlsdGVyQ2xhdXNlfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RmlsdGVyR3JvdXB9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7Q29ubmVjdGlvbktpbmRzfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5cbmltcG9ydCB0eXBlIHtDb25uZWN0aW9uS2luZFR5cGUsIENvbm5lY3Rpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnY29ubmVjdGlvbnMnO1xuY29uc3QgaGFzQ29ubmVjdGlvbkNvbGxlY3Rpb24gPSBsaXRlcmFsKCdoYXNDb25uZWN0aW9uJyk7XG5cbmNvbnN0IHJlbW92ZUZvbGxvd0Nvbm5lY3Rpb25zRm9yQmxvY2tlZFBhaXIgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21Eb2NJZDogc3RyaW5nLFxuICB0b0RvY0lkOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSkucXVlcnkoYXFsYFxuICAgIEZPUiBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSIGhjLnR5cGUgPT0gJHtDb25uZWN0aW9uS2luZHMuRk9MTE9XfVxuICAgICAgRklMVEVSIChcbiAgICAgICAgKGhjLl9mcm9tID09ICR7ZnJvbURvY0lkfSAmJiBoYy5fdG8gPT0gJHt0b0RvY0lkfSlcbiAgICAgICAgfHwgKGhjLl9mcm9tID09ICR7dG9Eb2NJZH0gJiYgaGMuX3RvID09ICR7ZnJvbURvY0lkfSlcbiAgICAgIClcbiAgICAgIFJFTU9WRSBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICBgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZyxcbiAgdmFsdWU/OiBzdHJpbmcsXG4gIGNvbm5lY3Rpb25UeXBlOiBDb25uZWN0aW9uS2luZFR5cGUgPSBDb25uZWN0aW9uS2luZHMuRk9MTE9XXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuICBjb25zdCBpbnNlcnQgPSB7XG4gICAgX2Zyb206IGZvcm1hdEZyb21Eb2NJZCxcbiAgICBfdG86IGZvcm1hdFRvRG9jSWQsXG4gICAgaXNEaXJlY3Q6IHRydWUsXG4gICAgdHlwZTogY29ubmVjdGlvblR5cGUsXG4gICAgdmFsdWU6ICEhdmFsdWUgPyBwYXJzZVN0cmluZyh2YWx1ZSwgMzIpIDogdW5kZWZpbmVkXG4gIH07XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIGlmKGNvbm5lY3Rpb25UeXBlID09PSBDb25uZWN0aW9uS2luZHMuQkxPQ0spIHtcbiAgICAgICAgYXdhaXQgcmVtb3ZlRm9sbG93Q29ubmVjdGlvbnNGb3JCbG9ja2VkUGFpcihjb250ZXh0LCBmb3JtYXRGcm9tRG9jSWQsIGZvcm1hdFRvRG9jSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpKVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZyxcbiAgY29ubmVjdGlvblR5cGU6IENvbm5lY3Rpb25LaW5kVHlwZSA9IENvbm5lY3Rpb25LaW5kcy5GT0xMT1dcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuXG4gIGNvbnN0IGZpbHRlcnM6IEZpbHRlckdyb3VwID0ge1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0RnJvbURvY0lkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0VG9Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICd0eXBlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBjb25uZWN0aW9uVHlwZX1cbiAgICBdXG4gIH07XG4gIGNvbnN0IGZpbHRlckNsYXVzZSA9IGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMsICdoYycpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgXG4gICAgRk9SIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gaGNcbiAgYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIGNvbm5lY3Rpb25UeXBlOiBDb25uZWN0aW9uS2luZFR5cGUgPSBDb25uZWN0aW9uS2luZHMuRk9MTE9XXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2RlbGV0ZUNvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcblxuICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJHcm91cCA9IHtcbiAgICBsb2dpYzogJ0FORCcsXG4gICAgY29uZGl0aW9uczogW1xuICAgICAge2ZpZWxkOiAnX2Zyb20nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdEZyb21Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICdfdG8nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFRvRG9jSWR9LFxuICAgICAge2ZpZWxkOiAndHlwZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogY29ubmVjdGlvblR5cGV9XG4gICAgXVxuICB9O1xuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZShmaWx0ZXJzLCAnaGMnKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYFxuICAgIEZPUiBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJDbGF1c2UpfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gIGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VBcmFuZ29JZCIsInBhcnNlU3RyaW5nIiwiYXFsIiwibGl0ZXJhbCIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsImJ1aWxkRmlsdGVyQ2xhdXNlIiwidXNlRGIiLCJDb25uZWN0aW9uS2luZHMiLCJldmVudENhdGVnb3J5IiwiaGFzQ29ubmVjdGlvbkNvbGxlY3Rpb24iLCJyZW1vdmVGb2xsb3dDb25uZWN0aW9uc0ZvckJsb2NrZWRQYWlyIiwiY29udGV4dCIsImZyb21Eb2NJZCIsInRvRG9jSWQiLCJkYXRhYmFzZU5hbWUiLCJxdWVyeSIsIkZPTExPVyIsImFkZENvbm5lY3Rpb24iLCJmcm9tVHlwZSIsImZyb21JZCIsInRvVHlwZSIsInRvSWQiLCJ2YWx1ZSIsImNvbm5lY3Rpb25UeXBlIiwiYWN0aW9uIiwiZm9ybWF0RnJvbURvY0lkIiwiZm9ybWF0VG9Eb2NJZCIsImluc2VydCIsIl9mcm9tIiwiX3RvIiwiaXNEaXJlY3QiLCJ0eXBlIiwidW5kZWZpbmVkIiwiYXFsUXJ5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiQkxPQ0siLCJjYXRjaCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsIkRBVEFCQVNFX0VSUk9SIiwiZ2V0Q29ubmVjdGlvbiIsImZpbHRlcnMiLCJsb2dpYyIsImNvbmRpdGlvbnMiLCJmaWVsZCIsIm9wZXJhdG9yIiwiZmlsdGVyQ2xhdXNlIiwiY3Vyc29yIiwibmV4dCIsImRlbGV0ZUNvbm5lY3Rpb24iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVFBLGFBQWEsRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUN4RSxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUM3QixTQUFRQyxPQUFPLFFBQU8sZUFBZTtBQUVyQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBQ25ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFDcEQsU0FBUUMsaUJBQWlCLFFBQU8seUJBQXlCO0FBQ3pELFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFJaEQsU0FBUUMsZUFBZSxRQUFPLGdDQUFnQztBQUk5RCxNQUFNQyxnQkFBZ0I7QUFDdEIsTUFBTUMsMEJBQTBCUCxRQUFRO0FBRXhDLE1BQU1RLHdDQUF3QyxPQUM1Q0MsU0FDQUMsV0FDQUM7SUFFQSxNQUFNUCxNQUFNSyxRQUFRRyxZQUFZLEVBQUVDLEtBQUssQ0FBQ2QsR0FBRyxDQUFDO2NBQ2hDLEVBQUVRLHdCQUF3Qjt3QkFDaEIsRUFBRUYsZ0JBQWdCUyxNQUFNLENBQUM7O3FCQUU1QixFQUFFSixVQUFVLGNBQWMsRUFBRUMsUUFBUTt3QkFDakMsRUFBRUEsUUFBUSxjQUFjLEVBQUVELFVBQVU7O21CQUV6QyxFQUFFSCx3QkFBd0I7RUFDM0MsQ0FBQztBQUNIO0FBRUEsT0FBTyxNQUFNUSxnQkFBZ0IsQ0FDM0JOLFNBQ0FPLFVBQ0FDLFFBQ0FDLFFBQ0FDLE1BQ0FDLE9BQ0FDLGlCQUFxQ2hCLGdCQUFnQlMsTUFBTTtJQUUzRCxNQUFNUSxTQUFTO0lBQ2YsTUFBTSxFQUFDVixZQUFZLEVBQUMsR0FBR0g7SUFFdkIsTUFBTWMsa0JBQWtCMUIsY0FBYyxHQUFHbUIsU0FBUyxDQUFDLEVBQUVDLFFBQVE7SUFDN0QsTUFB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
|
package/lib/actions/content.js
CHANGED
|
@@ -209,4 +209,4 @@ export const searchContent = async (context, options = {})=>{
|
|
|
209
209
|
return contentList.map((content)=>parseContentFromDb(content));
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcblxuaW1wb3J0IHtwYXJzZUNvbnRlbnRGcm9tRGIsIHBhcnNlQ29udGVudElucHV0fSBmcm9tICcuLi9hZGFwdGVycy9jb250ZW50QWRhcHRlci5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7dHJhbnNsYXRlVGV4dH0gZnJvbSAnLi4vdXRpbHMvZ29vZ2xlVHJhbnNsYXRlLmpzJztcbmltcG9ydCB7ZXh0cmFjdExhbmd1YWdlLCBpc1JlZ2lvbmFsTG9jYWxlfSBmcm9tICcuLi91dGlscy9sb2NhbGVVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGdldEl0ZW1CeSwgZ2V0TGlzdEJ5LCB1cGRhdGVJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudElucHV0VHlwZSwgQ29udGVudE9wdGlvbnMsIENvbnRlbnRUeXBlLCBMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudE9wdGlvbnMgPSAob3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgaXNBY3RpdmUgPSB0cnVlLFxuICAgIGtleSxcbiAgICBsb2NhbGVcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCxcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXk6IGtleSA/IHBhcnNlU3RyaW5nKGtleSwgMjAwKSA6IHVuZGVmaW5lZCxcbiAgICBsb2NhbGVcbiAgfTtcbn07XG5cbmNvbnN0IGJ1aWxkQ29udGVudEZpbHRlcnMgPSAob3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fSk6IEZpbHRlckdyb3VwIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qge2NhdGVnb3J5LCBpc0FjdGl2ZSwga2V5LCBsb2NhbGV9ID0gcGFyc2VDb250ZW50T3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZmlsdGVyczogYW55W10gPSBbXTtcblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAna2V5Jywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBrZXl9KTtcbiAgfVxuXG4gIGlmKGxvY2FsZSkge1xuICAgIGZpbHRlcnMucHVzaCh7ZmllbGQ6ICdsb2NhbGUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGxvY2FsZX0pO1xuICB9XG5cbiAgaWYoY2F0ZWdvcnkpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAnY2F0ZWdvcnknLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGNhdGVnb3J5fSk7XG4gIH1cblxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZmlsdGVycy5wdXNoKHtmaWVsZDogJ2lzQWN0aXZlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBpc0FjdGl2ZX0pO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcnMubGVuZ3RoID4gMCA/IHtvcGVyYXRvcjogJ0FORCcsIGZpbHRlcnN9IGFzIGFueSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGJ1aWxkQ29udGVudE11dGF0aW9uID0gKFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGUsXG4gIG9wdGlvbnM6IHtyZWFkb25seSBpbmNsdWRlSWRlbnRpdHk/OiBib29sZWFufSA9IHt9XG4pOiBQYXJ0aWFsPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgY29udGVudCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlOiBwYXJzZWRMb2NhbGVcbiAgfSA9IHBhcnNlZENvbnRlbnQ7XG4gIGNvbnN0IHtpbmNsdWRlSWRlbnRpdHkgPSBmYWxzZX0gPSBvcHRpb25zO1xuICBjb25zdCBsb2NhbGU6IExvY2FsZSA9IHBhcnNlZExvY2FsZSB8fCAnZW4nO1xuXG4gIHJldHVybiB7XG4gICAgLi4uKGluY2x1ZGVJZGVudGl0eSAmJiB7a2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsIGxvY2FsZX0pLFxuICAgIGNvbnRlbnQ6IGNvbnRlbnQgIT09IHVuZGVmaW5lZCA/IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSA6IHVuZGVmaW5lZCxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCA/IChkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkKSBhcyBzdHJpbmcgOiB1bmRlZmluZWQsXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ICE9PSB1bmRlZmluZWQgPyAoY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCkgYXMgc3RyaW5nIDogdW5kZWZpbmVkLFxuICAgIGlzQWN0aXZlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuKTogUHJvbWlzZTxDb250ZW50VHlwZSB8IG51bGw+ID0+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGdldEl0ZW1CeTxDb250ZW50VHlwZT4oY29udGV4dCwgJ2NvbnRlbnQnLCBidWlsZENvbnRlbnRGaWx0ZXJzKHtrZXksIGxvY2FsZSwgaXNBY3RpdmU6IHRydWV9KSk7XG4gIHJldHVybiBjb250ZW50ID8gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50V2l0aEZhbGxiYWNrID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBrZXk6IHN0cmluZyxcbiAgZmFsbGJhY2tDb250ZW50OiBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgYXBwTG9jYWxlID0gKENvbmZpZy5nZXQoJ2FwcC5sb2NhbGUnKSB8fCAnZW4nKSBhcyBMb2NhbGU7XG5cbiAgdHJ5IHtcbiAgICBsZXQgY29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBsb2NhbGUpO1xuXG4gICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBpZihpc1JlZ2lvbmFsTG9jYWxlKGxvY2FsZSkpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKGxvY2FsZSk7XG4gICAgICBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxhbmd1YWdlIGFzIExvY2FsZSk7XG5cbiAgICAgIGlmKGNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQuY29udGVudCxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBFeHRyYWN0ZWQgZnJvbSAke2xhbmd1YWdlfWBcbiAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBleHRyYWN0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKGxvY2FsZSA9PT0gYXBwTG9jYWxlKSB7XG4gICAgICBpZihmYWxsYmFja0NvbnRlbnQpIHtcbiAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGZhbGxiYWNrIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbGV0IHNvdXJjZUNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgYXBwTG9jYWxlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0OiBzdHJpbmc7XG5cbiAgICAgIGlmKHNvdXJjZUNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUoYXBwTG9jYWxlKSkge1xuICAgICAgICAgIGNvbnN0IGFwcExhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSk7XG4gICAgICAgICAgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMYW5ndWFnZSBhcyBMb2NhbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBzb3VyY2VDb250ZW50LmNvbnRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZihmYWxsYmFja0NvbnRlbnQpIHtcbiAgICAgICAgICBzb3VyY2VUZXh0ID0gZmFsbGJhY2tDb250ZW50O1xuXG4gICAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjb250ZW50OiBmYWxsYmFja0NvbnRlbnQsXG4gICAgICAgICAgICBsb2NhbGU6IGFwcExvY2FsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXV0by1nZW5lcmF0ZWQgZnJvbSBmYWxsYmFjaydcbiAgICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgYXMgZGVmYXVsdCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmFuc2xhdGVkVGV4dCA9IGF3YWl0IHRyYW5zbGF0ZVRleHQoc291cmNlVGV4dCwgZXh0cmFjdExhbmd1YWdlKGxvY2FsZSksIGV4dHJhY3RMYW5ndWFnZShhcHBMb2NhbGUpKTtcblxuICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgIGtleSxcbiAgICAgICAgY29udGVudDogdHJhbnNsYXRlZFRleHQsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBdXRvLXRyYW5zbGF0ZWQgZnJvbSAke2FwcExvY2FsZX1gXG4gICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB0cmFuc2xhdGVkIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdHJhbnNsYXRlZFRleHQ7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUcmFuc2xhdGlvbiBlcnJvcjonLCB0cmFuc2xhdGlvbkVycm9yKTtcblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY29udGVudCBmcm9tIGRhdGFiYXNlOicsIGVycm9yKTtcbiAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZENvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZVxuKTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbn0gPSBjb250ZXh0O1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGNvbnRlbnQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXNBY3RpdmUsXG4gICAga2V5LFxuICAgIGxvY2FsZTogcGFyc2VkTG9jYWxlXG4gIH0gPSBwYXJzZWRDb250ZW50O1xuICBjb25zdCBsb2NhbGU6IExvY2FsZSA9IHBhcnNlZExvY2FsZSB8fCAnZW4nO1xuICBjb25zdCBjb250ZW50SWQgPSBjcmVhdGVIYXNoKGBjb250ZW50LSR7a2V5fS0ke2xvY2FsZX1gKTtcbiAgY29uc3QgaW5zZXJ0OiBDb250ZW50VHlwZSA9IHtcbiAgICBfa2V5OiBjb250ZW50SWQsXG4gICAga2V5OiBwYXJzZVN0cmluZyhrZXksIDIwMCksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSxcbiAgICAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7ZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWR9KSxcbiAgICAuLi4oY2F0ZWdvcnkgIT09IHVuZGVmaW5lZCAmJiB7Y2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWR9KSxcbiAgICAuLi4oaXNBY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7aXNBY3RpdmV9KSxcbiAgICB1c2VySWQ6IHNlc3Npb24/LnVzZXJJZCBhcyBzdHJpbmdcbiAgfTtcblxuICBjb25zdCBzYXZlZENvbnRlbnQgPSBhd2FpdCBhZGRJdGVtPENvbnRlbnRUeXBlPihjb250ZXh0LCAnY29udGVudCcsIGluc2VydCk7XG4gIHJldHVybiBwYXJzZUNvbnRlbnRGcm9tRGIoc2F2ZWRDb250ZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGVcbik6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtjb250ZW50SWR9ID0gcGFyc2VkQ29udGVudDtcblxuICBpZighY29udGVudElkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb250ZW50IElEIGlzIHJlcXVpcmVkIGZvciB1cGRhdGUnKTtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRDb250ZW50ID0gYXdhaXQgdXBkYXRlSXRlbTxDb250ZW50VHlwZT4oY29udGV4dCwgJ2NvbnRlbnQnLCBjb250ZW50SWQsIGJ1aWxkQ29udGVudE11dGF0aW9uKGNvbnRlbnRJbnB1dCkpO1xuXG4gIGlmKCF1cGRhdGVkQ29udGVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCBub3QgZm91bmQgb3IgYWNjZXNzIGRlbmllZCcpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlQ29udGVudEZyb21EYih1cGRhdGVkQ29udGVudCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDb250ZW50VHlwZVtdPiA9PiB7XG4gIGNvbnN0IGNvbnRlbnRMaXN0ID0gYXdhaXQgZ2V0TGlzdEJ5PENvbnRlbnRUeXBlPihcbiAgICBjb250ZXh0LFxuICAgICdjb250ZW50JyxcbiAgICBidWlsZENvbnRlbnRGaWx0ZXJzKG9wdGlvbnMpLFxuICAgIHtzb3J0OiBbe2ZpZWxkOiAna2V5JywgZGlyZWN0aW9uOiAnQVNDJ30sIHtmaWVsZDogJ2xvY2FsZScsIGRpcmVjdGlvbjogJ0FTQyd9XX1cbiAgKTtcblxuICByZXR1cm4gY29udGVudExpc3QubWFwKChjb250ZW50KSA9PiBwYXJzZUNvbnRlbnRGcm9tRGIoY29udGVudCkpO1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VTdHJpbmciLCJwYXJzZUNvbnRlbnRGcm9tRGIiLCJwYXJzZUNvbnRlbnRJbnB1dCIsIkNvbmZpZyIsInRyYW5zbGF0ZVRleHQiLCJleHRyYWN0TGFuZ3VhZ2UiLCJpc1JlZ2lvbmFsTG9jYWxlIiwiYWRkSXRlbSIsImdldEl0ZW1CeSIsImdldExpc3RCeSIsInVwZGF0ZUl0ZW0iLCJwYXJzZUNvbnRlbnRPcHRpb25zIiwib3B0aW9ucyIsImNhdGVnb3J5IiwiaXNBY3RpdmUiLCJrZXkiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJidWlsZENvbnRlbnRGaWx0ZXJzIiwiZmlsdGVycyIsInB1c2giLCJmaWVsZCIsIm9wZXJhdG9yIiwidmFsdWUiLCJsZW5ndGgiLCJidWlsZENvbnRlbnRNdXRhdGlvbiIsImNvbnRlbnRJbnB1dCIsInBhcnNlZENvbnRlbnQiLCJjb250ZW50IiwiZGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbGUiLCJpbmNsdWRlSWRlbnRpdHkiLCJnZXRDb250ZW50IiwiY29udGV4dCIsImdldENvbnRlbnRXaXRoRmFsbGJhY2siLCJmYWxsYmFja0NvbnRlbnQiLCJhcHBMb2NhbGUiLCJnZXQiLCJsYW5ndWFnZSIsImFkZENvbnRlbnQiLCJjYXRjaCIsInNhdmVFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInNvdXJjZUNvbnRlbnQiLCJzb3VyY2VUZXh0IiwiYXBwTGFuZ3VhZ2UiLCJ0cmFuc2xhdGVkVGV4dCIsInRyYW5zbGF0aW9uRXJyb3IiLCJzZXNzaW9uIiwiY29udGVudElkIiwiaW5zZXJ0IiwiX2tleSIsInVzZXJJZCIsInNhdmVkQ29udGVudCIsInVwZGF0ZUNvbnRlbnQiLCJFcnJvciIsInVwZGF0ZWRDb250ZW50Iiwic2VhcmNoQ29udGVudCIsImNvbnRlbnRMaXN0Iiwic29ydCIsImRpcmVjdGlvbiIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBRXJFLFNBQVFDLGtCQUFrQixFQUFFQyxpQkFBaUIsUUFBTyxnQ0FBZ0M7QUFDcEYsU0FBUUMsTUFBTSxRQUFPLGVB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
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcblxuaW1wb3J0IHtwYXJzZUNvbnRlbnRGcm9tRGIsIHBhcnNlQ29udGVudElucHV0fSBmcm9tICcuLi9hZGFwdGVycy9jb250ZW50QWRhcHRlci5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7dHJhbnNsYXRlVGV4dH0gZnJvbSAnLi4vdXRpbHMvZ29vZ2xlVHJhbnNsYXRlLmpzJztcbmltcG9ydCB7ZXh0cmFjdExhbmd1YWdlLCBpc1JlZ2lvbmFsTG9jYWxlfSBmcm9tICcuLi91dGlscy9sb2NhbGVVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGdldEl0ZW1CeSwgZ2V0TGlzdEJ5LCB1cGRhdGVJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudElucHV0VHlwZSwgQ29udGVudE9wdGlvbnMsIENvbnRlbnRUeXBlLCBMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudE9wdGlvbnMgPSAob3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgaXNBY3RpdmUgPSB0cnVlLFxuICAgIGtleSxcbiAgICBsb2NhbGVcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCxcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXk6IGtleSA/IHBhcnNlU3RyaW5nKGtleSwgMjAwKSA6IHVuZGVmaW5lZCxcbiAgICBsb2NhbGVcbiAgfTtcbn07XG5cbmNvbnN0IGJ1aWxkQ29udGVudEZpbHRlcnMgPSAob3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fSk6IEZpbHRlckdyb3VwIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qge2NhdGVnb3J5LCBpc0FjdGl2ZSwga2V5LCBsb2NhbGV9ID0gcGFyc2VDb250ZW50T3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZmlsdGVyczogYW55W10gPSBbXTtcblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAna2V5Jywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBrZXl9KTtcbiAgfVxuXG4gIGlmKGxvY2FsZSkge1xuICAgIGZpbHRlcnMucHVzaCh7ZmllbGQ6ICdsb2NhbGUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGxvY2FsZX0pO1xuICB9XG5cbiAgaWYoY2F0ZWdvcnkpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAnY2F0ZWdvcnknLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGNhdGVnb3J5fSk7XG4gIH1cblxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZmlsdGVycy5wdXNoKHtmaWVsZDogJ2lzQWN0aXZlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBpc0FjdGl2ZX0pO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcnMubGVuZ3RoID4gMCA/IHtvcGVyYXRvcjogJ0FORCcsIGZpbHRlcnN9IGFzIGFueSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGJ1aWxkQ29udGVudE11dGF0aW9uID0gKFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGUsXG4gIG9wdGlvbnM6IHtyZWFkb25seSBpbmNsdWRlSWRlbnRpdHk/OiBib29sZWFufSA9IHt9XG4pOiBQYXJ0aWFsPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgY29udGVudCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlOiBwYXJzZWRMb2NhbGVcbiAgfSA9IHBhcnNlZENvbnRlbnQ7XG4gIGNvbnN0IHtpbmNsdWRlSWRlbnRpdHkgPSBmYWxzZX0gPSBvcHRpb25zO1xuICBjb25zdCBsb2NhbGU6IExvY2FsZSA9IHBhcnNlZExvY2FsZSB8fCAnZW4nO1xuXG4gIHJldHVybiB7XG4gICAgLi4uKGluY2x1ZGVJZGVudGl0eSAmJiB7a2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsIGxvY2FsZX0pLFxuICAgIGNvbnRlbnQ6IGNvbnRlbnQgIT09IHVuZGVmaW5lZCA/IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSA6IHVuZGVmaW5lZCxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCA/IChkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkKSBhcyBzdHJpbmcgOiB1bmRlZmluZWQsXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ICE9PSB1bmRlZmluZWQgPyAoY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCkgYXMgc3RyaW5nIDogdW5kZWZpbmVkLFxuICAgIGlzQWN0aXZlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuKTogUHJvbWlzZTxDb250ZW50VHlwZSB8IG51bGw+ID0+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGdldEl0ZW1CeTxDb250ZW50VHlwZT4oY29udGV4dCwgJ2NvbnRlbnQnLCBidWlsZENvbnRlbnRGaWx0ZXJzKHtrZXksIGxvY2FsZSwgaXNBY3RpdmU6IHRydWV9KSk7XG4gIHJldHVybiBjb250ZW50ID8gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50V2l0aEZhbGxiYWNrID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBrZXk6IHN0cmluZyxcbiAgZmFsbGJhY2tDb250ZW50OiBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgYXBwTG9jYWxlID0gKENvbmZpZy5nZXQoJ2FwcC5sb2NhbGUnKSB8fCAnZW4nKSBhcyBMb2NhbGU7XG5cbiAgdHJ5IHtcbiAgICBsZXQgY29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBsb2NhbGUpO1xuXG4gICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBpZihpc1JlZ2lvbmFsTG9jYWxlKGxvY2FsZSkpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKGxvY2FsZSk7XG4gICAgICBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxhbmd1YWdlIGFzIExvY2FsZSk7XG5cbiAgICAgIGlmKGNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQuY29udGVudCxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBFeHRyYWN0ZWQgZnJvbSAke2xhbmd1YWdlfWBcbiAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBleHRyYWN0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKGxvY2FsZSA9PT0gYXBwTG9jYWxlKSB7XG4gICAgICBpZihmYWxsYmFja0NvbnRlbnQpIHtcbiAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGZhbGxiYWNrIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbGV0IHNvdXJjZUNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgYXBwTG9jYWxlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0OiBzdHJpbmc7XG5cbiAgICAgIGlmKHNvdXJjZUNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUoYXBwTG9jYWxlKSkge1xuICAgICAgICAgIGNvbnN0IGFwcExhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSk7XG4gICAgICAgICAgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMYW5ndWFnZSBhcyBMb2NhbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBzb3VyY2VDb250ZW50LmNvbnRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZihmYWxsYmFja0NvbnRlbnQpIHtcbiAgICAgICAgICBzb3VyY2VUZXh0ID0gZmFsbGJhY2tDb250ZW50O1xuXG4gICAgICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjb250ZW50OiBmYWxsYmFja0NvbnRlbnQsXG4gICAgICAgICAgICBsb2NhbGU6IGFwcExvY2FsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXV0by1nZW5lcmF0ZWQgZnJvbSBmYWxsYmFjaydcbiAgICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgYXMgZGVmYXVsdCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmFuc2xhdGVkVGV4dCA9IGF3YWl0IHRyYW5zbGF0ZVRleHQoc291cmNlVGV4dCwgZXh0cmFjdExhbmd1YWdlKGxvY2FsZSksIGV4dHJhY3RMYW5ndWFnZShhcHBMb2NhbGUpKTtcblxuICAgICAgYWRkQ29udGVudChjb250ZXh0LCB7XG4gICAgICAgIGtleSxcbiAgICAgICAgY29udGVudDogdHJhbnNsYXRlZFRleHQsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBdXRvLXRyYW5zbGF0ZWQgZnJvbSAke2FwcExvY2FsZX1gXG4gICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB0cmFuc2xhdGVkIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdHJhbnNsYXRlZFRleHQ7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUcmFuc2xhdGlvbiBlcnJvcjonLCB0cmFuc2xhdGlvbkVycm9yKTtcblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY29udGVudCBmcm9tIGRhdGFiYXNlOicsIGVycm9yKTtcbiAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZENvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZVxuKTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbn0gPSBjb250ZXh0O1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGNvbnRlbnQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXNBY3RpdmUsXG4gICAga2V5LFxuICAgIGxvY2FsZTogcGFyc2VkTG9jYWxlXG4gIH0gPSBwYXJzZWRDb250ZW50O1xuICBjb25zdCBsb2NhbGU6IExvY2FsZSA9IHBhcnNlZExvY2FsZSB8fCAnZW4nO1xuICBjb25zdCBjb250ZW50SWQgPSBjcmVhdGVIYXNoKGBjb250ZW50LSR7a2V5fS0ke2xvY2FsZX1gKTtcbiAgY29uc3QgaW5zZXJ0OiBDb250ZW50VHlwZSA9IHtcbiAgICBfa2V5OiBjb250ZW50SWQsXG4gICAga2V5OiBwYXJzZVN0cmluZyhrZXksIDIwMCksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSxcbiAgICAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7ZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWR9KSxcbiAgICAuLi4oY2F0ZWdvcnkgIT09IHVuZGVmaW5lZCAmJiB7Y2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWR9KSxcbiAgICAuLi4oaXNBY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7aXNBY3RpdmV9KSxcbiAgICB1c2VySWQ6IHNlc3Npb24/LnVzZXJJZCBhcyBzdHJpbmdcbiAgfTtcblxuICBjb25zdCBzYXZlZENvbnRlbnQgPSBhd2FpdCBhZGRJdGVtPENvbnRlbnRUeXBlPihjb250ZXh0LCAnY29udGVudCcsIGluc2VydCk7XG4gIHJldHVybiBwYXJzZUNvbnRlbnRGcm9tRGIoc2F2ZWRDb250ZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGVcbik6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtjb250ZW50SWR9ID0gcGFyc2VkQ29udGVudDtcblxuICBpZighY29udGVudElkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb250ZW50IElEIGlzIHJlcXVpcmVkIGZvciB1cGRhdGUnKTtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRDb250ZW50ID0gYXdhaXQgdXBkYXRlSXRlbTxDb250ZW50VHlwZT4oY29udGV4dCwgJ2NvbnRlbnQnLCBjb250ZW50SWQsIGJ1aWxkQ29udGVudE11dGF0aW9uKGNvbnRlbnRJbnB1dCkpO1xuXG4gIGlmKCF1cGRhdGVkQ29udGVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCBub3QgZm91bmQgb3IgYWNjZXNzIGRlbmllZCcpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlQ29udGVudEZyb21EYih1cGRhdGVkQ29udGVudCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDb250ZW50VHlwZVtdPiA9PiB7XG4gIGNvbnN0IGNvbnRlbnRMaXN0ID0gYXdhaXQgZ2V0TGlzdEJ5PENvbnRlbnRUeXBlPihcbiAgICBjb250ZXh0LFxuICAgICdjb250ZW50JyxcbiAgICBidWlsZENvbnRlbnRGaWx0ZXJzKG9wdGlvbnMpLFxuICAgIHtzb3J0OiBbe2ZpZWxkOiAna2V5JywgZGlyZWN0aW9uOiAnQVNDJ30sIHtmaWVsZDogJ2xvY2FsZScsIGRpcmVjdGlvbjogJ0FTQyd9XX1cbiAgKTtcblxuICByZXR1cm4gY29udGVudExpc3QubWFwKChjb250ZW50KSA9PiBwYXJzZUNvbnRlbnRGcm9tRGIoY29udGVudCkpO1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VTdHJpbmciLCJwYXJzZUNvbnRlbnRGcm9tRGIiLCJwYXJzZUNvbnRlbnRJbnB1dCIsIkNvbmZpZyIsInRyYW5zbGF0ZVRleHQiLCJleHRyYWN0TGFuZ3VhZ2UiLCJpc1JlZ2lvbmFsTG9jYWxlIiwiYWRkSXRlbSIsImdldEl0ZW1CeSIsImdldExpc3RCeSIsInVwZGF0ZUl0ZW0iLCJwYXJzZUNvbnRlbnRPcHRpb25zIiwib3B0aW9ucyIsImNhdGVnb3J5IiwiaXNBY3RpdmUiLCJrZXkiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJidWlsZENvbnRlbnRGaWx0ZXJzIiwiZmlsdGVycyIsInB1c2giLCJmaWVsZCIsIm9wZXJhdG9yIiwidmFsdWUiLCJsZW5ndGgiLCJidWlsZENvbnRlbnRNdXRhdGlvbiIsImNvbnRlbnRJbnB1dCIsInBhcnNlZENvbnRlbnQiLCJjb250ZW50IiwiZGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbGUiLCJpbmNsdWRlSWRlbnRpdHkiLCJnZXRDb250ZW50IiwiY29udGV4dCIsImdldENvbnRlbnRXaXRoRmFsbGJhY2siLCJmYWxsYmFja0NvbnRlbnQiLCJhcHBMb2NhbGUiLCJnZXQiLCJsYW5ndWFnZSIsImFkZENvbnRlbnQiLCJjYXRjaCIsInNhdmVFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInNvdXJjZUNvbnRlbnQiLCJzb3VyY2VUZXh0IiwiYXBwTGFuZ3VhZ2UiLCJ0cmFuc2xhdGVkVGV4dCIsInRyYW5zbGF0aW9uRXJyb3IiLCJzZXNzaW9uIiwiY29udGVudElkIiwiaW5zZXJ0IiwiX2tleSIsInVzZXJJZCIsInNhdmVkQ29udGVudCIsInVwZGF0ZUNvbnRlbnQiLCJFcnJvciIsInVwZGF0ZWRDb250ZW50Iiwic2VhcmNoQ29udGVudCIsImNvbnRlbnRMaXN0Iiwic29ydCIsImRpcmVjdGlvbiIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBRXJFLFNBQVFDLGtCQUFrQixFQUFFQyxpQkFBaUIsUUFBTyxnQ0FBZ0M7QUFDcEYsU0FBUUMsTUFBTSxRQUFP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
|
|
@@ -46,6 +46,9 @@ export interface ContentGenerationInput {
|
|
|
46
46
|
messages?: ContentGenerationMessage[];
|
|
47
47
|
modality?: 'image' | 'text';
|
|
48
48
|
model?: string;
|
|
49
|
+
outputTextFilter?: 'nonblank';
|
|
50
|
+
outputTextMode?: 'preserve' | 'trim';
|
|
51
|
+
outputTextSeparator?: '' | '\n';
|
|
49
52
|
prompt?: string;
|
|
50
53
|
provider: 'claude' | 'gemini' | 'grok' | 'ollama' | 'openai';
|
|
51
54
|
reasoningEffort?: ContentGenerationReasoningEffort;
|
|
@@ -53,6 +56,7 @@ export interface ContentGenerationInput {
|
|
|
53
56
|
search?: boolean;
|
|
54
57
|
system?: string;
|
|
55
58
|
temperature?: number;
|
|
59
|
+
thinkingLevel?: 'minimal' | 'low' | 'medium' | 'high';
|
|
56
60
|
timeoutMs?: number;
|
|
57
61
|
topP?: number;
|
|
58
62
|
}
|
|
@@ -31,6 +31,40 @@ const validMessageContent = (message)=>{
|
|
|
31
31
|
].includes(input.provider)) {
|
|
32
32
|
throw new ContentGenerationRejectedError('A supported provider is required.');
|
|
33
33
|
}
|
|
34
|
+
if (input.outputTextMode !== undefined && (![
|
|
35
|
+
'claude',
|
|
36
|
+
'gemini',
|
|
37
|
+
'openai',
|
|
38
|
+
'grok'
|
|
39
|
+
].includes(input.provider) || input.modality === 'image' || ![
|
|
40
|
+
'preserve',
|
|
41
|
+
'trim'
|
|
42
|
+
].includes(input.outputTextMode))) {
|
|
43
|
+
throw new ContentGenerationRejectedError('outputTextMode requires a Claude, Gemini, OpenAI or Grok text request and preserve or trim.');
|
|
44
|
+
}
|
|
45
|
+
if (input.outputTextSeparator !== undefined && (input.outputTextMode !== 'preserve' || ![
|
|
46
|
+
'claude',
|
|
47
|
+
'gemini'
|
|
48
|
+
].includes(input.provider) || ![
|
|
49
|
+
'',
|
|
50
|
+
'\n'
|
|
51
|
+
].includes(input.outputTextSeparator))) {
|
|
52
|
+
throw new ContentGenerationRejectedError('outputTextSeparator requires Claude or Gemini preserve mode and an empty or newline separator.');
|
|
53
|
+
}
|
|
54
|
+
if (input.outputTextFilter !== undefined && (input.outputTextFilter !== 'nonblank' || input.outputTextMode !== 'preserve' || ![
|
|
55
|
+
'claude',
|
|
56
|
+
'gemini'
|
|
57
|
+
].includes(input.provider))) {
|
|
58
|
+
throw new ContentGenerationRejectedError('outputTextFilter requires Claude or Gemini preserve mode and nonblank.');
|
|
59
|
+
}
|
|
60
|
+
if (input.thinkingLevel !== undefined && (input.provider !== 'gemini' || input.modality === 'image' || ![
|
|
61
|
+
'minimal',
|
|
62
|
+
'low',
|
|
63
|
+
'medium',
|
|
64
|
+
'high'
|
|
65
|
+
].includes(input.thinkingLevel))) {
|
|
66
|
+
throw new ContentGenerationRejectedError('thinkingLevel requires a Gemini text request and a supported level.');
|
|
67
|
+
}
|
|
34
68
|
if (input.messages !== undefined) {
|
|
35
69
|
if (input.prompt !== undefined || !Array.isArray(input.messages) || !input.messages.length || input.messages.some((message)=>!message || ![
|
|
36
70
|
'assistant',
|
|
@@ -43,12 +77,18 @@ const validMessageContent = (message)=>{
|
|
|
43
77
|
} else if (typeof input.prompt !== 'string' || !input.prompt.trim()) {
|
|
44
78
|
throw new ContentGenerationRejectedError('A non-empty prompt is required.');
|
|
45
79
|
}
|
|
46
|
-
if (input.provider !== 'openai' && (input.messages !== undefined || input.reasoningEffort !== undefined || [
|
|
80
|
+
if (input.provider !== 'openai' && (input.messages !== undefined && input.provider !== 'gemini' || input.reasoningEffort !== undefined || [
|
|
47
81
|
'claude',
|
|
48
82
|
'grok'
|
|
49
83
|
].includes(input.provider) && input.responseFormat !== undefined)) {
|
|
50
84
|
throw new ContentGenerationRejectedError('Messages and reasoning effort require OpenAI; Claude and Grok do not support response format options.');
|
|
51
85
|
}
|
|
86
|
+
if (input.provider === 'gemini' && input.messages !== undefined && (input.modality === 'image' || input.images !== undefined || input.messages.some((message)=>![
|
|
87
|
+
'user',
|
|
88
|
+
'assistant'
|
|
89
|
+
].includes(message.role) || Array.isArray(message.content) && message.content.some((part)=>part.type !== 'text')))) {
|
|
90
|
+
throw new ContentGenerationRejectedError('Gemini messages require user or assistant roles with text-only content.');
|
|
91
|
+
}
|
|
52
92
|
if (input.timeoutMs !== undefined && (!Number.isInteger(input.timeoutMs) || input.timeoutMs < 1 || input.timeoutMs > 2_147_483_647)) {
|
|
53
93
|
throw new ContentGenerationRejectedError('timeoutMs must be a positive 32-bit integer.');
|
|
54
94
|
}
|
|
@@ -130,8 +170,17 @@ const validMessageContent = (message)=>{
|
|
|
130
170
|
].includes(response.error.type || '')) {
|
|
131
171
|
throw new ContentGenerationRejectedError('Claude rejected the request. Check the model and account access.');
|
|
132
172
|
}
|
|
133
|
-
const
|
|
134
|
-
if (
|
|
173
|
+
const preserve = input.outputTextMode === 'preserve';
|
|
174
|
+
if (preserve && (!Array.isArray(response.content) || response.content.some((part)=>!part || ![
|
|
175
|
+
'text',
|
|
176
|
+
'thinking',
|
|
177
|
+
'redacted_thinking'
|
|
178
|
+
].includes(part.type || '') || part.type === 'text' && typeof part.text !== 'string'))) {
|
|
179
|
+
throw new ContentGenerationResponseError('Claude response could not be confirmed.');
|
|
180
|
+
}
|
|
181
|
+
const chunks = (response.content?.filter((part)=>part.type === 'text').map((part)=>part.text || '') || []).filter((text)=>input.outputTextFilter !== 'nonblank' || !!text.trim());
|
|
182
|
+
const text = preserve ? chunks.join(input.outputTextSeparator ?? '') : chunks.join('\n').trim();
|
|
183
|
+
if (response.error || response.type !== 'message' || response.stop_reason !== 'end_turn' || !text.trim()) {
|
|
135
184
|
throw new ContentGenerationResponseError('Claude response could not be confirmed.');
|
|
136
185
|
}
|
|
137
186
|
return {
|
|
@@ -214,13 +263,13 @@ const validMessageContent = (message)=>{
|
|
|
214
263
|
].includes(item.type))) {
|
|
215
264
|
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} returned an unsupported output item.`);
|
|
216
265
|
}
|
|
217
|
-
const text = response.output?.filter((item)=>item.type === 'message' || grok && !item.type).flatMap((item)=>item.content || []).filter((part)=>part.type === 'output_text').map((part)=>part.text || '').join('')
|
|
218
|
-
if (!text) {
|
|
266
|
+
const text = response.output?.filter((item)=>item.type === 'message' || grok && !item.type).flatMap((item)=>item.content || []).filter((part)=>part.type === 'output_text').map((part)=>part.text || '').join('') || '';
|
|
267
|
+
if (!text.trim()) {
|
|
219
268
|
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} returned empty output.`);
|
|
220
269
|
}
|
|
221
270
|
return {
|
|
222
271
|
sources: [],
|
|
223
|
-
text
|
|
272
|
+
text: input.outputTextMode === 'preserve' ? text : text.trim()
|
|
224
273
|
};
|
|
225
274
|
}
|
|
226
275
|
if (!config.geminiKey) {
|
|
@@ -242,7 +291,16 @@ const validMessageContent = (message)=>{
|
|
|
242
291
|
throw new ContentGenerationRejectedError('Invalid Gemini model configuration.');
|
|
243
292
|
}
|
|
244
293
|
const response = await post(`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent`, {
|
|
245
|
-
contents:
|
|
294
|
+
contents: input.messages?.map((message)=>({
|
|
295
|
+
parts: typeof message.content === 'string' ? [
|
|
296
|
+
{
|
|
297
|
+
text: message.content
|
|
298
|
+
}
|
|
299
|
+
] : message.content.map((part)=>({
|
|
300
|
+
text: part.text
|
|
301
|
+
})),
|
|
302
|
+
role: message.role === 'assistant' ? 'model' : 'user'
|
|
303
|
+
})) ?? [
|
|
246
304
|
{
|
|
247
305
|
parts,
|
|
248
306
|
role: 'user'
|
|
@@ -277,6 +335,11 @@ const validMessageContent = (message)=>{
|
|
|
277
335
|
} : {},
|
|
278
336
|
...input.topP !== undefined ? {
|
|
279
337
|
topP: input.topP
|
|
338
|
+
} : {},
|
|
339
|
+
...input.thinkingLevel !== undefined ? {
|
|
340
|
+
thinkingConfig: {
|
|
341
|
+
thinkingLevel: input.thinkingLevel
|
|
342
|
+
}
|
|
280
343
|
} : {}
|
|
281
344
|
},
|
|
282
345
|
...input.search ? {
|
|
@@ -308,6 +371,14 @@ const validMessageContent = (message)=>{
|
|
|
308
371
|
if (candidate.finishReason !== 'STOP') {
|
|
309
372
|
throw new ContentGenerationResponseError('Gemini response could not be confirmed: generation did not complete.');
|
|
310
373
|
}
|
|
374
|
+
const preserve = input.outputTextMode === 'preserve';
|
|
375
|
+
if (preserve && (!Array.isArray(candidate.content?.parts) || candidate.content.parts.some((part)=>!part || part.thought !== undefined && typeof part.thought !== 'boolean' || Object.keys(part).some((key)=>![
|
|
376
|
+
'text',
|
|
377
|
+
'thought',
|
|
378
|
+
'thoughtSignature'
|
|
379
|
+
].includes(key)) || !part.thought && typeof part.text !== 'string'))) {
|
|
380
|
+
throw new ContentGenerationResponseError('Gemini response text parts could not be confirmed.');
|
|
381
|
+
}
|
|
311
382
|
const output = (candidate.content?.parts || []).filter((part)=>!part.thought);
|
|
312
383
|
const inline = output.find((part)=>part.inlineData)?.inlineData;
|
|
313
384
|
let image;
|
|
@@ -324,8 +395,9 @@ const validMessageContent = (message)=>{
|
|
|
324
395
|
mime: inline.mimeType
|
|
325
396
|
};
|
|
326
397
|
}
|
|
327
|
-
const
|
|
328
|
-
|
|
398
|
+
const chunks = output.map((part)=>part.text || '').filter((text)=>input.outputTextFilter !== 'nonblank' || !!text.trim());
|
|
399
|
+
const text = preserve ? chunks.join(input.outputTextSeparator ?? '') : chunks.join('\n').trim();
|
|
400
|
+
if (input.modality === 'image' ? !image : !text.trim()) {
|
|
329
401
|
throw new ContentGenerationResponseError('The requested output was not returned.');
|
|
330
402
|
}
|
|
331
403
|
const sources = (candidate.groundingMetadata?.groundingChunks || []).flatMap(({ web })=>{
|
|
@@ -349,4 +421,4 @@ const validMessageContent = (message)=>{
|
|
|
349
421
|
};
|
|
350
422
|
};
|
|
351
423
|
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBncm9rS2V5Pzogc3RyaW5nO1xuICBncm9rTW9kZWw/OiBzdHJpbmc7XG4gIG9sbGFtYT86IHtlbmRwb2ludDogc3RyaW5nOyBwcm90b2NvbDogJ2dlbmVyYXRlJyB8ICdjaGF0JyB8ICdvcGVuYWktY2hhdCd9O1xuICBvcGVuYWlLZXk/OiBzdHJpbmc7XG4gIG9wZW5haU1vZGVsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25QYXJ0ID0ge3RleHQ6IHN0cmluZzsgdHlwZTogJ3RleHQnfSB8IHtcbiAgZGV0YWlsPzogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdyc7XG4gIHR5cGU6ICdpbWFnZSc7XG4gIHVybDogc3RyaW5nO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25NZXNzYWdlIHtcbiAgY29udGVudDogc3RyaW5nIHwgQ29udGVudEdlbmVyYXRpb25QYXJ0W107XG4gIHJvbGU6ICdhc3Npc3RhbnQnIHwgJ2RldmVsb3BlcicgfCAnc3lzdGVtJyB8ICd1c2VyJztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQgPSB7dHlwZTogJ2pzb25fb2JqZWN0JyB8ICd0ZXh0J30gfCB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHN0cmljdD86IGJvb2xlYW47XG4gIHR5cGU6ICdqc29uX3NjaGVtYSc7XG59O1xuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25SZWFzb25pbmdFZmZvcnQgPSAnbm9uZScgfCAnbWluaW1hbCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ3hoaWdoJyB8ICdtYXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQge1xuICBhc3BlY3RSYXRpbz86IHN0cmluZztcbiAgaW1hZ2VzPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6IHN0cmluZ31bXTtcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICBtZXNzYWdlcz86IENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZVtdO1xuICBtb2RhbGl0eT86ICdpbWFnZScgfCAndGV4dCc7XG4gIG1vZGVsPzogc3RyaW5nO1xuICBwcm9tcHQ/OiBzdHJpbmc7XG4gIHByb3ZpZGVyOiAnY2xhdWRlJyB8ICdnZW1pbmknIHwgJ2dyb2snIHwgJ29sbGFtYScgfCAnb3BlbmFpJztcbiAgcmVhc29uaW5nRWZmb3J0PzogQ29udGVudEdlbmVyYXRpb25SZWFzb25pbmdFZmZvcnQ7XG4gIHJlc3BvbnNlRm9ybWF0PzogQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUZvcm1hdDtcbiAgc2VhcmNoPzogYm9vbGVhbjtcbiAgc3lzdGVtPzogc3RyaW5nO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICB0b3BQPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRDb250ZW50IHtcbiAgaW1hZ2U/OiB7Ynl0ZXM6IEJ1ZmZlcjsgbWltZTogJ2ltYWdlL2pwZWcnIHwgJ2ltYWdlL3BuZyd9O1xuICBzZWFyY2hTdWdnZXN0aW9uc0h0bWw/OiBzdHJpbmc7XG4gIHNvdXJjZXM6IHt0aXRsZTogc3RyaW5nOyB1cmw6IHN0cmluZ31bXTtcbiAgdGV4dDogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEdlbWluaVBhcnQge2lubGluZURhdGE/OiB7ZGF0YTogc3RyaW5nOyBtaW1lVHlwZTogc3RyaW5nfTsgdGV4dD86IHN0cmluZzsgdGhvdWdodD86IGJvb2xlYW59XG5pbnRlcmZhY2UgR2VtaW5pUmVzcG9uc2Uge1xuICBjYW5kaWRhdGVzPzoge1xuICAgIGNvbnRlbnQ/OiB7cGFydHM/OiBHZW1pbmlQYXJ0W119O1xuICAgIGZpbmlzaFJlYXNvbj86IHN0cmluZztcbiAgICBncm91bmRpbmdNZXRhZGF0YT86IHtcbiAgICAgIGdyb3VuZGluZ0NodW5rcz86IHt3ZWI/OiB7dGl0bGU/OiBzdHJpbmc7IHVyaT86IHN0cmluZ319W107XG4gICAgICBzZWFyY2hFbnRyeVBvaW50Pzoge3JlbmRlcmVkQ29udGVudD86IHN0cmluZ307XG4gICAgfTtcbiAgfVtdO1xuICBlcnJvcj86IHtjb2RlPzogbnVtYmVyfTtcbiAgcHJvbXB0RmVlZGJhY2s/OiB7YmxvY2tSZWFzb24/OiBzdHJpbmd9O1xufVxuXG5jb25zdCB2YWxpZE1lc3NhZ2VDb250ZW50ID0gKG1lc3NhZ2U6IENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZSk6IGJvb2xlYW4gPT4ge1xuICBpZih0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAhIW1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KSAmJiBtZXNzYWdlLmNvbnRlbnQubGVuZ3RoID4gMCAmJiBtZXNzYWdlLmNvbnRlbnQuZXZlcnkoKHBhcnQpID0+IHtcbiAgICBpZighcGFydCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZihwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0LnRleHQgPT09ICdzdHJpbmcnICYmICEhcGFydC50ZXh0LnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnQudHlwZSA9PT0gJ2ltYWdlJyAmJiBtZXNzYWdlLnJvbGUgPT09ICd1c2VyJyAmJiB0eXBlb2YgcGFydC51cmwgPT09ICdzdHJpbmcnXG4gICAgICAmJiAvXihodHRwcz86XFwvXFwvW15cXHNdK3xkYXRhOmltYWdlXFwvKHBuZ3xqcGVnfHdlYnB8Z2lmKTtiYXNlNjQsW0EtWmEtejAtOSsvXSs9ezAsMn0pJC8udGVzdChwYXJ0LnVybClcbiAgICAgICYmIChwYXJ0LmRldGFpbCA9PT0gdW5kZWZpbmVkIHx8IFsnYXV0bycsICdoaWdoJywgJ2xvdyddLmluY2x1ZGVzKHBhcnQuZGV0YWlsKSk7XG4gIH0pO1xufTtcblxuLyoqIFNpbmdsZSBzdWJtaXNzaW9uIHRocm91Z2ggUmlwLUh1bnRlcjsgY2FsbGVycyBvd24gZHVyYWJsZSBqb2JzIGFuZCByZWNvbmNpbGlhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUNvbnRlbnQgPSBhc3luYyAoXG4gIGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LFxuICBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnID0gQ29uZmlnLmdldDxDb250ZW50R2VuZXJhdGlvbkNvbmZpZz4oJ2NvbnRlbnRHZW5lcmF0aW9uJykgfHwge31cbik6IFByb21pc2U8R2VuZXJhdGVkQ29udGVudD4gPT4ge1xuICBpZighWydjbGF1ZGUnLCAnZ2VtaW5pJywgJ2dyb2snLCAnb2xsYW1hJywgJ29wZW5haSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egc3VwcG9ydGVkIHByb3ZpZGVyIGlzIHJlcXVpcmVkLicpO1xuICB9XG4gIGlmKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZihpbnB1dC5wcm9tcHQgIT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShpbnB1dC5tZXNzYWdlcykgfHwgIWlucHV0Lm1lc3NhZ2VzLmxlbmd0aFxuICAgICAgfHwgaW5wdXQubWVzc2FnZXMuc29tZSgobWVzc2FnZSkgPT5cbiAgICAgICAgIW1lc3NhZ2UgfHwgIVsnYXNzaXN0YW50JywgJ2RldmVsb3BlcicsICdzeXN0ZW0nLCAndXNlciddLmluY2x1ZGVzKG1lc3NhZ2Uucm9sZSkgfHwgIXZhbGlkTWVzc2FnZUNvbnRlbnQobWVzc2FnZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdTdXBwbHkgZWl0aGVyIGEgbm9uLWVtcHR5IHByb21wdCBvciBub24tZW1wdHkgdGV4dCBtZXNzYWdlcyB3aXRoIHN1cHBvcnRlZCByb2xlcy4nKTtcbiAgICB9XG4gIH0gZWxzZSBpZih0eXBlb2YgaW5wdXQucHJvbXB0ICE9PSAnc3RyaW5nJyB8fCAhaW5wdXQucHJvbXB0LnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egbm9uLWVtcHR5IHByb21wdCBpcyByZXF1aXJlZC4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ29wZW5haSdcbiAgICAmJiAoaW5wdXQubWVzc2FnZXMgIT09IHVuZGVmaW5lZCB8fCBpbnB1dC5yZWFzb25pbmdFZmZvcnQgIT09IHVuZGVmaW5lZFxuICAgICAgfHwgKFsnY2xhdWRlJywgJ2dyb2snXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgJiYgaW5wdXQucmVzcG9uc2VGb3JtYXQgIT09IHVuZGVmaW5lZCkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcihcbiAgICAgICdNZXNzYWdlcyBhbmQgcmVhc29uaW5nIGVmZm9ydCByZXF1aXJlIE9wZW5BSTsgQ2xhdWRlIGFuZCBHcm9rIGRvIG5vdCBzdXBwb3J0IHJlc3BvbnNlIGZvcm1hdCBvcHRpb25zLidcbiAgICApO1xuICB9XG4gIGlmKGlucHV0LnRpbWVvdXRNcyAhPT0gdW5kZWZpbmVkXG4gICAgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0LnRpbWVvdXRNcykgfHwgaW5wdXQudGltZW91dE1zIDwgMSB8fCBpbnB1dC50aW1lb3V0TXMgPiAyXzE0N180ODNfNjQ3KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RpbWVvdXRNcyBtdXN0IGJlIGEgcG9zaXRpdmUgMzItYml0IGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgJiYgIVsnbm9uZScsICdtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICd4aGlnaCcsICdtYXgnXS5pbmNsdWRlcyhpbnB1dC5yZWFzb25pbmdFZmZvcnQpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVW5zdXBwb3J0ZWQgcmVhc29uaW5nIGVmZm9ydC4nKTtcbiAgfVxuICBjb25zdCBmb3JtYXQgPSBpbnB1dC5yZXNwb25zZUZvcm1hdDtcbiAgaWYoZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKCFmb3JtYXQgfHwgIVsndGV4dCcsICdqc29uX29iamVjdCcsICdqc29uX3NjaGVtYSddLmluY2x1ZGVzKGZvcm1hdC50eXBlKSB8fCAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgJiYgKFxuICAgIHR5cGVvZiBmb3JtYXQubmFtZSAhPT0gJ3N0cmluZycgfHwgIS9eW2EtekEtWjAtOV8tXXsxLDY0fSQvLnRlc3QoZm9ybWF0Lm5hbWUpIHx8ICFmb3JtYXQuc2NoZW1hIHx8IHR5cGVvZiBmb3JtYXQuc2NoZW1hICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZvcm1hdC5zY2hlbWEpXG4gICAgfHwgKGZvcm1hdC5zdHJpY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZm9ybWF0LnN0cmljdCAhPT0gJ2Jvb2xlYW4nKVxuICApKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdC4gSlNPTiBzY2hlbWFzIHJlcXVpcmUgYSBuYW1lIGFuZCBzY2hlbWEgb2JqZWN0LicpO1xuICB9XG4gIGlmKFsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSAmJiBmb3JtYXQgIT09IHVuZGVmaW5lZCAmJiAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBzdXBwb3J0cyB0ZXh0IG9yIGpzb25fb2JqZWN0IGZvciB0ZXh0IGdlbmVyYXRpb24gb25seS4nKTtcbiAgfVxuICBpZihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgJiYgKCFbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgIU51bWJlci5pc0Zpbml0ZShpbnB1dC50b3BQKSB8fCBpbnB1dC50b3BQIDwgMCB8fCBpbnB1dC50b3BQID4gMSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0b3BQIHJlcXVpcmVzIGEgR2VtaW5pIG9yIE9sbGFtYSB0ZXh0IHJlcXVlc3QgYW5kIGEgZmluaXRlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4nKTtcbiAgfVxuICBpZihpbnB1dC50ZW1wZXJhdHVyZSAhPT0gdW5kZWZpbmVkICYmICghWydnZW1pbmknLCAnb2xsYW1hJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpIHx8IGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnIHx8ICFOdW1iZXIuaXNGaW5pdGUoaW5wdXQudGVtcGVyYXR1cmUpIHx8IGlucHV0LnRlbXBlcmF0dXJlIDwgMCB8fCAoaW5wdXQucHJvdmlkZXIgPT09ICdnZW1pbmknICYmIGlucHV0LnRlbXBlcmF0dXJlID4gMikpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcigndGVtcGVyYXR1cmUgcmVxdWlyZXMgYSBub25uZWdhdGl2ZSBmaW5pdGUgdmFsdWUgZm9yIE9sbGFtYSB0ZXh0IG9yIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAyIGZvciBHZW1pbmkgdGV4dC4nKTtcbiAgfVxuICBpZihpbnB1dC5tYXhUb2tlbnMgIT09IHVuZGVmaW5lZCAmJiAoIU51bWJlci5pc0ludGVnZXIoaW5wdXQubWF4VG9rZW5zKSB8fCBpbnB1dC5tYXhUb2tlbnMgPCAxKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ21heFRva2VucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ2dlbWluaSdcbiAgICAmJiAoKGlucHV0LmltYWdlcz8ubGVuZ3RoICYmICFbJ2dyb2snLCAnb2xsYW1hJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpKSB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCBpbnB1dC5zZWFyY2gpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBvcGVyYXRpb24gc3VwcG9ydHMgdGV4dCBpbnB1dCBhbmQgb3V0cHV0IG9ubHkuJyk7XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdvbGxhbWEnKSByZXR1cm4gZ2VuZXJhdGVPbGxhbWFDb250ZW50KGlucHV0LCBjb25maWcpO1xuICBjb25zdCB7cHJvbXB0LCBpbWFnZXMgPSBbXX0gPSBpbnB1dDtcbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdjbGF1ZGUnKSB7XG4gICAgaWYoIWNvbmZpZy5jbGF1ZGVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0NsYXVkZSBpcyBub3QgY29uZmlndXJlZCBvbiB0aGlzIHNlcnZlci4nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KCdodHRwczovL2FwaS5hbnRocm9waWMuY29tL3YxL21lc3NhZ2VzJywge1xuICAgICAgbWF4X3Rva2VuczogaW5wdXQubWF4VG9rZW5zID8/IDQwOTYsXG4gICAgICBtZXNzYWdlczogW3tjb250ZW50OiBwcm9tcHQsIHJvbGU6ICd1c2VyJ31dLFxuICAgICAgbW9kZWw6IGlucHV0Lm1vZGVsIHx8IGNvbmZpZy5jbGF1ZGVNb2RlbCB8fCAnY2xhdWRlLXNvbm5ldC01JyxcbiAgICAgIHN5c3RlbTogaW5wdXQuc3lzdGVtXG4gICAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeydhbnRocm9waWMtdmVyc2lvbic6ICcyMDIzLTA2LTAxJywgJ3gtYXBpLWtleSc6IGNvbmZpZy5jbGF1ZGVLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyB7XG4gICAgICBjb250ZW50Pzoge3RleHQ/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9W107XG4gICAgICBlcnJvcj86IHt0eXBlPzogc3RyaW5nfTtcbiAgICAgIHN0b3BfcmVhc29uPzogc3RyaW5nO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICB9O1xuICAgIGlmKHJlc3BvbnNlLmVycm9yICYmIFsnYXV0aGVudGljYXRpb25fZXJyb3InLCAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJywgJ25vdF9mb3VuZF9lcnJvcicsICdwZXJtaXNzaW9uX2Vycm9yJ10uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IudHlwZSB8fCAnJykpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0NsYXVkZSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIG1vZGVsIGFuZCBhY2NvdW50IGFjY2Vzcy4nKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IHJlc3BvbnNlLmNvbnRlbnQ/LmZpbHRlcigocGFydCkgPT4gcGFydC50eXBlID09PSAndGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCdcXG4nKS50cmltKCk7XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgfHwgcmVzcG9uc2UudHlwZSAhPT0gJ21lc3NhZ2UnIHx8IHJlc3BvbnNlLnN0b3BfcmVhc29uICE9PSAnZW5kX3R1cm4nIHx8ICF0ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdDbGF1ZGUgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtzb3VyY2VzOiBbXSwgdGV4dH07XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdvcGVuYWknIHx8IGlucHV0LnByb3ZpZGVyID09PSAnZ3JvaycpIHtcbiAgICBjb25zdCBncm9rID0gaW5wdXQucHJvdmlkZXIgPT09ICdncm9rJztcbiAgICBjb25zdCBrZXkgPSBncm9rID8gY29uZmlnLmdyb2tLZXkgOiBjb25maWcub3BlbmFpS2V5O1xuICAgIGlmKCFrZXkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSBpcyBub3QgY29uZmlndXJlZCBvbiB0aGlzIHNlcnZlci5gKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KGdyb2sgPyAnaHR0cHM6Ly9hcGkueC5haS92MS9yZXNwb25zZXMnIDogJ2h0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEvcmVzcG9uc2VzJywge1xuICAgICAgaW5wdXQ6IGdyb2sgJiYgaW1hZ2VzLmxlbmd0aCA/IFt7Y29udGVudDogW3t0ZXh0OiBwcm9tcHQsIHR5cGU6ICdpbnB1dF90ZXh0J30sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2ltYWdlX3VybDogYGRhdGE6JHtpbWFnZS5taW1lfTtiYXNlNjQsJHtpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0Jyl9YCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pKV0sIHJvbGU6ICd1c2VyJ31dIDogaW5wdXQubWVzc2FnZXM/Lm1hcCgobWVzc2FnZSkgPT4gKHtjb250ZW50OiB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UuY29udGVudCA6IG1lc3NhZ2UuY29udGVudC5tYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09ICd0ZXh0J1xuICAgICAgICA/IHt0ZXh0OiBwYXJ0LnRleHQsIHR5cGU6ICdpbnB1dF90ZXh0J30gOiB7ZGV0YWlsOiBwYXJ0LmRldGFpbCA/PyAnYXV0bycsIGltYWdlX3VybDogcGFydC51cmwsIHR5cGU6ICdpbnB1dF9pbWFnZSd9KSksIHJvbGU6IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScgPyAnZGV2ZWxvcGVyJyA6IG1lc3NhZ2Uucm9sZX0pKSA/PyBwcm9tcHQsXG4gICAgICBpbnN0cnVjdGlvbnM6IGlucHV0LnN5c3RlbSxcbiAgICAgIG1heF9vdXRwdXRfdG9rZW5zOiBpbnB1dC5tYXhUb2tlbnMgPz8gNDA5NixcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCAoZ3JvayA/IGNvbmZpZy5ncm9rTW9kZWwgfHwgJ2dyb2stNC43JyA6IGNvbmZpZy5vcGVuYWlNb2RlbCB8fCAnZ3B0LTYtYXN0cmEnKSxcbiAgICAgIC4uLihpbnB1dC5yZWFzb25pbmdFZmZvcnQgPyB7cmVhc29uaW5nOiB7ZWZmb3J0OiBpbnB1dC5yZWFzb25pbmdFZmZvcnR9fSA6IHt9KSxcbiAgICAgIHN0b3JlOiBmYWxzZSxcbiAgICAgIC4uLihmb3JtYXQgPyB7dGV4dDoge2Zvcm1hdH19IDoge30pLFxuICAgICAgLi4uKCFncm9rID8ge3RydW5jYXRpb246ICdkaXNhYmxlZCd9IDoge30pXG4gICAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoe0F1dGhvcml6YXRpb246IGBCZWFyZXIgJHtrZXl9YH0pLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwXzAwMH0pIGFzIHtcbiAgICAgIGVycm9yPzoge2NvZGU/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9O1xuICAgICAgb3V0cHV0Pzoge2NvbnRlbnQ/OiB7dGV4dD86IHN0cmluZzsgdHlwZT86IHN0cmluZ31bXTsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWydpbnZhbGlkX3JlcXVlc3RfZXJyb3InLCAnYXV0aGVudGljYXRpb25fZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKGAke2dyb2sgPyAnR3JvaycgOiAnT3BlbkFJJ30gcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuYCk7XG4gICAgfVxuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgfHwgcmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2luY29tcGxldGUnKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS5gKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQ/LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3JlZnVzYWwnKSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSBkZWNsaW5lZCB0aGUgcmVxdWVzdC5gKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgJiYgIVsnbWVzc2FnZScsICdyZWFzb25pbmcnXS5pbmNsdWRlcyhpdGVtLnR5cGUpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG91dHB1dCBpdGVtLmApO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcmVzcG9uc2Uub3V0cHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJ21lc3NhZ2UnIHx8IChncm9rICYmICFpdGVtLnR5cGUpKS5mbGF0TWFwKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQgfHwgW10pXG4gICAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnR5cGUgPT09ICdvdXRwdXRfdGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCcnKS50cmltKCk7XG4gICAgaWYoIXRleHQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSByZXR1cm5lZCBlbXB0eSBvdXRwdXQuYCk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBbe3BhcnRzLCByb2xlOiAndXNlcid9XSxcbiAgICAuLi4oaW5wdXQuc3lzdGVtID8ge3N5c3RlbUluc3RydWN0aW9uOiB7cGFydHM6IFt7dGV4dDogaW5wdXQuc3lzdGVtfV19fSA6IHt9KSxcbiAgICBnZW5lcmF0aW9uQ29uZmlnOiBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/IHsuLi4oaW5wdXQuYXNwZWN0UmF0aW8gPyB7aW1hZ2VDb25maWc6IHthc3BlY3RSYXRpbzogaW5wdXQuYXNwZWN0UmF0aW99fSA6IHt9KSwgcmVzcG9uc2VNb2RhbGl0aWVzOiBbJ1RFWFQnLCAnSU1BR0UnXX0gOiB7XG4gICAgICBtYXhPdXRwdXRUb2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgLi4uKGZvcm1hdCA/IHtyZXNwb25zZU1pbWVUeXBlOiBmb3JtYXQudHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/ICdhcHBsaWNhdGlvbi9qc29uJyA6ICd0ZXh0L3BsYWluJ30gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLFxuICAgICAgLi4uKGlucHV0LnRvcFAgIT09IHVuZGVmaW5lZCA/IHt0b3BQOiBpbnB1dC50b3BQfSA6IHt9KVxuICAgIH0sXG4gICAgLi4uKGlucHV0LnNlYXJjaCA/IHt0b29sczogW3tnb29nbGVTZWFyY2g6IHt9fV19IDoge30pXG4gIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsneC1nb29nLWFwaS1rZXknOiBjb25maWcuZ2VtaW5pS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMgR2VtaW5pUmVzcG9uc2U7XG4gIGlmKHJlc3BvbnNlLmVycm9yICYmIFs0MDAsIDQwMSwgNDAzLCA0MDRdLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLmNvZGUgfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdHZW1pbmkgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSByZWZlcmVuY2UgZm9ybWF0IGFuZCBtb2RlbCBhY2Nlc3MuJyk7XG4gIH1cbiAgaWYocmVzcG9uc2UucHJvbXB0RmVlZGJhY2s/LmJsb2NrUmVhc29uIHx8IHJlc3BvbnNlLmVycm9yIHx8ICFyZXNwb25zZS5jYW5kaWRhdGVzPy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZC4nKTtcbiAgfVxuICBjb25zdCBjYW5kaWRhdGUgPSByZXNwb25zZS5jYW5kaWRhdGVzWzBdITtcbiAgaWYoY2FuZGlkYXRlLmZpbmlzaFJlYXNvbiAhPT0gJ1NUT1AnKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignR2VtaW5pIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS4nKTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSAoY2FuZGlkYXRlLmNvbnRlbnQ/LnBhcnRzIHx8IFtdKS5maWx0ZXIoKHBhcnQpID0+ICFwYXJ0LnRob3VnaHQpO1xuICBjb25zdCBpbmxpbmUgPSBvdXRwdXQuZmluZCgocGFydCkgPT4gcGFydC5pbmxpbmVEYXRhKT8uaW5saW5lRGF0YTtcbiAgbGV0IGltYWdlOiBHZW5lcmF0ZWRDb250ZW50WydpbWFnZSddO1xuICBpZihpbmxpbmUgJiYgWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGlubGluZS5taW1lVHlwZSkpIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKGlubGluZS5kYXRhLCAnYmFzZTY0Jyk7XG4gICAgaWYoIWJ5dGVzLmxlbmd0aCB8fCBieXRlcy5sZW5ndGggPiAyMCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdJbnZhbGlkIGltYWdlIG91dHB1dC4nKTtcbiAgICB9XG4gICAgaW1hZ2UgPSB7Ynl0ZXMsIG1pbWU6IGlubGluZS5taW1lVHlwZSBhcyAnaW1hZ2UvcG5nJyB8ICdpbWFnZS9qcGVnJ307XG4gIH1cbiAgY29uc3QgdGV4dCA9IG91dHB1dC5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykuam9pbignXFxuJykudHJpbSgpO1xuICBpZihpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/ICFpbWFnZSA6ICF0ZXh0KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignVGhlIHJlcXVlc3RlZCBvdXRwdXQgd2FzIG5vdCByZXR1cm5lZC4nKTtcbiAgfVxuICBjb25zdCBzb3VyY2VzID0gKGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uZ3JvdW5kaW5nQ2h1bmtzIHx8IFtdKS5mbGF0TWFwKCh7d2VifSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdlYj8udXJpIHx8ICcnKTtcbiAgICAgIHJldHVybiB1cmwucHJvdG9jb2wgPT09ICdodHRwczonID8gW3t0aXRsZTogd2ViPy50aXRsZSB8fCB1cmwuaG9zdG5hbWUsIHVybDogdXJsLmhyZWZ9XSA6IFtdO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbWFnZSwgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sOiBjYW5kaWRhdGUuZ3JvdW5kaW5nTWV0YWRhdGE/LnNlYXJjaEVudHJ5UG9pbnQ/LnJlbmRlcmVkQ29udGVudCwgc291cmNlcywgdGV4dFxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9sbGFtYUNvbnRlbnQiLCJDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiLCJwb3N0IiwiQ29uZmlnIiwidmFsaWRNZXNzYWdlQ29udGVudCIsIm1lc3NhZ2UiLCJjb250ZW50IiwidHJpbSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImV2ZXJ5IiwicGFydCIsInR5cGUiLCJ0ZXh0Iiwicm9sZSIsInVybCIsInRlc3QiLCJkZXRhaWwiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImdlbmVyYXRlQ29udGVudCIsImlucHV0IiwiY29uZmlnIiwiZ2V0IiwicHJvdmlkZXIiLCJtZXNzYWdlcyIsInByb21wdCIsInNvbWUiLCJyZWFzb25pbmdFZmZvcnQiLCJyZXNwb25zZUZvcm1hdCIsInRpbWVvdXRNcyIsIk51bWJlciIsImlzSW50ZWdlciIsImZvcm1hdCIsIm5hbWUiLCJzY2hlbWEiLCJzdHJpY3QiLCJtb2RhbGl0eSIsInRvcFAiLCJpc0Zpbml0ZSIsInRlbXBlcmF0dXJlIiwibWF4VG9rZW5zIiwiaW1hZ2VzIiwic2VhcmNoIiwiY2xhdWRlS2V5IiwicmVzcG9uc2UiLCJtYXhfdG9rZW5zIiwibW9kZWwiLCJjbGF1ZGVNb2RlbCIsInN5c3RlbSIsImNhY2hlIiwiaGVhZGVycyIsIkhlYWRlcnMiLCJ0aW1lb3V0IiwiZXJyb3IiLCJmaWx0ZXIiLCJtYXAiLCJqb2luIiwic3RvcF9yZWFzb24iLCJzb3VyY2VzIiwiZ3JvayIsImtleSIsImdyb2tLZXkiLCJvcGVuYWlLZXkiLCJpbWFnZSIsImltYWdlX3VybCIsIm1pbWUiLCJieXRlcyIsInRvU3RyaW5nIiwiaW5zdHJ1Y3Rpb25zIiwibWF4X291dHB1dF90b2tlbnMiLCJncm9rTW9kZWwiLCJvcGVuYWlNb2RlbCIsInJlYXNvbmluZyIsImVmZm9ydCIsInN0b3JlIiwidHJ1bmNhdGlvbiIsIkF1dGhvcml6YXRpb24iLCJzdGF0dXMiLCJvdXRwdXQiLCJpdGVtIiwiZmxhdE1hcCIsImdlbWluaUtleSIsInBhcnRzIiwiaW5saW5lRGF0YSIsImRhdGEiLCJtaW1lVHlwZSIsImdlbWluaUltYWdlTW9kZWwiLCJnZW1pbmlNb2RlbCIsImNvbnRlbnRzIiwic3lzdGVtSW5zdHJ1Y3Rpb24iLCJnZW5lcmF0aW9uQ29uZmlnIiwiYXNwZWN0UmF0aW8iLCJpbWFnZUNvbmZpZyIsInJlc3BvbnNlTW9kYWxpdGllcyIsIm1heE91dHB1dFRva2VucyIsInJlc3BvbnNlTWltZVR5cGUiLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJpbmxpbmUiLCJmaW5kIiwiQnVmZmVyIiwiZnJvbSIsImdyb3VuZGluZ01ldGFkYXRhIiwiZ3JvdW5kaW5nQ2h1bmtzIiwid2ViIiwiVVJMIiwidXJpIiwicHJvdG9jb2wiLCJ0aXRsZSIsImhvc3RuYW1lIiwiaHJlZiIsInNlYXJjaFN1Z2dlc3Rpb25zSHRtbCIsInNlYXJjaEVudHJ5UG9pbnQiLCJyZW5kZXJlZENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLHFCQUFxQixRQUFPLHdCQUF3QjtBQUM1RCxTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFELDhCQUE4QixFQUFFQyw4QkFBOEIsUUFBTywrQkFBK0I7QUFDNUcsU0FBUUMsSUFBSSxRQUFPLG9CQUFvQjtBQUV2QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQXFFcEMsTUFBTUMsc0JBQXNCLENBQUNDO0lBQzNCLElBQUcsT0FBT0EsUUFBUUMsT0FBTyxLQUFLLFVBQVU7UUFDdEMsT0FBTyxDQUFDLENBQUNELFFBQVFDLE9BQU8sQ0FBQ0MsSUFBSTtJQUMvQjtJQUNBLE9BQU9DLE1BQU1DLE9BQU8sQ0FBQ0osUUFBUUMsT0FBTyxLQUFLRCxRQUFRQyxPQUFPLENBQUNJLE1BQU0sR0FBRyxLQUFLTCxRQUFRQyxPQUFPLENBQUNLLEtBQUssQ0FBQyxDQUFDQztR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
|
|
424
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBncm9rS2V5Pzogc3RyaW5nO1xuICBncm9rTW9kZWw/OiBzdHJpbmc7XG4gIG9sbGFtYT86IHtlbmRwb2ludDogc3RyaW5nOyBwcm90b2NvbDogJ2dlbmVyYXRlJyB8ICdjaGF0JyB8ICdvcGVuYWktY2hhdCd9O1xuICBvcGVuYWlLZXk/OiBzdHJpbmc7XG4gIG9wZW5haU1vZGVsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25QYXJ0ID0ge3RleHQ6IHN0cmluZzsgdHlwZTogJ3RleHQnfSB8IHtcbiAgZGV0YWlsPzogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdyc7XG4gIHR5cGU6ICdpbWFnZSc7XG4gIHVybDogc3RyaW5nO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25NZXNzYWdlIHtcbiAgY29udGVudDogc3RyaW5nIHwgQ29udGVudEdlbmVyYXRpb25QYXJ0W107XG4gIHJvbGU6ICdhc3Npc3RhbnQnIHwgJ2RldmVsb3BlcicgfCAnc3lzdGVtJyB8ICd1c2VyJztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQgPSB7dHlwZTogJ2pzb25fb2JqZWN0JyB8ICd0ZXh0J30gfCB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHN0cmljdD86IGJvb2xlYW47XG4gIHR5cGU6ICdqc29uX3NjaGVtYSc7XG59O1xuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25SZWFzb25pbmdFZmZvcnQgPSAnbm9uZScgfCAnbWluaW1hbCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ3hoaWdoJyB8ICdtYXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQge1xuICBhc3BlY3RSYXRpbz86IHN0cmluZztcbiAgaW1hZ2VzPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6IHN0cmluZ31bXTtcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICBtZXNzYWdlcz86IENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZVtdO1xuICBtb2RhbGl0eT86ICdpbWFnZScgfCAndGV4dCc7XG4gIG1vZGVsPzogc3RyaW5nO1xuICBvdXRwdXRUZXh0RmlsdGVyPzogJ25vbmJsYW5rJztcbiAgb3V0cHV0VGV4dE1vZGU/OiAncHJlc2VydmUnIHwgJ3RyaW0nO1xuICBvdXRwdXRUZXh0U2VwYXJhdG9yPzogJycgfCAnXFxuJztcbiAgcHJvbXB0Pzogc3RyaW5nO1xuICBwcm92aWRlcjogJ2NsYXVkZScgfCAnZ2VtaW5pJyB8ICdncm9rJyB8ICdvbGxhbWEnIHwgJ29wZW5haSc7XG4gIHJlYXNvbmluZ0VmZm9ydD86IENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0O1xuICByZXNwb25zZUZvcm1hdD86IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQ7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIHN5c3RlbT86IHN0cmluZztcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHRoaW5raW5nTGV2ZWw/OiAnbWluaW1hbCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnO1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIHRvcFA/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZENvbnRlbnQge1xuICBpbWFnZT86IHtieXRlczogQnVmZmVyOyBtaW1lOiAnaW1hZ2UvanBlZycgfCAnaW1hZ2UvcG5nJ307XG4gIHNlYXJjaFN1Z2dlc3Rpb25zSHRtbD86IHN0cmluZztcbiAgc291cmNlczoge3RpdGxlOiBzdHJpbmc7IHVybDogc3RyaW5nfVtdO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgR2VtaW5pUGFydCB7aW5saW5lRGF0YT86IHtkYXRhOiBzdHJpbmc7IG1pbWVUeXBlOiBzdHJpbmd9OyB0ZXh0Pzogc3RyaW5nOyB0aG91Z2h0PzogYm9vbGVhbn1cbmludGVyZmFjZSBHZW1pbmlSZXNwb25zZSB7XG4gIGNhbmRpZGF0ZXM/OiB7XG4gICAgY29udGVudD86IHtwYXJ0cz86IEdlbWluaVBhcnRbXX07XG4gICAgZmluaXNoUmVhc29uPzogc3RyaW5nO1xuICAgIGdyb3VuZGluZ01ldGFkYXRhPzoge1xuICAgICAgZ3JvdW5kaW5nQ2h1bmtzPzoge3dlYj86IHt0aXRsZT86IHN0cmluZzsgdXJpPzogc3RyaW5nfX1bXTtcbiAgICAgIHNlYXJjaEVudHJ5UG9pbnQ/OiB7cmVuZGVyZWRDb250ZW50Pzogc3RyaW5nfTtcbiAgICB9O1xuICB9W107XG4gIGVycm9yPzoge2NvZGU/OiBudW1iZXJ9O1xuICBwcm9tcHRGZWVkYmFjaz86IHtibG9ja1JlYXNvbj86IHN0cmluZ307XG59XG5cbmNvbnN0IHZhbGlkTWVzc2FnZUNvbnRlbnQgPSAobWVzc2FnZTogQ29udGVudEdlbmVyYXRpb25NZXNzYWdlKTogYm9vbGVhbiA9PiB7XG4gIGlmKHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICEhbWVzc2FnZS5jb250ZW50LnRyaW0oKTtcbiAgfVxuICByZXR1cm4gQXJyYXkuaXNBcnJheShtZXNzYWdlLmNvbnRlbnQpICYmIG1lc3NhZ2UuY29udGVudC5sZW5ndGggPiAwICYmIG1lc3NhZ2UuY29udGVudC5ldmVyeSgocGFydCkgPT4ge1xuICAgIGlmKCFwYXJ0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHBhcnQudGV4dCA9PT0gJ3N0cmluZycgJiYgISFwYXJ0LnRleHQudHJpbSgpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydC50eXBlID09PSAnaW1hZ2UnICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInICYmIHR5cGVvZiBwYXJ0LnVybCA9PT0gJ3N0cmluZydcbiAgICAgICYmIC9eKGh0dHBzPzpcXC9cXC9bXlxcc10rfGRhdGE6aW1hZ2VcXC8ocG5nfGpwZWd8d2VicHxnaWYpO2Jhc2U2NCxbQS1aYS16MC05Ky9dKz17MCwyfSkkLy50ZXN0KHBhcnQudXJsKVxuICAgICAgJiYgKHBhcnQuZGV0YWlsID09PSB1bmRlZmluZWQgfHwgWydhdXRvJywgJ2hpZ2gnLCAnbG93J10uaW5jbHVkZXMocGFydC5kZXRhaWwpKTtcbiAgfSk7XG59O1xuXG4vKiogU2luZ2xlIHN1Ym1pc3Npb24gdGhyb3VnaCBSaXAtSHVudGVyOyBjYWxsZXJzIG93biBkdXJhYmxlIGpvYnMgYW5kIHJlY29uY2lsaWF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29udGVudCA9IGFzeW5jIChcbiAgaW5wdXQ6IENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsXG4gIGNvbmZpZzogQ29udGVudEdlbmVyYXRpb25Db25maWcgPSBDb25maWcuZ2V0PENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnPignY29udGVudEdlbmVyYXRpb24nKSB8fCB7fVxuKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGlmKCFbJ2NsYXVkZScsICdnZW1pbmknLCAnZ3JvaycsICdvbGxhbWEnLCAnb3BlbmFpJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignQSBzdXBwb3J0ZWQgcHJvdmlkZXIgaXMgcmVxdWlyZWQuJyk7XG4gIH1cbiAgaWYoaW5wdXQub3V0cHV0VGV4dE1vZGUgIT09IHVuZGVmaW5lZFxuICAgICYmICghWydjbGF1ZGUnLCAnZ2VtaW5pJywgJ29wZW5haScsICdncm9rJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpIHx8IGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnIHx8ICFbJ3ByZXNlcnZlJywgJ3RyaW0nXS5pbmNsdWRlcyhpbnB1dC5vdXRwdXRUZXh0TW9kZSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignb3V0cHV0VGV4dE1vZGUgcmVxdWlyZXMgYSBDbGF1ZGUsIEdlbWluaSwgT3BlbkFJIG9yIEdyb2sgdGV4dCByZXF1ZXN0IGFuZCBwcmVzZXJ2ZSBvciB0cmltLicpO1xuICB9XG4gIGlmKGlucHV0Lm91dHB1dFRleHRTZXBhcmF0b3IgIT09IHVuZGVmaW5lZCAmJiAoaW5wdXQub3V0cHV0VGV4dE1vZGUgIT09ICdwcmVzZXJ2ZScgfHwgIVsnY2xhdWRlJywgJ2dlbWluaSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSB8fCAhWycnLCAnXFxuJ10uaW5jbHVkZXMoaW5wdXQub3V0cHV0VGV4dFNlcGFyYXRvcikpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignb3V0cHV0VGV4dFNlcGFyYXRvciByZXF1aXJlcyBDbGF1ZGUgb3IgR2VtaW5pIHByZXNlcnZlIG1vZGUgYW5kIGFuIGVtcHR5IG9yIG5ld2xpbmUgc2VwYXJhdG9yLicpO1xuICB9XG4gIGlmKGlucHV0Lm91dHB1dFRleHRGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiAoaW5wdXQub3V0cHV0VGV4dEZpbHRlciAhPT0gJ25vbmJsYW5rJyB8fCBpbnB1dC5vdXRwdXRUZXh0TW9kZSAhPT0gJ3ByZXNlcnZlJyB8fCAhWydjbGF1ZGUnLCAnZ2VtaW5pJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ291dHB1dFRleHRGaWx0ZXIgcmVxdWlyZXMgQ2xhdWRlIG9yIEdlbWluaSBwcmVzZXJ2ZSBtb2RlIGFuZCBub25ibGFuay4nKTtcbiAgfVxuICBpZihpbnB1dC50aGlua2luZ0xldmVsICE9PSB1bmRlZmluZWQgJiYgKGlucHV0LnByb3ZpZGVyICE9PSAnZ2VtaW5pJyB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCAhWydtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCddLmluY2x1ZGVzKGlucHV0LnRoaW5raW5nTGV2ZWwpKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RoaW5raW5nTGV2ZWwgcmVxdWlyZXMgYSBHZW1pbmkgdGV4dCByZXF1ZXN0IGFuZCBhIHN1cHBvcnRlZCBsZXZlbC4nKTtcbiAgfVxuICBpZihpbnB1dC5tZXNzYWdlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYoaW5wdXQucHJvbXB0ICE9PSB1bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkoaW5wdXQubWVzc2FnZXMpIHx8ICFpbnB1dC5tZXNzYWdlcy5sZW5ndGhcbiAgICAgIHx8IGlucHV0Lm1lc3NhZ2VzLnNvbWUoKG1lc3NhZ2UpID0+XG4gICAgICAgICFtZXNzYWdlIHx8ICFbJ2Fzc2lzdGFudCcsICdkZXZlbG9wZXInLCAnc3lzdGVtJywgJ3VzZXInXS5pbmNsdWRlcyhtZXNzYWdlLnJvbGUpIHx8ICF2YWxpZE1lc3NhZ2VDb250ZW50KG1lc3NhZ2UpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignU3VwcGx5IGVpdGhlciBhIG5vbi1lbXB0eSBwcm9tcHQgb3Igbm9uLWVtcHR5IHRleHQgbWVzc2FnZXMgd2l0aCBzdXBwb3J0ZWQgcm9sZXMuJyk7XG4gICAgfVxuICB9IGVsc2UgaWYodHlwZW9mIGlucHV0LnByb21wdCAhPT0gJ3N0cmluZycgfHwgIWlucHV0LnByb21wdC50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdBIG5vbi1lbXB0eSBwcm9tcHQgaXMgcmVxdWlyZWQuJyk7XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgIT09ICdvcGVuYWknXG4gICAgJiYgKChpbnB1dC5tZXNzYWdlcyAhPT0gdW5kZWZpbmVkICYmIGlucHV0LnByb3ZpZGVyICE9PSAnZ2VtaW5pJykgfHwgaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWRcbiAgICAgIHx8IChbJ2NsYXVkZScsICdncm9rJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpICYmIGlucHV0LnJlc3BvbnNlRm9ybWF0ICE9PSB1bmRlZmluZWQpKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoXG4gICAgICAnTWVzc2FnZXMgYW5kIHJlYXNvbmluZyBlZmZvcnQgcmVxdWlyZSBPcGVuQUk7IENsYXVkZSBhbmQgR3JvayBkbyBub3Qgc3VwcG9ydCByZXNwb25zZSBmb3JtYXQgb3B0aW9ucy4nXG4gICAgKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciA9PT0gJ2dlbWluaScgJiYgaW5wdXQubWVzc2FnZXMgIT09IHVuZGVmaW5lZCAmJiAoaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgaW5wdXQuaW1hZ2VzICE9PSB1bmRlZmluZWQgfHwgaW5wdXQubWVzc2FnZXMuc29tZShtZXNzYWdlID0+ICFbJ3VzZXInLCAnYXNzaXN0YW50J10uaW5jbHVkZXMobWVzc2FnZS5yb2xlKSB8fCAoQXJyYXkuaXNBcnJheShtZXNzYWdlLmNvbnRlbnQpICYmIG1lc3NhZ2UuY29udGVudC5zb21lKHBhcnQgPT4gcGFydC50eXBlICE9PSAndGV4dCcpKSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIG1lc3NhZ2VzIHJlcXVpcmUgdXNlciBvciBhc3Npc3RhbnQgcm9sZXMgd2l0aCB0ZXh0LW9ubHkgY29udGVudC4nKTtcbiAgfVxuICBpZihpbnB1dC50aW1lb3V0TXMgIT09IHVuZGVmaW5lZFxuICAgICYmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dC50aW1lb3V0TXMpIHx8IGlucHV0LnRpbWVvdXRNcyA8IDEgfHwgaW5wdXQudGltZW91dE1zID4gMl8xNDdfNDgzXzY0NykpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0aW1lb3V0TXMgbXVzdCBiZSBhIHBvc2l0aXZlIDMyLWJpdCBpbnRlZ2VyLicpO1xuICB9XG4gIGlmKGlucHV0LnJlYXNvbmluZ0VmZm9ydCAhPT0gdW5kZWZpbmVkICYmICFbJ25vbmUnLCAnbWluaW1hbCcsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAneGhpZ2gnLCAnbWF4J10uaW5jbHVkZXMoaW5wdXQucmVhc29uaW5nRWZmb3J0KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1Vuc3VwcG9ydGVkIHJlYXNvbmluZyBlZmZvcnQuJyk7XG4gIH1cbiAgY29uc3QgZm9ybWF0ID0gaW5wdXQucmVzcG9uc2VGb3JtYXQ7XG4gIGlmKGZvcm1hdCAhPT0gdW5kZWZpbmVkICYmICghZm9ybWF0IHx8ICFbJ3RleHQnLCAnanNvbl9vYmplY3QnLCAnanNvbl9zY2hlbWEnXS5pbmNsdWRlcyhmb3JtYXQudHlwZSkgfHwgKGZvcm1hdC50eXBlID09PSAnanNvbl9zY2hlbWEnICYmIChcbiAgICB0eXBlb2YgZm9ybWF0Lm5hbWUgIT09ICdzdHJpbmcnIHx8ICEvXlthLXpBLVowLTlfLV17MSw2NH0kLy50ZXN0KGZvcm1hdC5uYW1lKSB8fCAhZm9ybWF0LnNjaGVtYSB8fCB0eXBlb2YgZm9ybWF0LnNjaGVtYSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShmb3JtYXQuc2NoZW1hKVxuICAgIHx8IChmb3JtYXQuc3RyaWN0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZvcm1hdC5zdHJpY3QgIT09ICdib29sZWFuJylcbiAgKSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCByZXNwb25zZSBmb3JtYXQuIEpTT04gc2NoZW1hcyByZXF1aXJlIGEgbmFtZSBhbmQgc2NoZW1hIG9iamVjdC4nKTtcbiAgfVxuICBpZihbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgJiYgZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKGZvcm1hdC50eXBlID09PSAnanNvbl9zY2hlbWEnIHx8IGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1RoaXMgcHJvdmlkZXIgc3VwcG9ydHMgdGV4dCBvciBqc29uX29iamVjdCBmb3IgdGV4dCBnZW5lcmF0aW9uIG9ubHkuJyk7XG4gIH1cbiAgaWYoaW5wdXQudG9wUCAhPT0gdW5kZWZpbmVkICYmICghWydnZW1pbmknLCAnb2xsYW1hJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpIHx8IGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnIHx8ICFOdW1iZXIuaXNGaW5pdGUoaW5wdXQudG9wUCkgfHwgaW5wdXQudG9wUCA8IDAgfHwgaW5wdXQudG9wUCA+IDEpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcigndG9wUCByZXF1aXJlcyBhIEdlbWluaSBvciBPbGxhbWEgdGV4dCByZXF1ZXN0IGFuZCBhIGZpbml0ZSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuJyk7XG4gIH1cbiAgaWYoaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCAmJiAoIVsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCAhTnVtYmVyLmlzRmluaXRlKGlucHV0LnRlbXBlcmF0dXJlKSB8fCBpbnB1dC50ZW1wZXJhdHVyZSA8IDAgfHwgKGlucHV0LnByb3ZpZGVyID09PSAnZ2VtaW5pJyAmJiBpbnB1dC50ZW1wZXJhdHVyZSA+IDIpKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RlbXBlcmF0dXJlIHJlcXVpcmVzIGEgbm9ubmVnYXRpdmUgZmluaXRlIHZhbHVlIGZvciBPbGxhbWEgdGV4dCBvciBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMiBmb3IgR2VtaW5pIHRleHQuJyk7XG4gIH1cbiAgaWYoaW5wdXQubWF4VG9rZW5zICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0Lm1heFRva2VucykgfHwgaW5wdXQubWF4VG9rZW5zIDwgMSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdtYXhUb2tlbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgIT09ICdnZW1pbmknXG4gICAgJiYgKChpbnB1dC5pbWFnZXM/Lmxlbmd0aCAmJiAhWydncm9rJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgaW5wdXQuc2VhcmNoKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1RoaXMgcHJvdmlkZXIgb3BlcmF0aW9uIHN1cHBvcnRzIHRleHQgaW5wdXQgYW5kIG91dHB1dCBvbmx5LicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb2xsYW1hJykgcmV0dXJuIGdlbmVyYXRlT2xsYW1hQ29udGVudChpbnB1dCwgY29uZmlnKTtcbiAgY29uc3Qge3Byb21wdCwgaW1hZ2VzID0gW119ID0gaW5wdXQ7XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJykge1xuICAgIGlmKCFjb25maWcuY2xhdWRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS92MS9tZXNzYWdlcycsIHtcbiAgICAgIG1heF90b2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgbWVzc2FnZXM6IFt7Y29udGVudDogcHJvbXB0LCByb2xlOiAndXNlcid9XSxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCBjb25maWcuY2xhdWRlTW9kZWwgfHwgJ2NsYXVkZS1zb25uZXQtNScsXG4gICAgICBzeXN0ZW06IGlucHV0LnN5c3RlbVxuICAgIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsnYW50aHJvcGljLXZlcnNpb24nOiAnMjAyMy0wNi0wMScsICd4LWFwaS1rZXknOiBjb25maWcuY2xhdWRlS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMge1xuICAgICAgY29udGVudD86IHt0ZXh0Pzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgZXJyb3I/OiB7dHlwZT86IHN0cmluZ307XG4gICAgICBzdG9wX3JlYXNvbj86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZihyZXNwb25zZS5lcnJvciAmJiBbJ2F1dGhlbnRpY2F0aW9uX2Vycm9yJywgJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicsICdub3RfZm91bmRfZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGNvbnN0IHByZXNlcnZlID0gaW5wdXQub3V0cHV0VGV4dE1vZGUgPT09ICdwcmVzZXJ2ZSc7XG4gICAgaWYocHJlc2VydmUgJiYgKCFBcnJheS5pc0FycmF5KHJlc3BvbnNlLmNvbnRlbnQpIHx8IHJlc3BvbnNlLmNvbnRlbnQuc29tZSgocGFydCkgPT5cbiAgICAgICFwYXJ0IHx8ICFbJ3RleHQnLCAndGhpbmtpbmcnLCAncmVkYWN0ZWRfdGhpbmtpbmcnXS5pbmNsdWRlcyhwYXJ0LnR5cGUgfHwgJycpIHx8IChwYXJ0LnR5cGUgPT09ICd0ZXh0JyAmJiB0eXBlb2YgcGFydC50ZXh0ICE9PSAnc3RyaW5nJykpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignQ2xhdWRlIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQuJyk7XG4gICAgfVxuICAgIGNvbnN0IGNodW5rcyA9IChyZXNwb25zZS5jb250ZW50Py5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykgfHwgW10pLmZpbHRlcih0ZXh0ID0+IGlucHV0Lm91dHB1dFRleHRGaWx0ZXIgIT09ICdub25ibGFuaycgfHwgISF0ZXh0LnRyaW0oKSk7XG4gICAgY29uc3QgdGV4dCA9IHByZXNlcnZlID8gY2h1bmtzLmpvaW4oaW5wdXQub3V0cHV0VGV4dFNlcGFyYXRvciA/PyAnJykgOiBjaHVua3Muam9pbignXFxuJykudHJpbSgpO1xuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnR5cGUgIT09ICdtZXNzYWdlJyB8fCByZXNwb25zZS5zdG9wX3JlYXNvbiAhPT0gJ2VuZF90dXJuJyB8fCAhdGV4dC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0NsYXVkZSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkLicpO1xuICAgIH1cbiAgICByZXR1cm4ge3NvdXJjZXM6IFtdLCB0ZXh0fTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciA9PT0gJ29wZW5haScgfHwgaW5wdXQucHJvdmlkZXIgPT09ICdncm9rJykge1xuICAgIGNvbnN0IGdyb2sgPSBpbnB1dC5wcm92aWRlciA9PT0gJ2dyb2snO1xuICAgIGNvbnN0IGtleSA9IGdyb2sgPyBjb25maWcuZ3Jva0tleSA6IGNvbmZpZy5vcGVuYWlLZXk7XG4gICAgaWYoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLmApO1xuICAgIH1cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoZ3JvayA/ICdodHRwczovL2FwaS54LmFpL3YxL3Jlc3BvbnNlcycgOiAnaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9yZXNwb25zZXMnLCB7XG4gICAgICBpbnB1dDogZ3JvayAmJiBpbWFnZXMubGVuZ3RoID8gW3tjb250ZW50OiBbe3RleHQ6IHByb21wdCwgdHlwZTogJ2lucHV0X3RleHQnfSwgLi4uaW1hZ2VzLm1hcCgoaW1hZ2UpID0+ICh7aW1hZ2VfdXJsOiBgZGF0YToke2ltYWdlLm1pbWV9O2Jhc2U2NCwke2ltYWdlLmJ5dGVzLnRvU3RyaW5nKCdiYXNlNjQnKX1gLCB0eXBlOiAnaW5wdXRfaW1hZ2UnfSkpXSwgcm9sZTogJ3VzZXInfV0gOiBpbnB1dC5tZXNzYWdlcz8ubWFwKChtZXNzYWdlKSA9PiAoe2NvbnRlbnQ6IHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gbWVzc2FnZS5jb250ZW50IDogbWVzc2FnZS5jb250ZW50Lm1hcCgocGFydCkgPT4gKHBhcnQudHlwZSA9PT0gJ3RleHQnXG4gICAgICAgID8ge3RleHQ6IHBhcnQudGV4dCwgdHlwZTogJ2lucHV0X3RleHQnfSA6IHtkZXRhaWw6IHBhcnQuZGV0YWlsID8/ICdhdXRvJywgaW1hZ2VfdXJsOiBwYXJ0LnVybCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pKSwgcm9sZTogbWVzc2FnZS5yb2xlID09PSAnc3lzdGVtJyA/ICdkZXZlbG9wZXInIDogbWVzc2FnZS5yb2xlfSkpID8/IHByb21wdCxcbiAgICAgIGluc3RydWN0aW9uczogaW5wdXQuc3lzdGVtLFxuICAgICAgbWF4X291dHB1dF90b2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgbW9kZWw6IGlucHV0Lm1vZGVsIHx8IChncm9rID8gY29uZmlnLmdyb2tNb2RlbCB8fCAnZ3Jvay00LjcnIDogY29uZmlnLm9wZW5haU1vZGVsIHx8ICdncHQtNi1hc3RyYScpLFxuICAgICAgLi4uKGlucHV0LnJlYXNvbmluZ0VmZm9ydCA/IHtyZWFzb25pbmc6IHtlZmZvcnQ6IGlucHV0LnJlYXNvbmluZ0VmZm9ydH19IDoge30pLFxuICAgICAgc3RvcmU6IGZhbHNlLFxuICAgICAgLi4uKGZvcm1hdCA/IHt0ZXh0OiB7Zm9ybWF0fX0gOiB7fSksXG4gICAgICAuLi4oIWdyb2sgPyB7dHJ1bmNhdGlvbjogJ2Rpc2FibGVkJ30gOiB7fSlcbiAgICB9LCB7Y2FjaGU6IGZhbHNlLCBoZWFkZXJzOiBuZXcgSGVhZGVycyh7QXV0aG9yaXphdGlvbjogYEJlYXJlciAke2tleX1gfSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMge1xuICAgICAgZXJyb3I/OiB7Y29kZT86IHN0cmluZzsgdHlwZT86IHN0cmluZ307XG4gICAgICBvdXRwdXQ/OiB7Y29udGVudD86IHt0ZXh0Pzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdOyBzdGF0dXM/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9W107XG4gICAgICBzdGF0dXM/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZihyZXNwb25zZS5lcnJvciAmJiBbJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicsICdhdXRoZW50aWNhdGlvbl9lcnJvcicsICdwZXJtaXNzaW9uX2Vycm9yJ10uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IudHlwZSB8fCAnJykpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIG1vZGVsIGFuZCBhY2NvdW50IGFjY2Vzcy5gKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgfHwgcmVzcG9uc2Uuc3RhdHVzICE9PSAnY29tcGxldGVkJyB8fCByZXNwb25zZS5vdXRwdXQ/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSAnaW5jb21wbGV0ZScpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKGAke2dyb2sgPyAnR3JvaycgOiAnT3BlbkFJJ30gcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZDogZ2VuZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlLmApO1xuICAgIH1cbiAgICBpZihyZXNwb25zZS5vdXRwdXQ/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uY29udGVudD8uc29tZSgocGFydCkgPT4gcGFydC50eXBlID09PSAncmVmdXNhbCcpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IGRlY2xpbmVkIHRoZSByZXF1ZXN0LmApO1xuICAgIH1cbiAgICBpZihyZXNwb25zZS5vdXRwdXQ/LnNvbWUoKGl0ZW0pID0+IGl0ZW0udHlwZSAmJiAhWydtZXNzYWdlJywgJ3JlYXNvbmluZyddLmluY2x1ZGVzKGl0ZW0udHlwZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKGAke2dyb2sgPyAnR3JvaycgOiAnT3BlbkFJJ30gcmV0dXJuZWQgYW4gdW5zdXBwb3J0ZWQgb3V0cHV0IGl0ZW0uYCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSByZXNwb25zZS5vdXRwdXQ/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS50eXBlID09PSAnbWVzc2FnZScgfHwgKGdyb2sgJiYgIWl0ZW0udHlwZSkpLmZsYXRNYXAoKGl0ZW0pID0+IGl0ZW0uY29udGVudCB8fCBbXSlcbiAgICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ291dHB1dF90ZXh0JykubWFwKChwYXJ0KSA9PiBwYXJ0LnRleHQgfHwgJycpLmpvaW4oJycpIHx8ICcnO1xuICAgIGlmKCF0ZXh0LnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IHJldHVybmVkIGVtcHR5IG91dHB1dC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtzb3VyY2VzOiBbXSwgdGV4dDogaW5wdXQub3V0cHV0VGV4dE1vZGUgPT09ICdwcmVzZXJ2ZScgPyB0ZXh0IDogdGV4dC50cmltKCl9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBpbnB1dC5tZXNzYWdlcz8ubWFwKG1lc3NhZ2UgPT4gKHtwYXJ0czogdHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gJ3N0cmluZycgPyBbe3RleHQ6IG1lc3NhZ2UuY29udGVudH1dIDogbWVzc2FnZS5jb250ZW50Lm1hcChwYXJ0ID0+ICh7dGV4dDogKHBhcnQgYXMgRXh0cmFjdDxDb250ZW50R2VuZXJhdGlvblBhcnQsIHt0eXBlOiAndGV4dCd9PikudGV4dH0pKSwgcm9sZTogbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdtb2RlbCcgOiAndXNlcid9KSkgPz8gW3twYXJ0cywgcm9sZTogJ3VzZXInfV0sXG4gICAgLi4uKGlucHV0LnN5c3RlbSA/IHtzeXN0ZW1JbnN0cnVjdGlvbjoge3BhcnRzOiBbe3RleHQ6IGlucHV0LnN5c3RlbX1dfX0gOiB7fSksXG4gICAgZ2VuZXJhdGlvbkNvbmZpZzogaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgPyB7Li4uKGlucHV0LmFzcGVjdFJhdGlvID8ge2ltYWdlQ29uZmlnOiB7YXNwZWN0UmF0aW86IGlucHV0LmFzcGVjdFJhdGlvfX0gOiB7fSksIHJlc3BvbnNlTW9kYWxpdGllczogWydURVhUJywgJ0lNQUdFJ119IDoge1xuICAgICAgbWF4T3V0cHV0VG9rZW5zOiBpbnB1dC5tYXhUb2tlbnMgPz8gNDA5NixcbiAgICAgIC4uLihmb3JtYXQgPyB7cmVzcG9uc2VNaW1lVHlwZTogZm9ybWF0LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyAnYXBwbGljYXRpb24vanNvbicgOiAndGV4dC9wbGFpbid9IDoge30pLFxuICAgICAgLi4uKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgPyB7dGVtcGVyYXR1cmU6IGlucHV0LnRlbXBlcmF0dXJlfSA6IHt9KSxcbiAgICAgIC4uLihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgPyB7dG9wUDogaW5wdXQudG9wUH0gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGhpbmtpbmdMZXZlbCAhPT0gdW5kZWZpbmVkID8ge3RoaW5raW5nQ29uZmlnOiB7dGhpbmtpbmdMZXZlbDogaW5wdXQudGhpbmtpbmdMZXZlbH19IDoge30pXG4gICAgfSxcbiAgICAuLi4oaW5wdXQuc2VhcmNoID8ge3Rvb2xzOiBbe2dvb2dsZVNlYXJjaDoge319XX0gOiB7fSlcbiAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeyd4LWdvb2ctYXBpLWtleSc6IGNvbmZpZy5nZW1pbmlLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyBHZW1pbmlSZXNwb25zZTtcbiAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWzQwMCwgNDAxLCA0MDMsIDQwNF0uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IuY29kZSB8fCAwKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0dlbWluaSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIHJlZmVyZW5jZSBmb3JtYXQgYW5kIG1vZGVsIGFjY2Vzcy4nKTtcbiAgfVxuICBpZihyZXNwb25zZS5wcm9tcHRGZWVkYmFjaz8uYmxvY2tSZWFzb24gfHwgcmVzcG9uc2UuZXJyb3IgfHwgIXJlc3BvbnNlLmNhbmRpZGF0ZXM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0dlbWluaSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkLicpO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IHJlc3BvbnNlLmNhbmRpZGF0ZXNbMF0hO1xuICBpZihjYW5kaWRhdGUuZmluaXNoUmVhc29uICE9PSAnU1RPUCcpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZDogZ2VuZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlLicpO1xuICB9XG4gIGNvbnN0IHByZXNlcnZlID0gaW5wdXQub3V0cHV0VGV4dE1vZGUgPT09ICdwcmVzZXJ2ZSc7XG4gIGlmKHByZXNlcnZlICYmICghQXJyYXkuaXNBcnJheShjYW5kaWRhdGUuY29udGVudD8ucGFydHMpIHx8IGNhbmRpZGF0ZS5jb250ZW50LnBhcnRzLnNvbWUocGFydCA9PiAhcGFydCB8fCAocGFydC50aG91Z2h0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHBhcnQudGhvdWdodCAhPT0gJ2Jvb2xlYW4nKSB8fCBPYmplY3Qua2V5cyhwYXJ0KS5zb21lKGtleSA9PiAhWyd0ZXh0JywgJ3Rob3VnaHQnLCAndGhvdWdodFNpZ25hdHVyZSddLmluY2x1ZGVzKGtleSkpIHx8ICghcGFydC50aG91Z2h0ICYmIHR5cGVvZiBwYXJ0LnRleHQgIT09ICdzdHJpbmcnKSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignR2VtaW5pIHJlc3BvbnNlIHRleHQgcGFydHMgY291bGQgbm90IGJlIGNvbmZpcm1lZC4nKTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSAoY2FuZGlkYXRlLmNvbnRlbnQ/LnBhcnRzIHx8IFtdKS5maWx0ZXIoKHBhcnQpID0+ICFwYXJ0LnRob3VnaHQpO1xuICBjb25zdCBpbmxpbmUgPSBvdXRwdXQuZmluZCgocGFydCkgPT4gcGFydC5pbmxpbmVEYXRhKT8uaW5saW5lRGF0YTtcbiAgbGV0IGltYWdlOiBHZW5lcmF0ZWRDb250ZW50WydpbWFnZSddO1xuICBpZihpbmxpbmUgJiYgWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGlubGluZS5taW1lVHlwZSkpIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKGlubGluZS5kYXRhLCAnYmFzZTY0Jyk7XG4gICAgaWYoIWJ5dGVzLmxlbmd0aCB8fCBieXRlcy5sZW5ndGggPiAyMCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdJbnZhbGlkIGltYWdlIG91dHB1dC4nKTtcbiAgICB9XG4gICAgaW1hZ2UgPSB7Ynl0ZXMsIG1pbWU6IGlubGluZS5taW1lVHlwZSBhcyAnaW1hZ2UvcG5nJyB8ICdpbWFnZS9qcGVnJ307XG4gIH1cbiAgY29uc3QgY2h1bmtzID0gb3V0cHV0Lm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5maWx0ZXIodGV4dCA9PiBpbnB1dC5vdXRwdXRUZXh0RmlsdGVyICE9PSAnbm9uYmxhbmsnIHx8ICEhdGV4dC50cmltKCkpO1xuICBjb25zdCB0ZXh0ID0gcHJlc2VydmUgPyBjaHVua3Muam9pbihpbnB1dC5vdXRwdXRUZXh0U2VwYXJhdG9yID8/ICcnKSA6IGNodW5rcy5qb2luKCdcXG4nKS50cmltKCk7XG4gIGlmKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gIWltYWdlIDogIXRleHQudHJpbSgpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignVGhlIHJlcXVlc3RlZCBvdXRwdXQgd2FzIG5vdCByZXR1cm5lZC4nKTtcbiAgfVxuICBjb25zdCBzb3VyY2VzID0gKGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uZ3JvdW5kaW5nQ2h1bmtzIHx8IFtdKS5mbGF0TWFwKCh7d2VifSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdlYj8udXJpIHx8ICcnKTtcbiAgICAgIHJldHVybiB1cmwucHJvdG9jb2wgPT09ICdodHRwczonID8gW3t0aXRsZTogd2ViPy50aXRsZSB8fCB1cmwuaG9zdG5hbWUsIHVybDogdXJsLmhyZWZ9XSA6IFtdO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbWFnZSwgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sOiBjYW5kaWRhdGUuZ3JvdW5kaW5nTWV0YWRhdGE/LnNlYXJjaEVudHJ5UG9pbnQ/LnJlbmRlcmVkQ29udGVudCwgc291cmNlcywgdGV4dFxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9sbGFtYUNvbnRlbnQiLCJDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiLCJwb3N0IiwiQ29uZmlnIiwidmFsaWRNZXNzYWdlQ29udGVudCIsIm1lc3NhZ2UiLCJjb250ZW50IiwidHJpbSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImV2ZXJ5IiwicGFydCIsInR5cGUiLCJ0ZXh0Iiwicm9sZSIsInVybCIsInRlc3QiLCJkZXRhaWwiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImdlbmVyYXRlQ29udGVudCIsImlucHV0IiwiY29uZmlnIiwiZ2V0IiwicHJvdmlkZXIiLCJvdXRwdXRUZXh0TW9kZSIsIm1vZGFsaXR5Iiwib3V0cHV0VGV4dFNlcGFyYXRvciIsIm91dHB1dFRleHRGaWx0ZXIiLCJ0aGlua2luZ0xldmVsIiwibWVzc2FnZXMiLCJwcm9tcHQiLCJzb21lIiwicmVhc29uaW5nRWZmb3J0IiwicmVzcG9uc2VGb3JtYXQiLCJpbWFnZXMiLCJ0aW1lb3V0TXMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJmb3JtYXQiLCJuYW1lIiwic2NoZW1hIiwic3RyaWN0IiwidG9wUCIsImlzRmluaXRlIiwidGVtcGVyYXR1cmUiLCJtYXhUb2tlbnMiLCJzZWFyY2giLCJjbGF1ZGVLZXkiLCJyZXNwb25zZSIsIm1heF90b2tlbnMiLCJtb2RlbCIsImNsYXVkZU1vZGVsIiwic3lzdGVtIiwiY2FjaGUiLCJoZWFkZXJzIiwiSGVhZGVycyIsInRpbWVvdXQiLCJlcnJvciIsInByZXNlcnZlIiwiY2h1bmtzIiwiZmlsdGVyIiwibWFwIiwiam9pbiIsInN0b3BfcmVhc29uIiwic291cmNlcyIsImdyb2siLCJrZXkiLCJncm9rS2V5Iiwib3BlbmFpS2V5IiwiaW1hZ2UiLCJpbWFnZV91cmwiLCJtaW1lIiwiYnl0ZXMiLCJ0b1N0cmluZyIsImluc3RydWN0aW9ucyIsIm1heF9vdXRwdXRfdG9rZW5zIiwiZ3Jva01vZGVsIiwib3BlbmFpTW9kZWwiLCJyZWFzb25pbmciLCJlZmZvcnQiLCJzdG9yZSIsInRydW5jYXRpb24iLCJBdXRob3JpemF0aW9uIiwic3RhdHVzIiwib3V0cHV0IiwiaXRlbSIsImZsYXRNYXAiLCJnZW1pbmlLZXkiLCJwYXJ0cyIsImlubGluZURhdGEiLCJkYXRhIiwibWltZVR5cGUiLCJnZW1pbmlJbWFnZU1vZGVsIiwiZ2VtaW5pTW9kZWwiLCJjb250ZW50cyIsInN5c3RlbUluc3RydWN0aW9uIiwiZ2VuZXJhdGlvbkNvbmZpZyIsImFzcGVjdFJhdGlvIiwiaW1hZ2VDb25maWciLCJyZXNwb25zZU1vZGFsaXRpZXMiLCJtYXhPdXRwdXRUb2tlbnMiLCJyZXNwb25zZU1pbWVUeXBlIiwidGhpbmtpbmdDb25maWciLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJPYmplY3QiLCJrZXlzIiwiaW5saW5lIiwiZmluZCIsIkJ1ZmZlciIsImZyb20iLCJncm91bmRpbmdNZXRhZGF0YSIsImdyb3VuZGluZ0NodW5rcyIsIndlYiIsIlVSTCIsInVyaSIsInByb3RvY29sIiwidGl0bGUiLCJob3N0bmFtZSIsImhyZWYiLCJzZWFyY2hTdWdnZXN0aW9uc0h0bWwiLCJzZWFyY2hFbnRyeVBvaW50IiwicmVuZGVyZWRDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxxQkFBcUIsUUFBTyx3QkFBd0I7QUFDNUQsU0FBUUMsOEJBQThCLEVBQUVDLDhCQUE4QixRQUFPLCtCQUErQjtBQUM1RyxTQUFRRCw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFDLElBQUksUUFBTyxvQkFBb0I7QUFFdkMsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUF5RXBDLE1BQU1DLHNCQUFzQixDQUFDQztJQUMzQixJQUFHLE9BQU9BLFFBQVFDLE9BQU8sS0FBSyxVQUFVO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDRCxRQUFRQyxPQUFPLENBQUNDLElBQUk7SUFDL0I7SUFDQSxPQUFPQyxNQUFNQyxPQUFPLENBQUNKLFFBQVFDLE9BQU8sS0FBS0QsUUFBUUMsT0FBTyxDQUFDSSxNQUFNLEdBQUcsS0FBS0wsUUFBUUMsT0FBTyxDQUFDSyxLQUFLLENBQUMsQ0FBQ0M7UUFDNUYsSUFBRyxDQUFDQSxNQUFNO1lBQ1IsT0FBTztRQUNUO1FBQ0EsSUFBR0EsS0FBS0MsSUFBSSxLQUFLLFFBQVE7WUFDdkIsT0FBTyxPQUFPRCxLQUFLRSxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUNGLEtBQUtFLElBQUksQ0FBQ1AsSUFBSTtRQUMxRDtRQUNBLE9BQU9LLEtBQUtDLElBQUksS0FBSyxXQUFXUixRQUFRVSxJQUFJLEtBQUssVUFBVSxPQUFPSCxLQUFLSSxHQUFHLEtBQUssWUFDMUUsb0ZBQW9GQyxJQUFJLENBQUNMLEtBQUtJLEdBQUcsS0FDaEdKLENBQUFBLEtBQUtNLE1BQU0sS0FBS0MsYUFBYTtZQUFDO1lBQVE7WUFBUTtTQUFNLENBQUNDLFFBQVEsQ0FBQ1IsS0FBS00sTUFBTSxDQUFBO0lBQ2pGO0FBQ0Y7QUFFQSx1RkFBdUYsR0FDdkYsT0FBTyxNQUFNRyxrQkFBa0IsT0FDN0JDLE9BQ0FDLFNBQWtDcEIsT0FBT3FCLEdBQUcsQ0FBMEIsd0JBQXdCLENBQUMsQ0FBQztJQUVoRyxJQUFHLENBQUM7UUFBQztRQUFVO1FBQVU7UUFBUTtRQUFVO0tBQVMsQ0FBQ0osUUFBUSxDQUFDRSxNQUFNRyxRQUFRLEdBQUc7UUFDN0UsTUFBTSxJQUFJekIsK0JBQStCO0lBQzNDO0lBQ0EsSUFBR3NCLE1BQU1JLGNBQWMsS0FBS1AsYUFDdEIsQ0FBQSxDQUFDO1FBQUM7UUFBVTtRQUFVO1FBQVU7S0FBTyxDQUFDQyxRQUFRLENBQUNFLE1BQU1HLFFBQVEsS0FBS0gsTUFBTUssUUFBUSxLQUFLLFdBQVcsQ0FBQztRQUFDO1FBQVk7S0FBTyxDQUFDUCxRQUFRLENBQUNFLE1BQU1JLGNBQWMsQ0FBQSxHQUFJO1FBQzdKLE1BQU0sSUFBSTFCLCtCQUErQjtJQUMzQztJQUNBLElBQUdzQixNQUFNTSxtQkFBbUIsS0FBS1QsYUFBY0csQ0FBQUEsTUFBTUksY0FBYyxLQUFLLGNBQWMsQ0FBQztRQUFDO1FBQVU7S0FBUyxDQUFDTixRQUFRLENBQUNFLE1BQU1HLFFBQVEsS0FBSyxDQUFDO1FBQUM7UUFBSTtLQUFLLENBQUNMLFFBQVEsQ0FBQ0UsTUFBTU0sbUJBQW1CLENBQUEsR0FBSTtRQUN4TCxNQUFNLElBQUk1QiwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTU8sZ0JBQWdCLEtBQUtWLGFBQWNHLENBQUFBLE1BQU1PLGdCQUFnQixLQUFLLGNBQWNQLE1BQU1JLGNBQWMsS0FBSyxjQUFjLENBQUM7UUFBQztRQUFVO0tBQVMsQ0FBQ04sUUFBUSxDQUFDRSxNQUFNRyxRQUFRLENBQUEsR0FBSTtRQUMzSyxNQUFNLElBQUl6QiwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTVEsYUFBYSxLQUFLWCxhQUFjRyxDQUFBQSxNQUFNRyxRQUFRLEtBQUssWUFBWUgsTUFBTUssUUFBUSxLQUFLLFdBQVcsQ0FBQztRQUFDO1FBQVc7UUFBTztRQUFVO0tBQU8sQ0FBQ1AsUUFBUSxDQUFDRSxNQUFNUSxhQUFhLENBQUEsR0FBSTtRQUMxSyxNQUFNLElBQUk5QiwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTVMsUUFBUSxLQUFLWixXQUFXO1FBQy9CLElBQUdHLE1BQU1VLE1BQU0sS0FBS2IsYUFBYSxDQUFDWCxNQUFNQyxPQUFPLENBQUNhLE1BQU1TLFFBQVEsS0FBSyxDQUFDVCxNQUFNUyxRQUFRLENBQUNyQixNQUFNLElBQ3BGWSxNQUFNUyxRQUFRLENBQUNFLElBQUksQ0FBQyxDQUFDNUIsVUFDdEIsQ0FBQ0EsV0FBVyxDQUFDO2dCQUFDO2dCQUFhO2dCQUFhO2dCQUFVO2FBQU8sQ0FBQ2UsUUFBUSxDQUFDZixRQUFRVSxJQUFJLEtBQUssQ0FBQ1gsb0JBQW9CQyxXQUFXO1lBQ3RILE1BQU0sSUFBSUwsK0JBQStCO1FBQzNDO0lBQ0YsT0FBTyxJQUFHLE9BQU9zQixNQUFNVSxNQUFNLEtBQUssWUFBWSxDQUFDVixNQUFNVSxNQUFNLENBQUN6QixJQUFJLElBQUk7UUFDbEUsTUFBTSxJQUFJUCwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTUcsUUFBUSxLQUFLLFlBQ2hCLENBQUEsQUFBQ0gsTUFBTVMsUUFBUSxLQUFLWixhQUFhRyxNQUFNRyxRQUFRLEtBQUssWUFBYUgsTUFBTVksZUFBZSxLQUFLZixhQUN6RjtRQUFDO1FBQVU7S0FBTyxDQUFDQyxRQUFRLENBQUNFLE1BQU1HLFFBQVEsS0FBS0gsTUFBTWEsY0FBYyxLQUFLaEIsU0FBUyxHQUFJO1FBQzNGLE1BQU0sSUFBSW5CLCtCQUNSO0lBRUo7SUFDQSxJQUFHc0IsTUFBTUcsUUFBUSxLQUFLLFlBQVlILE1BQU1TLFFBQVEsS0FBS1osYUFBY0csQ0FBQUEsTUFBTUssUUFBUSxLQUFLLFdBQVdMLE1BQU1jLE1BQU0sS0FBS2pCLGFBQWFHLE1BQU1TLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDNUIsQ0FBQUEsVUFBVyxDQUFDO1lBQUM7WUFBUTtTQUFZLENBQUNlLFFBQVEsQ0FBQ2YsUUFBUVUsSUFBSSxLQUFNUCxNQUFNQyxPQUFPLENBQUNKLFFBQVFDLE9BQU8sS0FBS0QsUUFBUUMsT0FBTyxDQUFDMkIsSUFBSSxDQUFDckIsQ0FBQUEsT0FBUUEsS0FBS0MsSUFBSSxLQUFLLFFBQVEsR0FBSTtRQUN2UyxNQUFNLElBQUliLCtCQUErQjtJQUMzQztJQUNBLElBQUdzQixNQUFNZSxTQUFTLEtBQUtsQixhQUNqQixDQUFBLENBQUNtQixPQUFPQyxTQUFTLENBQUNqQixNQUFNZSxTQUFTLEtBQUtmLE1BQU1lLFNBQVMsR0FBRyxLQUFLZixNQUFNZSxTQUFTLEdBQUcsYUFBWSxHQUFJO1FBQ25HLE1BQU0sSUFBSXJDLCtCQUErQjtJQUMzQztJQUNBLElBQUdzQixNQUFNWSxlQUFlLEtBQUtmLGFBQWEsQ0FBQztRQUFDO1FBQVE7UUFBVztRQUFPO1FBQVU7UUFBUTtRQUFTO0tBQU0sQ0FBQ0MsUUFBUSxDQUFDRSxNQUFNWSxlQUFlLEdBQUc7UUFDdkksTUFBTSxJQUFJbEMsK0JBQStCO0lBQzNDO0lBQ0EsTUFBTXdDLFNBQVNsQixNQUFNYSxjQUFjO0lBQ25DLElBQUdLLFdBQVdyQixhQUFjLENBQUEsQ0FBQ3FCLFVBQVUsQ0FBQztRQUFDO1FBQVE7UUFBZTtLQUFjLENBQUNwQixRQUFRLENBQUNvQixPQUFPM0IsSUFBSSxLQUFNMkIsT0FBTzNCLElBQUksS0FBSyxpQkFDdkgsQ0FBQSxPQUFPMkIsT0FBT0MsSUFBSSxLQUFLLFlBQVksQ0FBQyx3QkFBd0J4QixJQUFJLENBQUN1QixPQUFPQyxJQUFJLEtBQUssQ0FBQ0QsT0FBT0UsTUFBTSxJQUFJLE9BQU9GLE9BQU9FLE1BQU0sS0FBSyxZQUFZbEMsTUFBTUMsT0FBTyxDQUFDK0IsT0FBT0UsTUFBTSxLQUMvSkYsT0FBT0csTUFBTSxLQUFLeEIsYUFBYSxPQUFPcUIsT0FBT0csTUFBTSxLQUFLLFNBQVMsQ0FDdEUsR0FBSTtRQUNILE1BQU0sSUFBSTNDLCtCQUErQjtJQUMzQztJQUNBLElBQUc7UUFBQztRQUFVO0tBQVMsQ0FBQ29CLFFBQVEsQ0FBQ0UsTUFBTUcsUUFBUSxLQUFLZSxXQUFXckIsYUFBY3FCLENBQUFBLE9BQU8zQixJQUFJLEtBQUssaUJBQWlCUyxNQUFNSyxRQUFRLEtBQUssT0FBTSxHQUFJO1FBQ3pJLE1BQU0sSUFBSTNCLCtCQUErQjtJQUMzQztJQUNBLElBQUdzQixNQUFNc0IsSUFBSSxLQUFLekIsYUFBYyxDQUFBLENBQUM7UUFBQztRQUFVO0tBQVMsQ0FBQ0MsUUFBUSxDQUFDRSxNQUFNRyxRQUFRLEtBQUtILE1BQU1LLFFBQVEsS0FBSyxXQUFXLENBQUNXLE9BQU9PLFFBQVEsQ0FBQ3ZCLE1BQU1zQixJQUFJLEtBQUt0QixNQUFNc0IsSUFBSSxHQUFHLEtBQUt0QixNQUFNc0IsSUFBSSxHQUFHLENBQUEsR0FBSTtRQUNqTCxNQUFNLElBQUk1QywrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTXdCLFdBQVcsS0FBSzNCLGFBQWMsQ0FBQSxDQUFDO1FBQUM7UUFBVTtLQUFTLENBQUNDLFFBQVEsQ0FBQ0UsTUFBTUcsUUFBUSxLQUFLSCxNQUFNSyxRQUFRLEtBQUssV0FBVyxDQUFDVyxPQUFPTyxRQUFRLENBQUN2QixNQUFNd0IsV0FBVyxLQUFLeEIsTUFBTXdCLFdBQVcsR0FBRyxLQUFNeEIsTUFBTUcsUUFBUSxLQUFLLFlBQVlILE1BQU13QixXQUFXLEdBQUcsQ0FBQyxHQUFJO1FBQzlPLE1BQU0sSUFBSTlDLCtCQUErQjtJQUMzQztJQUNBLElBQUdzQixNQUFNeUIsU0FBUyxLQUFLNUIsYUFBYyxDQUFBLENBQUNtQixPQUFPQyxTQUFTLENBQUNqQixNQUFNeUIsU0FBUyxLQUFLekIsTUFBTXlCLFNBQVMsR0FBRyxDQUFBLEdBQUk7UUFDL0YsTUFBTSxJQUFJL0MsK0JBQStCO0lBQzNDO0lBQ0EsSUFBR3NCLE1BQU1HLFFBQVEsS0FBSyxZQUNoQixDQUFBLEFBQUNILE1BQU1jLE1BQU0sRUFBRTFCLFVBQVUsQ0FBQztRQUFDO1FBQVE7S0FBUyxDQUFDVSxRQUFRLENBQUNFLE1BQU1HLFFBQVEsS0FBTUgsTUFBTUssUUFBUSxLQUFLLFdBQVdMLE1BQU0wQixNQUFNLEFBQUQsR0FBSTtRQUMzSCxNQUFNLElBQUloRCwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHc0IsTUFBTUcsUUFBUSxLQUFLLFVBQVUsT0FBTzFCLHNCQUFzQnVCLE9BQU9DO0lBQ3BFLE1BQU0sRUFBQ1MsTUFBTSxFQUFFSSxTQUFTLEVBQUUsRUFBQyxHQUFHZDtJQUM5QixJQUFHQSxNQUFNRyxRQUFRLEtBQUssVUFBVTtRQUM5QixJQUFHLENBQUNGLE9BQU8wQixTQUFTLEVBQUU7WUFDcEIsTUFBTSxJQUFJakQsK0JBQStCO1FBQzNDO1FBQ0EsTUFBTWtELFdBQVcsTUFBTWhELEtBQUsseUNBQXlDO1lBQ25FaUQsWUFBWTdCLE1BQU15QixTQUFTLElBQUk7WUFDL0JoQixVQUFVO2dCQUFDO29CQUFDekIsU0FBUzBCO29CQUFRakIsTUFBTTtnQkFBTTthQUFFO1lBQzNDcUMsT0FBTzlCLE1BQU04QixLQUFLLElBQUk3QixPQUFPOEIsV0FBVyxJQUFJO1lBQzVDQyxRQUFRaEMsTUFBTWdDLE1BQU07UUFDdEIsR0FBRztZQUFDQyxPQUFPO1lBQU9DLFNBQVMsSUFBSUMsUUFBUTtnQkFBQyxxQkFBcUI7Z0JBQWMsYUFBYWxDLE9BQU8wQixTQUFTO1lBQUE7WUFBSVMsU0FBU3BDLE1BQU1lLFNBQVMsSUFBSTtRQUFPO1FBTS9JLElBQUdhLFNBQVNTLEtBQUssSUFBSTtZQUFDO1lBQXdCO1lBQXlCO1lBQW1CO1NBQW1CLENBQUN2QyxRQUFRLENBQUM4QixTQUFTUyxLQUFLLENBQUM5QyxJQUFJLElBQUksS0FBSztZQUNqSixNQUFNLElBQUliLCtCQUErQjtRQUMzQztRQUNBLE1BQU00RCxXQUFXdEMsTUFBTUksY0FBYyxLQUFLO1FBQzFDLElBQUdrQyxZQUFhLENBQUEsQ0FBQ3BELE1BQU1DLE9BQU8sQ0FBQ3lDLFNBQVM1QyxPQUFPLEtBQUs0QyxTQUFTNUMsT0FBTyxDQUFDMkIsSUFBSSxDQUFDLENBQUNyQixPQUN6RSxDQUFDQSxRQUFRLENBQUM7Z0JBQUM7Z0JBQVE7Z0JBQVk7YUFBb0IsQ0FBQ1EsUUFBUSxDQUFDUixLQUFLQyxJQUFJLElBQUksT0FBUUQsS0FBS0MsSUFBSSxLQUFLLFVBQVUsT0FBT0QsS0FBS0UsSUFBSSxLQUFLLFNBQVMsR0FBSTtZQUM1SSxNQUFNLElBQUliLCtCQUErQjtRQUMzQztRQUNBLE1BQU00RCxTQUFTLEFBQUNYLENBQUFBLFNBQVM1QyxPQUFPLEVBQUV3RCxPQUFPLENBQUNsRCxPQUFTQSxLQUFLQyxJQUFJLEtBQUssUUFBUWtELElBQUksQ0FBQ25ELE9BQVNBLEtBQUtFLElBQUksSUFBSSxPQUFPLEVBQUUsQUFBRCxFQUFHZ0QsTUFBTSxDQUFDaEQsQ0FBQUEsT0FBUVEsTUFBTU8sZ0JBQWdCLEtBQUssY0FBYyxDQUFDLENBQUNmLEtBQUtQLElBQUk7UUFDbEwsTUFBTU8sT0FBTzhDLFdBQVdDLE9BQU9HLElBQUksQ0FBQzFDLE1BQU1NLG1CQUFtQixJQUFJLE1BQU1pQyxPQUFPRyxJQUFJLENBQUMsTUFBTXpELElBQUk7UUFDN0YsSUFBRzJDLFNBQVNTLEtBQUssSUFBSVQsU0FBU3JDLElBQUksS0FBSyxhQUFhcUMsU0FBU2UsV0FBVyxLQUFLLGNBQWMsQ0FBQ25ELEtBQUtQLElBQUksSUFBSTtZQUN2RyxNQUFNLElBQUlOLCtCQUErQjtRQUMzQztRQUNBLE9BQU87WUFBQ2lFLFNBQVMsRUFBRTtZQUFFcEQ7UUFBSTtJQUMzQjtJQUNBLElBQUdRLE1BQU1HLFFBQVEsS0FBSyxZQUFZSCxNQUFNRyxRQUFRLEtBQUssUUFBUTtRQUMzRCxNQUFNMEMsT0FBTzdDLE1BQU1HLFFBQVEsS0FBSztRQUNoQyxNQUFNMkMsTUFBTUQsT0FBTzVDLE9BQU84QyxPQUFPLEdBQUc5QyxPQUFPK0MsU0FBUztRQUNwRCxJQUFHLENBQUNGLEtBQUs7WUFDUCxNQUFNLElBQUlwRSwrQkFBK0IsR0FBR21FLE9BQU8sU0FBUyxTQUFTLGtDQUFrQyxDQUFDO1FBQzFHO1FBQ0EsTUFBTWpCLFdBQVcsTUFBTWhELEtBQUtpRSxPQUFPLGtDQUFrQyx1Q0FBdUM7WUFDMUc3QyxPQUFPNkMsUUFBUS9CLE9BQU8xQixNQUFNLEdBQUc7Z0JBQUM7b0JBQUNKLFNBQVM7d0JBQUM7NEJBQUNRLE1BQU1rQjs0QkFBUW5CLE1BQU07d0JBQVk7MkJBQU11QixPQUFPMkIsR0FBRyxDQUFDLENBQUNRLFFBQVcsQ0FBQTtnQ0FBQ0MsV0FBVyxDQUFDLEtBQUssRUFBRUQsTUFBTUUsSUFBSSxDQUFDLFFBQVEsRUFBRUYsTUFBTUcsS0FBSyxDQUFDQyxRQUFRLENBQUMsV0FBVztnQ0FBRTlELE1BQU07NEJBQWEsQ0FBQTtxQkFBSTtvQkFBRUUsTUFBTTtnQkFBTTthQUFFLEdBQUdPLE1BQU1TLFFBQVEsRUFBRWdDLElBQUksQ0FBQzFELFVBQWEsQ0FBQTtvQkFBQ0MsU0FBUyxPQUFPRCxRQUFRQyxPQUFPLEtBQUssV0FBV0QsUUFBUUMsT0FBTyxHQUFHRCxRQUFRQyxPQUFPLENBQUN5RCxHQUFHLENBQUMsQ0FBQ25ELE9BQVVBLEtBQUtDLElBQUksS0FBSyxTQUMzVzs0QkFBQ0MsTUFBTUYsS0FBS0UsSUFBSTs0QkFBRUQsTUFBTTt3QkFBWSxJQUFJOzRCQUFDSyxRQUFRTixLQUFLTSxNQUFNLElBQUk7NEJBQVFzRCxXQUFXNUQsS0FBS0ksR0FBRzs0QkFBRUgsTUFBTTt3QkFBYTtvQkFBS0UsTUFBTVYsUUFBUVUsSUFBSSxLQUFLLFdBQVcsY0FBY1YsUUFBUVUsSUFBSTtnQkFBQSxDQUFBLE1BQU9pQjtZQUM1TDRDLGNBQWN0RCxNQUFNZ0MsTUFBTTtZQUMxQnVCLG1CQUFtQnZELE1BQU15QixTQUFTLElBQUk7WUFDdENLLE9BQU85QixNQUFNOEIsS0FBSyxJQUFLZSxDQUFBQSxPQUFPNUMsT0FBT3VELFNBQVMsSUFBSSxhQUFhdkQsT0FBT3dELFdBQVcsSUFBSSxhQUFZO1lBQ2pHLEdBQUl6RCxNQUFNWSxlQUFlLEdBQUc7Z0JBQUM4QyxXQUFXO29CQUFDQyxRQUFRM0QsTUFBTVksZUFBZTtnQkFBQTtZQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdFZ0QsT0FBTztZQUNQLEdBQUkxQyxTQUFTO2dCQUFDMUIsTUFBTTtvQkFBQzBCO2dCQUFNO1lBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsR0FBSSxDQUFDMkIsT0FBTztnQkFBQ2dCLFlBQVk7WUFBVSxJQUFJLENBQUMsQ0FBQztRQUMzQyxHQUFHO1lBQUM1QixPQUFPO1lBQU9DLFNBQVMsSUFBSUMsUUFBUTtnQkFBQzJCLGVBQWUsQ0FBQyxPQUFPLEVBQUVoQixLQUFLO1lBQUE7WUFBSVYsU0FBU3BDLE1BQU1lLFNBQVMsSUFBSTtRQUFPO1FBSzdHLElBQUdhLFNBQVNTLEtBQUssSUFBSTtZQUFDO1lBQXlCO1lBQXdCO1NBQW1CLENBQUN2QyxRQUFRLENBQUM4QixTQUFTUyxLQUFLLENBQUM5QyxJQUFJLElBQUksS0FBSztZQUM5SCxNQUFNLElBQUliLCtCQUErQixHQUFHbUUsT0FBTyxTQUFTLFNBQVMsMERBQTBELENBQUM7UUFDbEk7UUFDQSxJQUFHakIsU0FBU1MsS0FBSyxJQUFJVCxTQUFTbUMsTUFBTSxLQUFLLGVBQWVuQyxTQUFTb0MsTUFBTSxFQUFFckQsS0FBSyxDQUFDc0QsT0FBU0EsS0FBS0YsTUFBTSxLQUFLLGVBQWU7WUFDckgsTUFBTSxJQUFJcEYsK0JBQStCLEdBQUdrRSxPQUFPLFNBQVMsU0FBUyw4REFBOEQsQ0FBQztRQUN0STtRQUNBLElBQUdqQixTQUFTb0MsTUFBTSxFQUFFckQsS0FBSyxDQUFDc0QsT0FBU0EsS0FBS2pGLE9BQU8sRUFBRTJCLEtBQUssQ0FBQ3JCLE9BQVNBLEtBQUtDLElBQUksS0FBSyxhQUFhO1lBQ3pGLE1BQU0sSUFBSVosK0JBQStCLEdBQUdrRSxPQUFPLFNBQVMsU0FBUyxzQkFBc0IsQ0FBQztRQUM5RjtRQUNBLElBQUdqQixTQUFTb0MsTUFBTSxFQUFFckQsS0FBSyxDQUFDc0QsT0FBU0EsS0FBSzFFLElBQUksSUFBSSxDQUFDO2dCQUFDO2dCQUFXO2FBQVksQ0FBQ08sUUFBUSxDQUFDbUUsS0FBSzFFLElBQUksSUFBSTtZQUM5RixNQUFNLElBQUlaLCtCQUErQixHQUFHa0UsT0FBTyxTQUFTLFNBQVMscUNBQXFDLENBQUM7UUFDN0c7UUFDQSxNQUFNckQsT0FBT29DLFNBQVNvQyxNQUFNLEVBQUV4QixPQUFPLENBQUN5QixPQUFTQSxLQUFLMUUsSUFBSSxLQUFLLGFBQWNzRCxRQUFRLENBQUNvQixLQUFLMUUsSUFBSSxFQUFHMkUsUUFBUSxDQUFDRCxPQUFTQSxLQUFLakYsT0FBTyxJQUFJLEVBQUUsRUFDakl3RCxPQUFPLENBQUNsRCxPQUFTQSxLQUFLQyxJQUFJLEtBQUssZUFBZWtELElBQUksQ0FBQ25ELE9BQVNBLEtBQUtFLElBQUksSUFBSSxJQUFJa0QsS0FBSyxPQUFPO1FBQzVGLElBQUcsQ0FBQ2xELEtBQUtQLElBQUksSUFBSTtZQUNmLE1BQU0sSUFBSU4sK0JBQStCLEdBQUdrRSxPQUFPLFNBQVMsU0FBUyx1QkFBdUIsQ0FBQztRQUMvRjtRQUNBLE9BQU87WUFBQ0QsU0FBUyxFQUFFO1lBQUVwRCxNQUFNUSxNQUFNSSxjQUFjLEtBQUssYUFBYVosT0FBT0EsS0FBS1AsSUFBSTtRQUFFO0lBQ3JGO0lBQ0EsSUFBRyxDQUFDZ0IsT0FBT2tFLFNBQVMsRUFBRTtRQUNwQixNQUFNLElBQUl6RiwrQkFBK0I7SUFDM0M7SUFDQSxNQUFNMEYsUUFBbUI7UUFBQztZQUFDNUUsTUFBTWtCO1FBQU07V0FBTUksT0FBTzJCLEdBQUcsQ0FBQyxDQUFDUSxRQUFXLENBQUE7Z0JBQUNvQixZQUFZO29CQUFDQyxNQUFNckIsTUFBTUcsS0FBSyxDQUFDQyxRQUFRLENBQUM7b0JBQVdrQixVQUFVdEIsTUFBTUUsSUFBSTtnQkFBQTtZQUFDLENBQUE7S0FBSTtJQUNqSixNQUFNckIsUUFBUTlCLE1BQU04QixLQUFLLElBQUs5QixDQUFBQSxNQUFNSyxRQUFRLEtBQUssVUFBVUosT0FBT3VFLGdCQUFnQixJQUFJLDJCQUEyQnZFLE9BQU93RSxXQUFXLElBQUksa0JBQWlCO0lBQ3hKLElBQUcsQ0FBQyxvQkFBb0I5RSxJQUFJLENBQUNtQyxRQUFRO1FBQ25DLE1BQU0sSUFBSXBELCtCQUErQjtJQUMzQztJQUNBLE1BQU1rRCxXQUFXLE1BQU1oRCxLQUFLLENBQUMsd0RBQXdELEVBQUVrRCxNQUFNLGdCQUFnQixDQUFDLEVBQUU7UUFDOUc0QyxVQUFVMUUsTUFBTVMsUUFBUSxFQUFFZ0MsSUFBSTFELENBQUFBLFVBQVksQ0FBQTtnQkFBQ3FGLE9BQU8sT0FBT3JGLFFBQVFDLE9BQU8sS0FBSyxXQUFXO29CQUFDO3dCQUFDUSxNQUFNVCxRQUFRQyxPQUFPO29CQUFBO2lCQUFFLEdBQUdELFFBQVFDLE9BQU8sQ0FBQ3lELEdBQUcsQ0FBQ25ELENBQUFBLE9BQVMsQ0FBQTt3QkFBQ0UsTUFBTSxBQUFDRixLQUF3REUsSUFBSTtvQkFBQSxDQUFBO2dCQUFLQyxNQUFNVixRQUFRVSxJQUFJLEtBQUssY0FBYyxVQUFVO1lBQU0sQ0FBQSxNQUFPO1lBQUM7Z0JBQUMyRTtnQkFBTzNFLE1BQU07WUFBTTtTQUFFO1FBQzdTLEdBQUlPLE1BQU1nQyxNQUFNLEdBQUc7WUFBQzJDLG1CQUFtQjtnQkFBQ1AsT0FBTztvQkFBQzt3QkFBQzVFLE1BQU1RLE1BQU1nQyxNQUFNO29CQUFBO2lCQUFFO1lBQUE7UUFBQyxJQUFJLENBQUMsQ0FBQztRQUM1RTRDLGtCQUFrQjVFLE1BQU1LLFFBQVEsS0FBSyxVQUFVO1lBQUMsR0FBSUwsTUFBTTZFLFdBQVcsR0FBRztnQkFBQ0MsYUFBYTtvQkFBQ0QsYUFBYTdFLE1BQU02RSxXQUFXO2dCQUFBO1lBQUMsSUFBSSxDQUFDLENBQUM7WUFBR0Usb0JBQW9CO2dCQUFDO2dCQUFRO2FBQVE7UUFBQSxJQUFJO1lBQ3RLQyxpQkFBaUJoRixNQUFNeUIsU0FBUyxJQUFJO1lBQ3BDLEdBQUlQLFNBQVM7Z0JBQUMrRCxrQkFBa0IvRCxPQUFPM0IsSUFBSSxLQUFLLGdCQUFnQixxQkFBcUI7WUFBWSxJQUFJLENBQUMsQ0FBQztZQUN2RyxHQUFJUyxNQUFNd0IsV0FBVyxLQUFLM0IsWUFBWTtnQkFBQzJCLGFBQWF4QixNQUFNd0IsV0FBVztZQUFBLElBQUksQ0FBQyxDQUFDO1lBQzNFLEdBQUl4QixNQUFNc0IsSUFBSSxLQUFLekIsWUFBWTtnQkFBQ3lCLE1BQU10QixNQUFNc0IsSUFBSTtZQUFBLElBQUksQ0FBQyxDQUFDO1lBQ3RELEdBQUl0QixNQUFNUSxhQUFhLEtBQUtYLFlBQVk7Z0JBQUNxRixnQkFBZ0I7b0JBQUMxRSxlQUFlUixNQUFNUSxhQUFhO2dCQUFBO1lBQUMsSUFBSSxDQUFDLENBQUM7UUFDckc7UUFDQSxHQUFJUixNQUFNMEIsTUFBTSxHQUFHO1lBQUN5RCxPQUFPO2dCQUFDO29CQUFDQyxjQUFjLENBQUM7Z0JBQUM7YUFBRTtRQUFBLElBQUksQ0FBQyxDQUFDO0lBQ3ZELEdBQUc7UUFBQ25ELE9BQU87UUFBT0MsU0FBUyxJQUFJQyxRQUFRO1lBQUMsa0JBQWtCbEMsT0FBT2tFLFNBQVM7UUFBQTtRQUFJL0IsU0FBU3BDLE1BQU1lLFNBQVMsSUFBSTtJQUFPO0lBQ2pILElBQUdhLFNBQVNTLEtBQUssSUFBSTtRQUFDO1FBQUs7UUFBSztRQUFLO0tBQUksQ0FBQ3ZDLFFBQVEsQ0FBQzhCLFNBQVNTLEtBQUssQ0FBQ2dELElBQUksSUFBSSxJQUFJO1FBQzVFLE1BQU0sSUFBSTNHLCtCQUErQjtJQUMzQztJQUNBLElBQUdrRCxTQUFTMEQsY0FBYyxFQUFFQyxlQUFlM0QsU0FBU1MsS0FBSyxJQUFJLENBQUNULFNBQVM0RCxVQUFVLEVBQUVwRyxRQUFRO1FBQ3pGLE1BQU0sSUFBSVQsK0JBQStCO0lBQzNDO0lBQ0EsTUFBTThHLFlBQVk3RCxTQUFTNEQsVUFBVSxDQUFDLEVBQUU7SUFDeEMsSUFBR0MsVUFBVUMsWUFBWSxLQUFLLFFBQVE7UUFDcEMsTUFBTSxJQUFJL0csK0JBQStCO0lBQzNDO0lBQ0EsTUFBTTJELFdBQVd0QyxNQUFNSSxjQUFjLEtBQUs7SUFDMUMsSUFBR2tDLFlBQWEsQ0FBQSxDQUFDcEQsTUFBTUMsT0FBTyxDQUFDc0csVUFBVXpHLE9BQU8sRUFBRW9GLFVBQVVxQixVQUFVekcsT0FBTyxDQUFDb0YsS0FBSyxDQUFDekQsSUFBSSxDQUFDckIsQ0FBQUEsT0FBUSxDQUFDQSxRQUFTQSxLQUFLcUcsT0FBTyxLQUFLOUYsYUFBYSxPQUFPUCxLQUFLcUcsT0FBTyxLQUFLLGFBQWNDLE9BQU9DLElBQUksQ0FBQ3ZHLE1BQU1xQixJQUFJLENBQUNtQyxDQUFBQSxNQUFPLENBQUM7Z0JBQUM7Z0JBQVE7Z0JBQVc7YUFBbUIsQ0FBQ2hELFFBQVEsQ0FBQ2dELFNBQVUsQ0FBQ3hELEtBQUtxRyxPQUFPLElBQUksT0FBT3JHLEtBQUtFLElBQUksS0FBSyxTQUFTLEdBQUk7UUFDMVQsTUFBTSxJQUFJYiwrQkFBK0I7SUFDM0M7SUFDQSxNQUFNcUYsU0FBUyxBQUFDeUIsQ0FBQUEsVUFBVXpHLE9BQU8sRUFBRW9GLFNBQVMsRUFBRSxBQUFELEVBQUc1QixNQUFNLENBQUMsQ0FBQ2xELE9BQVMsQ0FBQ0EsS0FBS3FHLE9BQU87SUFDOUUsTUFBTUcsU0FBUzlCLE9BQU8rQixJQUFJLENBQUMsQ0FBQ3pHLE9BQVNBLEtBQUsrRSxVQUFVLEdBQUdBO0lBQ3ZELElBQUlwQjtJQUNKLElBQUc2QyxVQUFVO1FBQUM7UUFBYTtLQUFhLENBQUNoRyxRQUFRLENBQUNnRyxPQUFPdkIsUUFBUSxHQUFHO1FBQ2xFLE1BQU1uQixRQUFRNEMsT0FBT0MsSUFBSSxDQUFDSCxPQUFPeEIsSUFBSSxFQUFFO1FBQ3ZDLElBQUcsQ0FBQ2xCLE1BQU1oRSxNQUFNLElBQUlnRSxNQUFNaEUsTUFBTSxHQUFHLEtBQUssT0FBTyxNQUFNO1lBQ25ELE1BQU0sSUFBSVQsK0JBQStCO1FBQzNDO1FBQ0FzRSxRQUFRO1lBQUNHO1lBQU9ELE1BQU0yQyxPQUFPdkIsUUFBUTtRQUE4QjtJQUNyRTtJQUNBLE1BQU1oQyxTQUFTeUIsT0FBT3ZCLEdBQUcsQ0FBQyxDQUFDbkQsT0FBU0EsS0FBS0UsSUFBSSxJQUFJLElBQUlnRCxNQUFNLENBQUNoRCxDQUFBQSxPQUFRUSxNQUFNTyxnQkFBZ0IsS0FBSyxjQUFjLENBQUMsQ0FBQ2YsS0FBS1AsSUFBSTtJQUN4SCxNQUFNTyxPQUFPOEMsV0FBV0MsT0FBT0csSUFBSSxDQUFDMUMsTUFBTU0sbUJBQW1CLElBQUksTUFBTWlDLE9BQU9HLElBQUksQ0FBQyxNQUFNekQsSUFBSTtJQUM3RixJQUFHZSxNQUFNSyxRQUFRLEtBQUssVUFBVSxDQUFDNEMsUUFBUSxDQUFDekQsS0FBS1AsSUFBSSxJQUFJO1FBQ3JELE1BQU0sSUFBSU4sK0JBQStCO0lBQzNDO0lBQ0EsTUFBTWlFLFVBQVUsQUFBQzZDLENBQUFBLFVBQVVTLGlCQUFpQixFQUFFQyxtQkFBbUIsRUFBRSxBQUFELEVBQUdqQyxPQUFPLENBQUMsQ0FBQyxFQUFDa0MsR0FBRyxFQUFDO1FBQ2pGLElBQUk7WUFDRixNQUFNMUcsTUFBTSxJQUFJMkcsSUFBSUQsS0FBS0UsT0FBTztZQUNoQyxPQUFPNUcsSUFBSTZHLFFBQVEsS0FBSyxXQUFXO2dCQUFDO29CQUFDQyxPQUFPSixLQUFLSSxTQUFTOUcsSUFBSStHLFFBQVE7b0JBQUUvRyxLQUFLQSxJQUFJZ0gsSUFBSTtnQkFBQTthQUFFLEdBQUcsRUFBRTtRQUM5RixFQUFFLE9BQUs7WUFDTCxPQUFPLEVBQUU7UUFDWDtJQUNGO0lBQ0EsT0FBTztRQUNMekQ7UUFBTzBELHVCQUF1QmxCLFVBQVVTLGlCQUFpQixFQUFFVSxrQkFBa0JDO1FBQWlCakU7UUFBU3BEO0lBQ3pHO0FBQ0YsRUFBRSJ9
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
/** An accepted generation did not produce usable output; do not automatically resubmit it. */ export class ContentGenerationResponseError extends Error {
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbkVycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQSBjb25maXJtZWQgcmVqZWN0aW9uIGlzIGRpc3RpbmN0IGZyb20gYW4gdW5rbm93biBwYWlkIHN1Ym1pc3Npb24gb3V0Y29tZS4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuLyoqIEFuIGFjY2VwdGVkIGdlbmVyYXRpb24gZGlkIG5vdCBwcm9kdWNlIHVzYWJsZSBvdXRwdXQ7IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJlc3VibWl0IGl0LiAqL1xuZXhwb3J0IGNsYXNzIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXSwibmFtZXMiOlsiQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yIiwiRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRSxHQUMvRSxPQUFPLE1BQU1BLHVDQUF1Q0M7QUFBTztBQUMzRCw0RkFBNEYsR0FDNUYsT0FBTyxNQUFNQyx1Q0FBdUNEO0FBQU8ifQ==
|
|
@@ -6,7 +6,7 @@ export declare const ensureConversationMessagingAllowed: (context: ApiContext, c
|
|
|
6
6
|
export declare const parseConversationOptions: (options?: ConversationOptions) => {
|
|
7
7
|
limit: ArangoDbLimit;
|
|
8
8
|
};
|
|
9
|
-
export declare const getConversationListByUser: (context: ApiContext, userId: string, options?:
|
|
9
|
+
export declare const getConversationListByUser: (context: ApiContext, userId: string, options?: ConversationOptions) => Promise<ConversationType[]>;
|
|
10
10
|
export declare const getDirectConversation: (context: ApiContext, { fromId, toId, toUser }: DirectConversationParams) => Promise<ConversationType>;
|
|
11
11
|
export declare const addDirectConversation: (context: ApiContext, { fromId, toId, toUser }: DirectConversationParams) => Promise<ConversationType>;
|
|
12
12
|
export declare const getConnectionUserList: (context: ApiContext, { conversationId, includeAll, isDirect }: ConversationUsersParams) => Promise<ConnectionType[]>;
|