@lifeready/core 1.0.21 → 1.0.22
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/bundles/lifeready-core.umd.js +9745 -9700
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/run-outside-angular.js +2 -2
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/api/lr-apollo.service.js +3 -3
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
- package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.gql.js +1 -28
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
- package/esm2015/lib/category/category.gql.js +1 -1
- package/esm2015/lib/category/category.service.js +6 -6
- package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
- package/esm2015/lib/contact-card/contact-card.service.js +154 -0
- package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
- package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
- package/esm2015/lib/encryption/encryption.service.js +189 -0
- package/esm2015/lib/file-upload/file-upload.service.js +74 -0
- package/esm2015/lib/file-upload/file-upload.types.js +1 -0
- package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
- package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
- package/esm2015/lib/items2/item2.service.js +20 -20
- package/esm2015/lib/key/key-factory.service.js +237 -0
- package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
- package/esm2015/lib/key/key-meta.service.js +200 -0
- package/esm2015/lib/key/key.service.js +124 -0
- package/esm2015/lib/key/key.types.js +11 -0
- package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
- package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
- package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
- package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
- package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
- package/esm2015/lib/lbop/lbop.service.js +355 -0
- package/esm2015/lib/life-ready.module.js +2 -27
- package/esm2015/lib/lock/lock.gql.js +40 -0
- package/esm2015/lib/lock/lock.service.js +64 -0
- package/esm2015/lib/message/message.gql.js +32 -0
- package/esm2015/lib/message/message.service.js +116 -0
- package/esm2015/lib/message/message.types.js +1 -0
- package/esm2015/lib/password/password.gql.js +28 -0
- package/esm2015/lib/password/password.service.js +315 -0
- package/esm2015/lib/persist/persist.service.js +180 -0
- package/esm2015/lib/profile/profile-details.service.js +214 -0
- package/esm2015/lib/profile/profile.gql.js +97 -0
- package/esm2015/lib/profile/profile.service.js +169 -0
- package/esm2015/lib/profile/profile.types.js +34 -0
- package/esm2015/lib/record/record-attachment.service.js +15 -15
- package/esm2015/lib/record/record.service.js +3 -3
- package/esm2015/lib/register/register.service.js +172 -0
- package/esm2015/lib/scenario/scenario.controller.js +2 -2
- package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
- package/esm2015/lib/scenario/scenario.service.js +9 -9
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/slip39/slip39.service.js +169 -0
- package/esm2015/lib/time/time.service.js +146 -0
- package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
- package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
- package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
- package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
- package/esm2015/lib/two-factor/two-factor.service.js +74 -0
- package/esm2015/lib/user/user.gql.js +60 -0
- package/esm2015/lib/user/user.service.js +79 -0
- package/esm2015/lib/user/user.types.js +1 -0
- package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
- package/esm2015/lifeready-core.js +15 -13
- package/esm2015/public-api.js +49 -51
- package/fesm2015/lifeready-core.js +9232 -9214
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/types.d.ts +3 -1
- package/lib/api/lr-apollo.service.d.ts +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
- package/lib/api/query-processor/common-processors.service.d.ts +1 -1
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +11 -0
- package/lib/auth/auth.gql.d.ts +0 -3
- package/lib/auth/auth.types.d.ts +2 -2
- package/lib/auth/life-ready-auth.service.d.ts +12 -12
- package/lib/category/category.gql.d.ts +1 -1
- package/lib/category/category.service.d.ts +2 -2
- package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
- package/lib/contact-card/contact-card2.gql.d.ts +25 -0
- package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
- package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
- package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
- package/lib/file-upload/file-upload.types.d.ts +5 -0
- package/lib/{auth → idle}/idle.service.d.ts +4 -4
- package/lib/items2/item2.service.d.ts +11 -11
- package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
- package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
- package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
- package/lib/{cryptography → key}/key.service.d.ts +2 -2
- package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
- package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
- package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
- package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
- package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
- package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
- package/lib/{api → lock}/lock.gql.d.ts +1 -1
- package/lib/{api → lock}/lock.service.d.ts +1 -1
- package/lib/message/message.gql.d.ts +13 -0
- package/lib/message/message.service.d.ts +29 -0
- package/lib/message/message.types.d.ts +12 -0
- package/lib/password/password.gql.d.ts +3 -0
- package/lib/{auth → password}/password.service.d.ts +8 -8
- package/lib/{api → persist}/persist.service.d.ts +3 -3
- package/lib/{users → profile}/profile-details.service.d.ts +3 -3
- package/lib/{users → profile}/profile.gql.d.ts +2 -2
- package/lib/{users → profile}/profile.service.d.ts +6 -6
- package/lib/{users → profile}/profile.types.d.ts +1 -1
- package/lib/record/record-attachment.service.d.ts +6 -6
- package/lib/record/record.service.d.ts +1 -1
- package/lib/{auth → register}/register.service.d.ts +4 -4
- package/lib/scenario/scenario.controller.d.ts +1 -1
- package/lib/scenario/scenario.service.d.ts +2 -2
- package/lib/scenario/scenario.types.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
- package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
- package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
- package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
- package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
- package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
- package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
- package/lib/{users → user}/user.gql.d.ts +1 -1
- package/lib/{users → user}/user.types.d.ts +1 -1
- package/lifeready-core.d.ts +14 -12
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +48 -50
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -7
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -480
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/password.service.js +0 -315
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -1
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/message.service.d.ts +0 -59
- /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
- /package/lib/{auth → idle}/idle.types.d.ts +0 -0
- /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
- /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
- /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
- /package/lib/{api → time}/time.service.d.ts +0 -0
- /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
- /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
- /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
- /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
- /package/lib/{users → user}/user.service.d.ts +0 -0
- /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
|
@@ -116,4 +116,4 @@ export var LinkTypeField;
|
|
|
116
116
|
LinkTypeField["HARD"] = "HARD";
|
|
117
117
|
LinkTypeField["SOFT"] = "SOFT";
|
|
118
118
|
})(LinkTypeField || (LinkTypeField = {}));
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL3R5cGVzL2xyLWdyYXBocWwudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxVQUFVLFFBQVEsQ0FBSSxVQUF5QjtJQUNuRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQVFELE1BQU0sQ0FBTixJQUFZLGVBRVg7QUFGRCxXQUFZLGVBQWU7SUFDekIsMENBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUZXLGVBQWUsS0FBZixlQUFlLFFBRTFCO0FBTUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQixnQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsU0FBUyxLQUFULFNBQVMsUUFHcEI7QUEySUQsTUFBTSxDQUFOLElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUMxQixxQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBZSxDQUFBO0lBQ2YsaUNBQWEsQ0FBQTtJQUNiLG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFNM0I7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLDJDQUF1QixDQUFBO0lBQ3ZCLHFDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBWUQsTUFBTSxDQUFOLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUM1Qix1Q0FBaUIsQ0FBQTtJQUNqQixtQ0FBYSxDQUFBO0lBQ2Is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QixLQUF0QixzQkFBc0IsUUFPakM7QUF1SUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbm5lY3Rpb24sXG4gIERhdGVUaW1lLFxuICBHZW5lcmljU2NhbGFyLFxuICBJRCxcbiAgSlNPTk9iamVjdCxcbiAgSlNPTlN0cmluZyxcbiAgTHJFbWFpbCxcbiAgTm9kZSxcbiAgVGltZVN0YW1wZWQsXG59IGZyb20gJy4vZ3JhcGhxbC50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBFZGdlczxUPihjb25uZWN0aW9uOiBDb25uZWN0aW9uPFQ+KSB7XG4gIHJldHVybiBjb25uZWN0aW9uLmVkZ2VzLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlc05vZGUge1xuICBteVZhdWx0OiBzdHJpbmdbXTtcbiAgdHBWYXVsdDogc3RyaW5nW107XG4gIHNoYXJlVmF1bHQ6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBVc2VyRGVsZXRlU3RhdGUge1xuICBSRVFVRVNURUQgPSAnUkVRVUVTVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRGVsZXRlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBVc2VyRGVsZXRlU3RhdGU7XG59XG5cbmV4cG9ydCBlbnVtIFBsYW5TdGF0ZSB7XG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFuTm9kZSBleHRlbmRzIE5vZGUge1xuICBuYW1lPzogc3RyaW5nO1xuICBkYXRhPzogSlNPTlN0cmluZztcbiAgc3RhdGU/OiBQbGFuU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclBsYW5TdHJpcGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdWJzY3JpcHRpb25JZD86IHN0cmluZztcbiAgcHJpY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUGxhbk5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgcGxhbj86IFBsYW5Ob2RlO1xuICBwZXJpb2RFbmQ/OiBEYXRlVGltZTtcbiAgc3RyaXBlPzogVXNlclBsYW5TdHJpcGVOb2RlO1xuICBpc3N1ZXI/OiBVc2VyTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyU3RyaXBlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgY3VzdG9tZXI/OiBHZW5lcmljU2NhbGFyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3NLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXNzS2V5UGFyYW1zPzogR2VuZXJpY1NjYWxhcjtcbiAgcGFzc0lkcFBhcmFtcz86IEdlbmVyaWNTY2FsYXI7XG4gIHdyYXBwZWRQYXNzSWRwVmVyaWZpZXJQcms/OiBHZW5lcmljU2NhbGFyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGFzc0tleXM/OiBQYXNzS2V5Tm9kZVtdO1xuICBwYXNzS2V5PzogUGFzc0tleU5vZGU7XG4gIHJvb3RLZXk/OiBLZXlOb2RlO1xuICBtYXN0ZXJLZXk/OiBLZXlOb2RlO1xuICBweGs/OiBLZXlOb2RlO1xuICBzaWdQeGs/OiBLZXlOb2RlO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5vZGUgdHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGludGVyZmFjZSBVc2VyTm9kZSBleHRlbmRzIE5vZGUge1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgY29udGFjdENhcmRzPzogQ29ubmVjdGlvbjxDb250YWN0Q2FyZE5vZGU+O1xuICBjdXJyZW50VXNlcktleT86IEN1cnJlbnRVc2VyS2V5Tm9kZTtcbiAgb3duZWRDb250YWN0Q2FyZD86IFNoYXJlZENvbnRhY3RDYXJkTm9kZTtcbiAgcmVjZWl2ZWRDb250YWN0Q2FyZD86IFNoYXJlZENvbnRhY3RDYXJkTm9kZTtcbiAgaXNDdXJyZW50VXNlcj86IGJvb2xlYW47XG4gIGhhdmVUcD86IGJvb2xlYW47XG4gIHN0cmlwZT86IFVzZXJTdHJpcGVOb2RlO1xuICB1c2VyUGxhbnM/OiBDb25uZWN0aW9uPFVzZXJQbGFuTm9kZT47XG4gIHVzZXJEZWxldGU/OiBVc2VyRGVsZXRlTm9kZTtcbiAgZmVhdHVyZXM/OiBGZWF0dXJlc05vZGU7XG4gIHVzZXJGZWF0dXJlU3RhdGU/OiBVc2VyRmVhdHVyZVN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJGZWF0dXJlU3RhdGUgZXh0ZW5kcyBUaW1lU3RhbXBlZCB7XG4gIG5vdGlmaWNhdGlvbnNMYXN0Vmlld2VkPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyVGltZSB7XG4gIHRpbWVzdGFtcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYms/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBvd25lcj86IFVzZXJOb2RlO1xuICBwdWJsaWNEYXRhU2lnPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlU2lnPzogc3RyaW5nO1xuICBzaWdQeGs/OiBLZXlOb2RlO1xuICBkZWZhdWx0RnJvbT86IERhdGVUaW1lO1xuICBwdWJsaWNEYXRhPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAga2V5PzogS2V5Tm9kZTtcbiAgcGxhaW5EYXRhPzogc3RyaW5nO1xuICBwbGFpbkRhdGFTaWc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGxhaW5NZXRhPzogSlNPTlN0cmluZztcbiAgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIGNpcGhlck1ldGE/OiBzdHJpbmc7XG4gIGNpcGhlck1ldGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhcmNoaXZlZD86IGJvb2xlYW47XG4gIGtleUlkPzogSUQ7XG4gIGNoaWxkRmlsZUxpbmtzPzogQ29ubmVjdGlvbjxGaWxlTGlua05vZGU+O1xuICBjaGlsZERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIHBhcmVudERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IERpcmVjdG9yeUxpbmtOb2RlTHJOTGlzdDtcbiAgbkNoaWxkRGlyZWN0b3J5TGlua3M/OiBEaXJlY3RvcnlMaW5rTm9kZUxyTkxpc3Q7XG4gIG5DaGlsZEZpbGVMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGRlc2NlbmRhbnRzPzogRGVzY2VuZGFudHM7XG4gIGFjY2Vzc1JvbGVzPzogQWNjZXNzUm9sZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjdXJyZW50VmVyc2lvbj86IEZpbGVWZXJzaW9uTm9kZTtcbiAgYXJjaGl2ZWQ/OiBib29sZWFuO1xuICB2ZXJzaW9ucz86IENvbm5lY3Rpb248RmlsZVZlcnNpb25Ob2RlPjtcbiAga2V5SWQ/OiBJRDtcbiAgcGFyZW50RGlyZWN0b3J5TGlua3M/OiBDb25uZWN0aW9uPEZpbGVMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGFjY2Vzc1JvbGVzPzogQWNjZXNzUm9sZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpbmtOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXJlbnREaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xuICBjaGlsZERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGxpbmtUeXBlPzogTGlua1R5cGVGaWVsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTGlua05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBhcmVudERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGNoaWxkRmlsZT86IEZpbGVOb2RlO1xuICBsaW5rVHlwZT86IExpbmtUeXBlRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlua05vZGVMck5MaXN0IHtcbiAgbGlzdD86IERpcmVjdG9yeUxpbmtOb2RlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxpbmtOb2RlTHJOTGlzdCB7XG4gIGxpc3Q/OiBGaWxlTGlua05vZGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjZW5kYW50cyB7XG4gIGRpcmVjdG9yaWVzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlOb2RlPjtcbiAgZmlsZXM/OiBDb25uZWN0aW9uPEZpbGVOb2RlPjtcbiAgZGlyZWN0b3JpZXNDb3VudD86IG51bWJlcjtcbiAgZmlsZXNDb3VudD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gQWNjZXNzUm9sZUNob2ljZSB7XG4gIFJFQURFUiA9ICdSRUFERVInLFxuICBXUklURVIgPSAnV1JJVEVSJyxcbiAgQURNSU4gPSAnQURNSU4nLFxuICBERU5ZID0gJ0RFTlknLFxuICBPV05FUiA9ICdPV05FUicsXG59XG5cbmV4cG9ydCBlbnVtIEFjY2Vzc1JvbGVNZXRob2Qge1xuICBpbmhlcml0ZWQgPSAnaW5oZXJpdGVkJyxcbiAgZGlyZWN0ID0gJ2RpcmVjdCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzUm9sZSB7XG4gIGlzc3Vlcj86IFVzZXJOb2RlO1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHJvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kO1xuICBpbmhlcml0ZWRGcm9tPzogRGlyZWN0b3J5Tm9kZTtcbiAgdHJ1c3RlZFBhcnR5PzogVHBOb2RlO1xuICBpc0lzc3Vlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEZpbGVPcGVyYXRpb25GaWVsZCB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBSRUFEID0gJ1JFQUQnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcbiAgUkVWRVJUID0gJ1JFVkVSVCcsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVWZXJzaW9uTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZmlsZT86IEZpbGVOb2RlO1xuICBzdGF0ZT86IEZpbGVTdGF0ZU5vZGU7XG4gIG9wZXJhdGlvbj86IEZpbGVPcGVyYXRpb25GaWVsZDtcbiAgYXV0aG9yPzogVXNlck5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTdGF0ZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBsYWluTWV0YT86IEpTT05TdHJpbmc7XG4gIHBsYWluTWV0YUpzb24/OiBKU09OT2JqZWN0O1xuICBjaXBoZXJNZXRhPzogc3RyaW5nO1xuICBjaXBoZXJNZXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgY29udGVudFJlc291cmNlPzogc3RyaW5nO1xuICB2ZXJzaW9ucz86IENvbm5lY3Rpb248RmlsZVZlcnNpb25Ob2RlPjtcbiAga2V5SWQ6IElEO1xufVxuXG5leHBvcnQgZW51bSBLZXlFeGNoYW5nZU90a1N0YXRlIHtcbiAgT1RLX0lOSVRJQVRFRCA9ICdPVEtfSU5JVElBVEVEJyxcbiAgT1RLX0FDQ0VQVEVEID0gJ09US19BQ0NFUFRFRCcsXG4gIE9US19DT01QTEVURUQgPSAnT1RLX0NPTVBMRVRFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhIHtcbiAgLy8gU2hhcmVkIHJlYWQgYWNjZXNzIGJldHdlZW4gaW5pdGlhdG9yIGFuZCByZXNwb25kZXIuIEJ1dCBvbmx5IHRoZSBpbml0aWF0b3IgaGFzIHdyaXRlIGFjY2Vzcy5cbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogSlNPTk9iamVjdDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgdGhlIG9uZS10aW1lIGtleSBjaXBoZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdEtleUNpcGhlckNsZWFySnNvbjIge1xuICAvLyBVc2VkIHRvIGNvbmZpcm0gdG8gdGhlIGluaXRpYXRvciB0aGF0IHRoZSByZXNwb25kZXIgaGFzIGFjY2VzcyB0byB0aGUgb25lLXRpbWUga2V5LlxuICBub25jZTogc3RyaW5nO1xuICAvLyBEYXRhIHNlbnQgZnJvbSBpbml0aWF0b3IgdG8gdGhlIHJlc3BvbmRlclxuICBpbml0aWF0b3I6IHtcbiAgICBvbmVUaW1lUGJrOiBvYmplY3Q7IC8vIG9uZS10aW1lIHB1YmxpYyBlbmNyeXB0aW9uIGtleSB0aGUgcmVzcG9uZGVyIHdpbGwgdXNlIHRvIHNlbmQgZGF0YSBiYWNrIHRvIHRoZSBpbml0aWF0b3JcbiAgICBwYms6IG9iamVjdDsgLy8gcHVibGljIGVuY3J5cHRpb24ga2V5XG4gICAgc2lnUGJrOiBvYmplY3Q7IC8vIHB1YmxpYyBzaWduaW5nIGtleVxuICAgIG1lc3NhZ2U/OiBKU09OT2JqZWN0O1xuICAgIGNvbnRhY3RDYXJkPzogQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlT3RrTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBLZXlFeGNoYW5nZU90a1N0YXRlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1NoYXJlZEtleT86IEtleU5vZGU7XG4gIGluaXRpYXRvclNpZ1B4az86IEtleU5vZGU7XG4gIHJlc3BvbmRlclNpZ1B4az86IEtleU5vZGU7XG4gIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI/OiBzdHJpbmc7XG4gIG90S2V5UGFyYW1zPzogc3RyaW5nO1xuICBvdEtleUNpcGhlcj86IHN0cmluZztcbiAgb3RLZXlDaXBoZXJDbGVhckpzb24/OiBPdEtleUNpcGhlckNsZWFySnNvbjI7XG4gIHJlc3BvbmRlclBia0NpcGhlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gS2V5RXhjaGFuZ2VTdGF0ZSB7XG4gIElOX1BST0dSRVNTID0gJ0lOX1BST0dSRVNTJyxcbiAgQ09NUExFVEVEID0gJ0NPTVBMRVRFRCcsXG4gIERFQ0xJTkVEID0gJ0RFQ0xJTkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIERFTEVURUQgPSAnREVMRVRFRCcsXG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlTW9kZSB7XG4gIE9USyA9ICdPVEsnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZXhwaXJ5VGltZT86IERhdGVUaW1lO1xuICB0b2tlbj86IHN0cmluZztcbiAgdG9rZW5FeHBpcnlUaW1lPzogRGF0ZVRpbWU7XG4gIHN0YXRlPzogS2V5RXhjaGFuZ2VTdGF0ZTtcbiAgbW9kZT86IEtleUV4Y2hhbmdlTW9kZTtcbiAgaW5pdGlhdG9yPzogVXNlck5vZGU7XG4gIHJlc3BvbmRlcj86IFVzZXJOb2RlO1xuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICByZXNwb25kZXJSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICBpbml0aWF0b3JBY3Rpb25SZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlc3BvbmRlckFjdGlvblJlcXVpcmVkPzogYm9vbGVhbjtcbiAgY3JlYXRlVHA/OiBib29sZWFuO1xuICBvdGs/OiBLZXlFeGNoYW5nZU90a05vZGU7XG4gIGlzSW5pdGlhdG9yPzogYm9vbGVhbjtcbiAgaXNFeHBpcmVkPzogYm9vbGVhbjtcbiAgcmVzcG9uZGVyRW1haWxBZGRyZXNzPzogTHJFbWFpbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRJdGVtcyB7XG4gIGRpcmVjdG9yaWVzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlOb2RlPjtcbiAgZmlsZXM/OiBDb25uZWN0aW9uPEZpbGVOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRDb250YWN0Q2FyZE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIG93bmVyPzogVXNlck5vZGU7XG4gIHJlY2VpdmVyPzogVXNlck5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzaGFyZWRDaXBoZXJEYXRhU2lnPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhU2lnUHhrPzogS2V5Tm9kZTtcbiAgb3duZXJDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBvd25lckNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBvd25lcktleT86IEtleU5vZGU7XG4gIG93bmVyUGxhaW5EYXRhPzogc3RyaW5nO1xuICBvd25lclBsYWluRGF0YUpzb24/OiBKU09OT2JqZWN0O1xuICBvd25lclBsYWluRGF0YVNpZz86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJEYXRhPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlcktleT86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclNoYXJlZEtleU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGtleUV4Y2hhbmdlPzogS2V5RXhjaGFuZ2VOb2RlO1xuICB1c2VyPzogVXNlck5vZGU7XG4gIHVzZXJQcms/OiBLZXlOb2RlO1xuICB1c2VyU2lnUHJrPzogS2V5Tm9kZTtcbiAgb3RoZXI/OiBVc2VyTm9kZTtcbiAgb3RoZXJQYms/OiBLZXlOb2RlO1xuICBvdGhlclNpZ1Biaz86IEtleU5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIG1rU2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgbWtQeGs/OiBLZXlOb2RlO1xuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyPzogc3RyaW5nO1xuICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlcj86IHN0cmluZztcbiAgbWtSZXNoYXJlUmVxdWVzdENpcGhlckNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgbWtSZXNoYXJlUmVxdWVzdFNlbnQ/OiBib29sZWFuO1xuICBta1Jlc2hhcmVSZXNwb25zZVNlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyU2hhcmVkS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgdXNlcj86IFVzZXJOb2RlO1xuICBvdGhlcj86IFVzZXJOb2RlO1xuICB1c2VyU2hhcmVkS2V5PzogVXNlclNoYXJlZEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB1c2VyPzogVXNlck5vZGU7XG4gIG90aGVyPzogVXNlck5vZGU7XG4gIGN1cnJlbnRVc2VyU2hhcmVkS2V5PzogQ3VycmVudFVzZXJTaGFyZWRLZXlOb2RlO1xuICBpc0NvbXBsZXRlZD86IGJvb2xlYW47XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICBteUNvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICBteUl0ZW1zPzogU2hhcmVkSXRlbXM7XG4gIHNoYXJlZEl0ZW1zPzogU2hhcmVkSXRlbXM7XG4gIG15U2NlbmFyaW9zPzogQ29ubmVjdGlvbjxTY2VuYXJpb05vZGU+O1xuICBzaGFyZWRTY2VuYXJpb3M/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvTm9kZT47XG59XG5cbmV4cG9ydCBlbnVtIFRwQXNzZW1ibHlTdGF0ZSB7XG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBlbnVtIFRwQ2xhaW1TdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgZW51bSBUcENsYWltQXBwcm92ZXJTdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldEFwcHJvdmFsIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhcHByb3ZlckVtYWlsPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHJlY2VpdmVyQ2lwaGVyPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Pzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFwcHJvdmVyRW1haWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHN0YXRlPzogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlclN1YkFzc2VtYmx5IHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBhcHByb3ZlcnM/OiBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHkge1xuICBzaW5nbGVSZWplY3Q/OiBib29sZWFuO1xuICBxdW9ydW0/OiBudW1iZXI7XG4gIHN1YkFzc2VtYmxpZXM/OiBUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZSB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICByZXNldFVzZXJuYW1lPzogc3RyaW5nO1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbiAgcGFzc0tleT86IFBhc3NLZXlOb2RlO1xuICBtYXN0ZXJLZXk/OiBLZXlOb2RlO1xuICBweGs/OiBLZXlOb2RlO1xuICBzZXNzaW9uRW5jcnlwdGlvbktleT86IHN0cmluZztcbiAgYXBwcm92YWxzPzogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZVtdO1xuICBhc3NlbWJseUNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrPzogc3RyaW5nO1xuICBhc3NlbWJseT86IFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhc3NlbWJseT86IFRwQXNzZW1ibHlOb2RlO1xuICByZXF1ZXN0PzogVHBQYXNzd29yZFJlc2V0UmVxdWVzdE5vZGU7XG4gIGFwcGxpZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgaWQ/OiBJRDtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJqZWN0S2V5PzogS2V5Tm9kZTtcbiAgc3ViamVjdENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYXNzZW1ibHlLZXk/OiBLZXlOb2RlO1xuICBhc3NlbWJseUNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIGFzc2VtYmx5Q2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHN1YkFzc2VtYmxpZXM/OiBDb25uZWN0aW9uPFRwU3ViQXNzZW1ibHlOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFN1YkFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJqZWN0Q2lwaGVyRGF0YT86IHN0cmluZztcbiAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24/OiBzdHJpbmc7XG4gIGFwcHJvdmVycz86IENvbm5lY3Rpb248VHBBc3NlbWJseUFwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgdHA/OiBUcE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXNzZW1ibHk/OiBTaGFyZWRUcEFzc2VtYmx5Tm9kZTtcbiAgdHA/OiBUcE5vZGU7XG4gIHNoYXJlZFJlcXVlc3Q/OiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcEFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXNBcHByb3ZlcnM/OiBDb25uZWN0aW9uPFRwQXNzZW1ibHlBc0FwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseUFzQXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjbGFpbT86IFNoYXJlZFRwQ2xhaW1Ob2RlO1xuICBweGs/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQ2xhaW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbiAgYXNDbGFpbUFwcHJvdmVycz86IENvbm5lY3Rpb248U2hhcmVkVHBDbGFpbUFwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBDbGFpbUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyQXBwcm92YWxzPzogQ29ubmVjdGlvbjxTaGFyZWRUcENsYWltUmVjZWl2ZXJBcHByb3ZhbE5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQ2xhaW1SZWNlaXZlckFwcHJvdmFsTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcHhrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGVudW0gTG9ja1N0YXRlIHtcbiAgVU5MT0NLRUQgPSAnVU5MT0NLRUQnLFxuICBNVVRFWF9MT0NLRUQgPSAnTVVURVhfTE9DS0VEJyxcbn1cblxuZXhwb3J0IGVudW0gU2NlbmFyaW9TdGF0ZSB7XG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxufVxuXG5leHBvcnQgZW51bSBDbGFpbVN0YXRlIHtcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgRVhQSVJFRCA9ICdFWFBJUkVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBlbnVtIENsYWltQXBwcm92ZXJTdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxufVxuXG5leHBvcnQgZW51bSBTY2VuYXJpb0xhc3RDbGFpbVN0YXRlIHtcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9MYXRlc3RDbGFpbSB7XG4gIHN0YXRlPzogU2NlbmFyaW9MYXN0Q2xhaW1TdGF0ZTtcbiAgY3JlYXRlZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3ViamVjdD86IFVzZXJOb2RlO1xuICBzdWJqZWN0S2V5PzogS2V5Tm9kZTtcbiAgc3ViamVjdENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYXNzZW1ibHk/OiBUcEFzc2VtYmx5Tm9kZTtcbiAgc3RhdGU/OiBTY2VuYXJpb1N0YXRlO1xuICBjbGFpbWFudHM/OiBDb25uZWN0aW9uPFNjZW5hcmlvQ2xhaW1hbnROb2RlPjtcbiAgcmVjZWl2ZXJzPzogQ29ubmVjdGlvbjxTY2VuYXJpb1JlY2VpdmVyTm9kZT47XG4gIGNsYWltcz86IENvbm5lY3Rpb248U2NlbmFyaW9DbGFpbU5vZGU+O1xuICBjbGFpbT86IFNjZW5hcmlvQ2xhaW1Ob2RlO1xuICBhc3NlbWJseVN0YXRlPzogU2NlbmFyaW9Bc3NlbWJseVN0YXRlO1xuICBsYXRlc3RDbGFpbT86IFNjZW5hcmlvTGF0ZXN0Q2xhaW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9DbGFpbU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGNsYWltYW50PzogU2NlbmFyaW9DbGFpbWFudE5vZGU7XG4gIHN0YXRlPzogQ2xhaW1TdGF0ZTtcbiAgc2NlbmFyaW8/OiBTY2VuYXJpb05vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9Bc3NlbWJseVN0YXRlIHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJBc3NlbWJseVN0YXRlcz86IFNjZW5hcmlvU3ViQXNzZW1ibHlTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvU3ViQXNzZW1ibHlTdGF0ZSB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgYXBwcm92ZXJTdGF0ZXM/OiBTY2VuYXJpb0Fzc2VtYmx5QXBwcm92ZXJTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvQXNzZW1ibHlBcHByb3ZlclN0YXRlIHtcbiAgc3RhdGU/OiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHBiaz86IEtleU5vZGU7XG4gIHJlY2VpdmVyRGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlOb2RlPjtcbiAgcmVjZWl2ZXJGaWxlcz86IENvbm5lY3Rpb248U2NlbmFyaW9SZWNlaXZlckZpbGVOb2RlPjtcbiAgdHA/OiBUcE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9SZWNlaXZlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBiaz86IEtleU5vZGU7XG59XG5cbmV4cG9ydCB0eXBlIFJlY2VpdmVyRGlyZWN0b3J5QWNjZXNzUm9sZSA9IEFjY2Vzc1JvbGVDaG9pY2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9SZWNlaXZlckl0ZW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlcj86IFNoYXJlZFNjZW5hcmlvUmVjZWl2ZXJOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYWNjZXNzUm9sZT86IFJlY2VpdmVyRGlyZWN0b3J5QWNjZXNzUm9sZTtcbiAgd3JhcHBlZEl0ZW1LZXk/OiBzdHJpbmc7XG4gIGl0ZW1LZXk/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlOb2RlXG4gIGV4dGVuZHMgU2NlbmFyaW9SZWNlaXZlckl0ZW1Ob2RlIHtcbiAgZGlyZWN0b3J5PzogRGlyZWN0b3J5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVyRmlsZU5vZGUgZXh0ZW5kcyBTY2VuYXJpb1JlY2VpdmVySXRlbU5vZGUge1xuICBmaWxlPzogRmlsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9DbGFpbWFudE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHRwPzogVHBOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN1YmplY3Q/OiBVc2VyTm9kZTtcbiAgc3RhdGU/OiBTY2VuYXJpb1N0YXRlO1xuICB0cD86IFRwTm9kZTtcbiAgYXNDbGFpbWFudD86IFNjZW5hcmlvQ2xhaW1hbnROb2RlO1xuICBhc1JlY2VpdmVyPzogU2NlbmFyaW9SZWNlaXZlck5vZGU7XG4gIGFzc2VtYmx5PzogU2hhcmVkVHBBc3NlbWJseU5vZGU7XG4gIHNoYXJlZENsYWltPzogU2hhcmVkU2NlbmFyaW9DbGFpbU5vZGU7XG4gIGFzc2VtYmx5U3RhdGU/OiBTY2VuYXJpb0Fzc2VtYmx5U3RhdGU7XG4gIGxhdGVzdENsYWltPzogU2NlbmFyaW9MYXRlc3RDbGFpbTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBDbGFpbVN0YXRlO1xuICBzaGFyZWRTY2VuYXJpbz86IFNoYXJlZFNjZW5hcmlvTm9kZTtcbiAgaXNDbGFpbWFudD86IGJvb2xlYW47XG4gIGFzQ2xhaW1SZWNlaXZlcj86IFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlck5vZGU7XG4gIGNsYWltOiBTaGFyZWRUcENsYWltTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltQXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlcnM/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvUmVjZWl2ZXJOb2RlPjtcbiAgc3RhdGU/OiBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gIGFwcHJvdmVyPzogVHBBc3NlbWJseUFwcHJvdmVyTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlZD86IERhdGVUaW1lO1xuICBhcHByb3ZhbHM/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlZEFwcHJvdmFsTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVkQXBwcm92YWxOb2RlXG4gIGV4dGVuZHMgTm9kZSxcbiAgICBUaW1lU3RhbXBlZCB7XG4gIHJlY2VpdmVyQ2lwaGVyPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcHhrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwbGFpbkRhdGE/OiBKU09OU3RyaW5nO1xuICBwbGFpbk1ldGE/OiBKU09OU3RyaW5nO1xuICB0aW1lUmVhZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1hbmFnZW1lbnRTdGF0ZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgbGFzdFZpZXdlZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgZW51bSBMaW5rVHlwZUZpZWxkIHtcbiAgSEFSRCA9ICdIQVJEJyxcbiAgU09GVCA9ICdTT0ZUJyxcbn1cbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL3R5cGVzL2xyLWdyYXBocWwudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxVQUFVLFFBQVEsQ0FBSSxVQUF5QjtJQUNuRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQVFELE1BQU0sQ0FBTixJQUFZLGVBRVg7QUFGRCxXQUFZLGVBQWU7SUFDekIsMENBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUZXLGVBQWUsS0FBZixlQUFlLFFBRTFCO0FBTUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQixnQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsU0FBUyxLQUFULFNBQVMsUUFHcEI7QUEySUQsTUFBTSxDQUFOLElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUMxQixxQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBZSxDQUFBO0lBQ2YsaUNBQWEsQ0FBQTtJQUNiLG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFNM0I7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLDJDQUF1QixDQUFBO0lBQ3ZCLHFDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBWUQsTUFBTSxDQUFOLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUM1Qix1Q0FBaUIsQ0FBQTtJQUNqQixtQ0FBYSxDQUFBO0lBQ2Is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QixLQUF0QixzQkFBc0IsUUFPakM7QUF3SUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbm5lY3Rpb24sXG4gIERhdGVUaW1lLFxuICBHZW5lcmljU2NhbGFyLFxuICBJRCxcbiAgSlNPTk9iamVjdCxcbiAgSlNPTlN0cmluZyxcbiAgTHJFbWFpbCxcbiAgTm9kZSxcbiAgVGltZVN0YW1wZWQsXG59IGZyb20gJy4vZ3JhcGhxbC50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBFZGdlczxUPihjb25uZWN0aW9uOiBDb25uZWN0aW9uPFQ+KSB7XG4gIHJldHVybiBjb25uZWN0aW9uLmVkZ2VzLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlc05vZGUge1xuICBteVZhdWx0OiBzdHJpbmdbXTtcbiAgdHBWYXVsdDogc3RyaW5nW107XG4gIHNoYXJlVmF1bHQ6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBVc2VyRGVsZXRlU3RhdGUge1xuICBSRVFVRVNURUQgPSAnUkVRVUVTVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRGVsZXRlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBVc2VyRGVsZXRlU3RhdGU7XG59XG5cbmV4cG9ydCBlbnVtIFBsYW5TdGF0ZSB7XG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFuTm9kZSBleHRlbmRzIE5vZGUge1xuICBuYW1lPzogc3RyaW5nO1xuICBkYXRhPzogSlNPTlN0cmluZztcbiAgc3RhdGU/OiBQbGFuU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclBsYW5TdHJpcGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdWJzY3JpcHRpb25JZD86IHN0cmluZztcbiAgcHJpY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUGxhbk5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgcGxhbj86IFBsYW5Ob2RlO1xuICBwZXJpb2RFbmQ/OiBEYXRlVGltZTtcbiAgc3RyaXBlPzogVXNlclBsYW5TdHJpcGVOb2RlO1xuICBpc3N1ZXI/OiBVc2VyTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyU3RyaXBlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgY3VzdG9tZXI/OiBHZW5lcmljU2NhbGFyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3NLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXNzS2V5UGFyYW1zPzogR2VuZXJpY1NjYWxhcjtcbiAgcGFzc0lkcFBhcmFtcz86IEdlbmVyaWNTY2FsYXI7XG4gIHdyYXBwZWRQYXNzSWRwVmVyaWZpZXJQcms/OiBHZW5lcmljU2NhbGFyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGFzc0tleXM/OiBQYXNzS2V5Tm9kZVtdO1xuICBwYXNzS2V5PzogUGFzc0tleU5vZGU7XG4gIHJvb3RLZXk/OiBLZXlOb2RlO1xuICBtYXN0ZXJLZXk/OiBLZXlOb2RlO1xuICBweGs/OiBLZXlOb2RlO1xuICBzaWdQeGs/OiBLZXlOb2RlO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5vZGUgdHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGludGVyZmFjZSBVc2VyTm9kZSBleHRlbmRzIE5vZGUge1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgY29udGFjdENhcmRzPzogQ29ubmVjdGlvbjxDb250YWN0Q2FyZE5vZGU+O1xuICBjdXJyZW50VXNlcktleT86IEN1cnJlbnRVc2VyS2V5Tm9kZTtcbiAgb3duZWRDb250YWN0Q2FyZD86IFNoYXJlZENvbnRhY3RDYXJkTm9kZTtcbiAgcmVjZWl2ZWRDb250YWN0Q2FyZD86IFNoYXJlZENvbnRhY3RDYXJkTm9kZTtcbiAgaXNDdXJyZW50VXNlcj86IGJvb2xlYW47XG4gIGhhdmVUcD86IGJvb2xlYW47XG4gIHN0cmlwZT86IFVzZXJTdHJpcGVOb2RlO1xuICB1c2VyUGxhbnM/OiBDb25uZWN0aW9uPFVzZXJQbGFuTm9kZT47XG4gIHVzZXJEZWxldGU/OiBVc2VyRGVsZXRlTm9kZTtcbiAgZmVhdHVyZXM/OiBGZWF0dXJlc05vZGU7XG4gIHVzZXJGZWF0dXJlU3RhdGU/OiBVc2VyRmVhdHVyZVN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJGZWF0dXJlU3RhdGUgZXh0ZW5kcyBUaW1lU3RhbXBlZCB7XG4gIG5vdGlmaWNhdGlvbnNMYXN0Vmlld2VkPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyVGltZSB7XG4gIHRpbWVzdGFtcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYms/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBvd25lcj86IFVzZXJOb2RlO1xuICBwdWJsaWNEYXRhU2lnPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlU2lnPzogc3RyaW5nO1xuICBzaWdQeGs/OiBLZXlOb2RlO1xuICBkZWZhdWx0RnJvbT86IERhdGVUaW1lO1xuICBwdWJsaWNEYXRhPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAga2V5PzogS2V5Tm9kZTtcbiAgcGxhaW5EYXRhPzogc3RyaW5nO1xuICBwbGFpbkRhdGFTaWc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGxhaW5NZXRhPzogSlNPTlN0cmluZztcbiAgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIGNpcGhlck1ldGE/OiBzdHJpbmc7XG4gIGNpcGhlck1ldGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhcmNoaXZlZD86IGJvb2xlYW47XG4gIGtleUlkPzogSUQ7XG4gIGNoaWxkRmlsZUxpbmtzPzogQ29ubmVjdGlvbjxGaWxlTGlua05vZGU+O1xuICBjaGlsZERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIHBhcmVudERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IERpcmVjdG9yeUxpbmtOb2RlTHJOTGlzdDtcbiAgbkNoaWxkRGlyZWN0b3J5TGlua3M/OiBEaXJlY3RvcnlMaW5rTm9kZUxyTkxpc3Q7XG4gIG5DaGlsZEZpbGVMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGRlc2NlbmRhbnRzPzogRGVzY2VuZGFudHM7XG4gIGFjY2Vzc1JvbGVzPzogQWNjZXNzUm9sZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjdXJyZW50VmVyc2lvbj86IEZpbGVWZXJzaW9uTm9kZTtcbiAgYXJjaGl2ZWQ/OiBib29sZWFuO1xuICB2ZXJzaW9ucz86IENvbm5lY3Rpb248RmlsZVZlcnNpb25Ob2RlPjtcbiAga2V5SWQ/OiBJRDtcbiAgcGFyZW50RGlyZWN0b3J5TGlua3M/OiBDb25uZWN0aW9uPEZpbGVMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGFjY2Vzc1JvbGVzPzogQWNjZXNzUm9sZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpbmtOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXJlbnREaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xuICBjaGlsZERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGxpbmtUeXBlPzogTGlua1R5cGVGaWVsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTGlua05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBhcmVudERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGNoaWxkRmlsZT86IEZpbGVOb2RlO1xuICBsaW5rVHlwZT86IExpbmtUeXBlRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlua05vZGVMck5MaXN0IHtcbiAgbGlzdD86IERpcmVjdG9yeUxpbmtOb2RlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxpbmtOb2RlTHJOTGlzdCB7XG4gIGxpc3Q/OiBGaWxlTGlua05vZGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjZW5kYW50cyB7XG4gIGRpcmVjdG9yaWVzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlOb2RlPjtcbiAgZmlsZXM/OiBDb25uZWN0aW9uPEZpbGVOb2RlPjtcbiAgZGlyZWN0b3JpZXNDb3VudD86IG51bWJlcjtcbiAgZmlsZXNDb3VudD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gQWNjZXNzUm9sZUNob2ljZSB7XG4gIFJFQURFUiA9ICdSRUFERVInLFxuICBXUklURVIgPSAnV1JJVEVSJyxcbiAgQURNSU4gPSAnQURNSU4nLFxuICBERU5ZID0gJ0RFTlknLFxuICBPV05FUiA9ICdPV05FUicsXG59XG5cbmV4cG9ydCBlbnVtIEFjY2Vzc1JvbGVNZXRob2Qge1xuICBpbmhlcml0ZWQgPSAnaW5oZXJpdGVkJyxcbiAgZGlyZWN0ID0gJ2RpcmVjdCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzUm9sZSB7XG4gIGlzc3Vlcj86IFVzZXJOb2RlO1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHJvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kO1xuICBpbmhlcml0ZWRGcm9tPzogRGlyZWN0b3J5Tm9kZTtcbiAgdHJ1c3RlZFBhcnR5PzogVHBOb2RlO1xuICBpc0lzc3Vlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEZpbGVPcGVyYXRpb25GaWVsZCB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBSRUFEID0gJ1JFQUQnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcbiAgUkVWRVJUID0gJ1JFVkVSVCcsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVWZXJzaW9uTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZmlsZT86IEZpbGVOb2RlO1xuICBzdGF0ZT86IEZpbGVTdGF0ZU5vZGU7XG4gIG9wZXJhdGlvbj86IEZpbGVPcGVyYXRpb25GaWVsZDtcbiAgYXV0aG9yPzogVXNlck5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTdGF0ZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBsYWluTWV0YT86IEpTT05TdHJpbmc7XG4gIHBsYWluTWV0YUpzb24/OiBKU09OT2JqZWN0O1xuICBjaXBoZXJNZXRhPzogc3RyaW5nO1xuICBjaXBoZXJNZXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgY29udGVudFJlc291cmNlPzogc3RyaW5nO1xuICB2ZXJzaW9ucz86IENvbm5lY3Rpb248RmlsZVZlcnNpb25Ob2RlPjtcbiAga2V5SWQ6IElEO1xufVxuXG5leHBvcnQgZW51bSBLZXlFeGNoYW5nZU90a1N0YXRlIHtcbiAgT1RLX0lOSVRJQVRFRCA9ICdPVEtfSU5JVElBVEVEJyxcbiAgT1RLX0FDQ0VQVEVEID0gJ09US19BQ0NFUFRFRCcsXG4gIE9US19DT01QTEVURUQgPSAnT1RLX0NPTVBMRVRFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhIHtcbiAgLy8gU2hhcmVkIHJlYWQgYWNjZXNzIGJldHdlZW4gaW5pdGlhdG9yIGFuZCByZXNwb25kZXIuIEJ1dCBvbmx5IHRoZSBpbml0aWF0b3IgaGFzIHdyaXRlIGFjY2Vzcy5cbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogSlNPTk9iamVjdDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgdGhlIG9uZS10aW1lIGtleSBjaXBoZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdEtleUNpcGhlckNsZWFySnNvbjIge1xuICAvLyBVc2VkIHRvIGNvbmZpcm0gdG8gdGhlIGluaXRpYXRvciB0aGF0IHRoZSByZXNwb25kZXIgaGFzIGFjY2VzcyB0byB0aGUgb25lLXRpbWUga2V5LlxuICBub25jZTogc3RyaW5nO1xuICAvLyBEYXRhIHNlbnQgZnJvbSBpbml0aWF0b3IgdG8gdGhlIHJlc3BvbmRlclxuICBpbml0aWF0b3I6IHtcbiAgICBvbmVUaW1lUGJrOiBvYmplY3Q7IC8vIG9uZS10aW1lIHB1YmxpYyBlbmNyeXB0aW9uIGtleSB0aGUgcmVzcG9uZGVyIHdpbGwgdXNlIHRvIHNlbmQgZGF0YSBiYWNrIHRvIHRoZSBpbml0aWF0b3JcbiAgICBwYms6IG9iamVjdDsgLy8gcHVibGljIGVuY3J5cHRpb24ga2V5XG4gICAgc2lnUGJrOiBvYmplY3Q7IC8vIHB1YmxpYyBzaWduaW5nIGtleVxuICAgIG1lc3NhZ2U/OiBKU09OT2JqZWN0O1xuICAgIGNvbnRhY3RDYXJkPzogQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlT3RrTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBLZXlFeGNoYW5nZU90a1N0YXRlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1NoYXJlZEtleT86IEtleU5vZGU7XG4gIGluaXRpYXRvclNpZ1B4az86IEtleU5vZGU7XG4gIHJlc3BvbmRlclNpZ1B4az86IEtleU5vZGU7XG4gIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI/OiBzdHJpbmc7XG4gIG90S2V5UGFyYW1zPzogc3RyaW5nO1xuICBvdEtleUNpcGhlcj86IHN0cmluZztcbiAgb3RLZXlDaXBoZXJDbGVhckpzb24/OiBPdEtleUNpcGhlckNsZWFySnNvbjI7XG4gIHJlc3BvbmRlclBia0NpcGhlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gS2V5RXhjaGFuZ2VTdGF0ZSB7XG4gIElOX1BST0dSRVNTID0gJ0lOX1BST0dSRVNTJyxcbiAgQ09NUExFVEVEID0gJ0NPTVBMRVRFRCcsXG4gIERFQ0xJTkVEID0gJ0RFQ0xJTkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIERFTEVURUQgPSAnREVMRVRFRCcsXG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlTW9kZSB7XG4gIE9USyA9ICdPVEsnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZXhwaXJ5VGltZT86IERhdGVUaW1lO1xuICB0b2tlbj86IHN0cmluZztcbiAgdG9rZW5FeHBpcnlUaW1lPzogRGF0ZVRpbWU7XG4gIHN0YXRlPzogS2V5RXhjaGFuZ2VTdGF0ZTtcbiAgbW9kZT86IEtleUV4Y2hhbmdlTW9kZTtcbiAgaW5pdGlhdG9yPzogVXNlck5vZGU7XG4gIHJlc3BvbmRlcj86IFVzZXJOb2RlO1xuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICByZXNwb25kZXJSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICBpbml0aWF0b3JBY3Rpb25SZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlc3BvbmRlckFjdGlvblJlcXVpcmVkPzogYm9vbGVhbjtcbiAgY3JlYXRlVHA/OiBib29sZWFuO1xuICBvdGs/OiBLZXlFeGNoYW5nZU90a05vZGU7XG4gIGlzSW5pdGlhdG9yPzogYm9vbGVhbjtcbiAgaXNFeHBpcmVkPzogYm9vbGVhbjtcbiAgcmVzcG9uZGVyRW1haWxBZGRyZXNzPzogTHJFbWFpbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRJdGVtcyB7XG4gIGRpcmVjdG9yaWVzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlOb2RlPjtcbiAgZmlsZXM/OiBDb25uZWN0aW9uPEZpbGVOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRDb250YWN0Q2FyZE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIG93bmVyPzogVXNlck5vZGU7XG4gIHJlY2VpdmVyPzogVXNlck5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzaGFyZWRDaXBoZXJEYXRhU2lnPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhU2lnUHhrPzogS2V5Tm9kZTtcbiAgb3duZXJDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBvd25lckNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBvd25lcktleT86IEtleU5vZGU7XG4gIG93bmVyUGxhaW5EYXRhPzogc3RyaW5nO1xuICBvd25lclBsYWluRGF0YUpzb24/OiBKU09OT2JqZWN0O1xuICBvd25lclBsYWluRGF0YVNpZz86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJEYXRhPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlcktleT86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclNoYXJlZEtleU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGtleUV4Y2hhbmdlPzogS2V5RXhjaGFuZ2VOb2RlO1xuICB1c2VyPzogVXNlck5vZGU7XG4gIHVzZXJQcms/OiBLZXlOb2RlO1xuICB1c2VyU2lnUHJrPzogS2V5Tm9kZTtcbiAgb3RoZXI/OiBVc2VyTm9kZTtcbiAgb3RoZXJQYms/OiBLZXlOb2RlO1xuICBvdGhlclNpZ1Biaz86IEtleU5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIG1rU2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgbWtQeGs/OiBLZXlOb2RlO1xuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyPzogc3RyaW5nO1xuICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlcj86IHN0cmluZztcbiAgbWtSZXNoYXJlUmVxdWVzdENpcGhlckNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgbWtSZXNoYXJlUmVxdWVzdFNlbnQ/OiBib29sZWFuO1xuICBta1Jlc2hhcmVSZXNwb25zZVNlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyU2hhcmVkS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgdXNlcj86IFVzZXJOb2RlO1xuICBvdGhlcj86IFVzZXJOb2RlO1xuICB1c2VyU2hhcmVkS2V5PzogVXNlclNoYXJlZEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB1c2VyPzogVXNlck5vZGU7XG4gIG90aGVyPzogVXNlck5vZGU7XG4gIGN1cnJlbnRVc2VyU2hhcmVkS2V5PzogQ3VycmVudFVzZXJTaGFyZWRLZXlOb2RlO1xuICBpc0NvbXBsZXRlZD86IGJvb2xlYW47XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICBteUNvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICBteUl0ZW1zPzogU2hhcmVkSXRlbXM7XG4gIHNoYXJlZEl0ZW1zPzogU2hhcmVkSXRlbXM7XG4gIG15U2NlbmFyaW9zPzogQ29ubmVjdGlvbjxTY2VuYXJpb05vZGU+O1xuICBzaGFyZWRTY2VuYXJpb3M/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvTm9kZT47XG59XG5cbmV4cG9ydCBlbnVtIFRwQXNzZW1ibHlTdGF0ZSB7XG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBlbnVtIFRwQ2xhaW1TdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgZW51bSBUcENsYWltQXBwcm92ZXJTdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldEFwcHJvdmFsIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhcHByb3ZlckVtYWlsPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHJlY2VpdmVyQ2lwaGVyPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Pzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFwcHJvdmVyRW1haWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHN0YXRlPzogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlclN1YkFzc2VtYmx5IHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBhcHByb3ZlcnM/OiBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHkge1xuICBzaW5nbGVSZWplY3Q/OiBib29sZWFuO1xuICBxdW9ydW0/OiBudW1iZXI7XG4gIHN1YkFzc2VtYmxpZXM/OiBUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZSB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICByZXNldFVzZXJuYW1lPzogc3RyaW5nO1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbiAgcGFzc0tleT86IFBhc3NLZXlOb2RlO1xuICBtYXN0ZXJLZXk/OiBLZXlOb2RlO1xuICBweGs/OiBLZXlOb2RlO1xuICBzZXNzaW9uRW5jcnlwdGlvbktleT86IHN0cmluZztcbiAgYXBwcm92YWxzPzogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZVtdO1xuICBhc3NlbWJseUNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrPzogc3RyaW5nO1xuICBhc3NlbWJseT86IFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhc3NlbWJseT86IFRwQXNzZW1ibHlOb2RlO1xuICByZXF1ZXN0PzogVHBQYXNzd29yZFJlc2V0UmVxdWVzdE5vZGU7XG4gIGFwcGxpZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgaWQ/OiBJRDtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJqZWN0S2V5PzogS2V5Tm9kZTtcbiAgc3ViamVjdENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYXNzZW1ibHlLZXk/OiBLZXlOb2RlO1xuICBhc3NlbWJseUNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIGFzc2VtYmx5Q2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHN1YkFzc2VtYmxpZXM/OiBDb25uZWN0aW9uPFRwU3ViQXNzZW1ibHlOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFN1YkFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJqZWN0Q2lwaGVyRGF0YT86IHN0cmluZztcbiAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24/OiBzdHJpbmc7XG4gIGFwcHJvdmVycz86IENvbm5lY3Rpb248VHBBc3NlbWJseUFwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgdHA/OiBUcE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXNzZW1ibHk/OiBTaGFyZWRUcEFzc2VtYmx5Tm9kZTtcbiAgdHA/OiBUcE5vZGU7XG4gIHNoYXJlZFJlcXVlc3Q/OiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcEFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXNBcHByb3ZlcnM/OiBDb25uZWN0aW9uPFRwQXNzZW1ibHlBc0FwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseUFzQXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjbGFpbT86IFNoYXJlZFRwQ2xhaW1Ob2RlO1xuICBweGs/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQ2xhaW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbiAgYXNDbGFpbUFwcHJvdmVycz86IENvbm5lY3Rpb248U2hhcmVkVHBDbGFpbUFwcHJvdmVyTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBDbGFpbUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyQXBwcm92YWxzPzogQ29ubmVjdGlvbjxTaGFyZWRUcENsYWltUmVjZWl2ZXJBcHByb3ZhbE5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQ2xhaW1SZWNlaXZlckFwcHJvdmFsTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcHhrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGVudW0gTG9ja1N0YXRlIHtcbiAgVU5MT0NLRUQgPSAnVU5MT0NLRUQnLFxuICBNVVRFWF9MT0NLRUQgPSAnTVVURVhfTE9DS0VEJyxcbn1cblxuZXhwb3J0IGVudW0gU2NlbmFyaW9TdGF0ZSB7XG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxufVxuXG5leHBvcnQgZW51bSBDbGFpbVN0YXRlIHtcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgRVhQSVJFRCA9ICdFWFBJUkVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBlbnVtIENsYWltQXBwcm92ZXJTdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxufVxuXG5leHBvcnQgZW51bSBTY2VuYXJpb0xhc3RDbGFpbVN0YXRlIHtcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBSRVNFVCA9ICdSRVNFVCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9MYXRlc3RDbGFpbSB7XG4gIHN0YXRlPzogU2NlbmFyaW9MYXN0Q2xhaW1TdGF0ZTtcbiAgY3JlYXRlZD86IERhdGVUaW1lO1xuICBjbGFpbUFnYWluQWZ0ZXI/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN1YmplY3Q/OiBVc2VyTm9kZTtcbiAgc3ViamVjdEtleT86IEtleU5vZGU7XG4gIHN1YmplY3RDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFzc2VtYmx5PzogVHBBc3NlbWJseU5vZGU7XG4gIHN0YXRlPzogU2NlbmFyaW9TdGF0ZTtcbiAgY2xhaW1hbnRzPzogQ29ubmVjdGlvbjxTY2VuYXJpb0NsYWltYW50Tm9kZT47XG4gIHJlY2VpdmVycz86IENvbm5lY3Rpb248U2NlbmFyaW9SZWNlaXZlck5vZGU+O1xuICBjbGFpbXM/OiBDb25uZWN0aW9uPFNjZW5hcmlvQ2xhaW1Ob2RlPjtcbiAgY2xhaW0/OiBTY2VuYXJpb0NsYWltTm9kZTtcbiAgYXNzZW1ibHlTdGF0ZT86IFNjZW5hcmlvQXNzZW1ibHlTdGF0ZTtcbiAgbGF0ZXN0Q2xhaW0/OiBTY2VuYXJpb0xhdGVzdENsYWltO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvQ2xhaW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjbGFpbWFudD86IFNjZW5hcmlvQ2xhaW1hbnROb2RlO1xuICBzdGF0ZT86IENsYWltU3RhdGU7XG4gIHNjZW5hcmlvPzogU2NlbmFyaW9Ob2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvQXNzZW1ibHlTdGF0ZSB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgc3ViQXNzZW1ibHlTdGF0ZXM/OiBTY2VuYXJpb1N1YkFzc2VtYmx5U3RhdGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1N1YkFzc2VtYmx5U3RhdGUge1xuICBzaW5nbGVSZWplY3Q/OiBib29sZWFuO1xuICBxdW9ydW0/OiBudW1iZXI7XG4gIGFwcHJvdmVyU3RhdGVzPzogU2NlbmFyaW9Bc3NlbWJseUFwcHJvdmVyU3RhdGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb0Fzc2VtYmx5QXBwcm92ZXJTdGF0ZSB7XG4gIHN0YXRlPzogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9SZWNlaXZlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBwYms/OiBLZXlOb2RlO1xuICByZWNlaXZlckRpcmVjdG9yaWVzPzogQ29ubmVjdGlvbjxTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5Tm9kZT47XG4gIHJlY2VpdmVyRmlsZXM/OiBDb25uZWN0aW9uPFNjZW5hcmlvUmVjZWl2ZXJGaWxlTm9kZT47XG4gIHRwPzogVHBOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNjZW5hcmlvUmVjZWl2ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYms/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgdHlwZSBSZWNlaXZlckRpcmVjdG9yeUFjY2Vzc1JvbGUgPSBBY2Nlc3NSb2xlQ2hvaWNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvUmVjZWl2ZXJJdGVtTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcmVjZWl2ZXI/OiBTaGFyZWRTY2VuYXJpb1JlY2VpdmVyTm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFjY2Vzc1JvbGU/OiBSZWNlaXZlckRpcmVjdG9yeUFjY2Vzc1JvbGU7XG4gIHdyYXBwZWRJdGVtS2V5Pzogc3RyaW5nO1xuICBpdGVtS2V5PzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5Tm9kZVxuICBleHRlbmRzIFNjZW5hcmlvUmVjZWl2ZXJJdGVtTm9kZSB7XG4gIGRpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9SZWNlaXZlckZpbGVOb2RlIGV4dGVuZHMgU2NlbmFyaW9SZWNlaXZlckl0ZW1Ob2RlIHtcbiAgZmlsZT86IEZpbGVOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvQ2xhaW1hbnROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB0cD86IFRwTm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHN0YXRlPzogU2NlbmFyaW9TdGF0ZTtcbiAgdHA/OiBUcE5vZGU7XG4gIGFzQ2xhaW1hbnQ/OiBTY2VuYXJpb0NsYWltYW50Tm9kZTtcbiAgYXNSZWNlaXZlcj86IFNjZW5hcmlvUmVjZWl2ZXJOb2RlO1xuICBhc3NlbWJseT86IFNoYXJlZFRwQXNzZW1ibHlOb2RlO1xuICBzaGFyZWRDbGFpbT86IFNoYXJlZFNjZW5hcmlvQ2xhaW1Ob2RlO1xuICBhc3NlbWJseVN0YXRlPzogU2NlbmFyaW9Bc3NlbWJseVN0YXRlO1xuICBsYXRlc3RDbGFpbT86IFNjZW5hcmlvTGF0ZXN0Q2xhaW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN0YXRlPzogQ2xhaW1TdGF0ZTtcbiAgc2hhcmVkU2NlbmFyaW8/OiBTaGFyZWRTY2VuYXJpb05vZGU7XG4gIGlzQ2xhaW1hbnQ/OiBib29sZWFuO1xuICBhc0NsYWltUmVjZWl2ZXI/OiBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZXJOb2RlO1xuICBjbGFpbTogU2hhcmVkVHBDbGFpbU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcmVjZWl2ZXJzPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb1JlY2VpdmVyTm9kZT47XG4gIHN0YXRlPzogQ2xhaW1BcHByb3ZlclN0YXRlO1xuICBhcHByb3Zlcj86IFRwQXNzZW1ibHlBcHByb3Zlck5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcmVjZWl2ZWQ/OiBEYXRlVGltZTtcbiAgYXBwcm92YWxzPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlZEFwcHJvdmFsTm9kZVxuICBleHRlbmRzIE5vZGUsXG4gICAgVGltZVN0YW1wZWQge1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHB4az86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGxhaW5EYXRhPzogSlNPTlN0cmluZztcbiAgcGxhaW5NZXRhPzogSlNPTlN0cmluZztcbiAgdGltZVJlYWQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25NYW5hZ2VtZW50U3RhdGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGxhc3RWaWV3ZWQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGVudW0gTGlua1R5cGVGaWVsZCB7XG4gIEhBUkQgPSAnSEFSRCcsXG4gIFNPRlQgPSAnU09GVCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNlbmRlcj86IFVzZXJOb2RlO1xuICByZWNlaXZlcj86IFVzZXJOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzZW5kZXJTaWdQYms/OiBLZXlOb2RlO1xuICBwbGFpbk1lc3NhZ2U/OiBzdHJpbmc7XG4gIHBsYWluTWVzc2FnZUpzb24/OiBzdHJpbmc7XG4gIHNpZ25lZENpcGhlck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpZ25lZENpcGhlck1lc3NhZ2VDbGVhckpzb24/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,31 +1,4 @@
|
|
|
1
|
-
import gql from 'graphql-tag';
|
|
2
1
|
import { gqlTyped } from '../_common/ast';
|
|
3
|
-
export const PasswordChangeRequestMutation = gql `
|
|
4
|
-
mutation {
|
|
5
|
-
passwordChangeRequest(input: {}) {
|
|
6
|
-
challenge
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
`;
|
|
10
|
-
export const PasswordChangeMutation = gql `
|
|
11
|
-
mutation PasswordChange($input: PasswordChangeInput!) {
|
|
12
|
-
passwordChange(input: $input) {
|
|
13
|
-
token
|
|
14
|
-
newPassKey {
|
|
15
|
-
id
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
`;
|
|
20
|
-
export const PasswordChangeConfigQuery = gql `
|
|
21
|
-
query PasswordChangeConfigQuery {
|
|
22
|
-
passwordChangeConfig {
|
|
23
|
-
maxAuthAgeSeconds
|
|
24
|
-
authTime
|
|
25
|
-
serverTime
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
`;
|
|
29
2
|
export const SetSessionEncryptionKeyMutation = gqlTyped `
|
|
30
3
|
mutation SetSessionEncryptionKeyMutation($input: SetSessionEncryptionKeyInput!) {
|
|
31
4
|
setSessionEncryptionKey(input: $input) {
|
|
@@ -40,4 +13,4 @@ mutation ClearSessionEncryptionKeyMutation {
|
|
|
40
13
|
}
|
|
41
14
|
}
|
|
42
15
|
`;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2F1dGgvYXV0aC5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzFDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFFBQVEsQ0FBaUM7Ozs7OztDQU12RixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsUUFBUSxDQUFtQzs7Ozs7O0NBTTNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uIHtcbiAgc2V0U2Vzc2lvbkVuY3J5cHRpb25LZXk6IHtcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleTogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24gPSBncWxUeXBlZDxTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uPmBcbm11dGF0aW9uIFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24oJGlucHV0OiBTZXRTZXNzaW9uRW5jcnlwdGlvbktleUlucHV0ISkge1xuICBzZXRTZXNzaW9uRW5jcnlwdGlvbktleShpbnB1dDogJGlucHV0KSB7XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhclNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24ge1xuICBjbGVhclNlc3Npb25FbmNyeXB0aW9uS2V5OiB7XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDbGVhclNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24gPSBncWxUeXBlZDxDbGVhclNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24+YFxubXV0YXRpb24gQ2xlYXJTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uIHtcbiAgY2xlYXJTZXNzaW9uRW5jcnlwdGlvbktleShpbnB1dDoge30pIHtcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG59XG5gO1xuIl19
|
|
@@ -24,4 +24,4 @@ export var RecoveryStatus;
|
|
|
24
24
|
RecoveryStatus["NEW_PASSWORD"] = "new-password";
|
|
25
25
|
RecoveryStatus["OLD_PASSWORD"] = "old-password";
|
|
26
26
|
})(RecoveryStatus || (RecoveryStatus = {}));
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXV0aC9hdXRoLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCaEQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFdBQVc7SUFBckQ7O1FBSUUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7Q0FBQTtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsdUJBQXVCO0lBQ3ZCLGtDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sT0FBTyxRQUFRO0NBSXBCO0FBRUQsTUFBTSxPQUFPLFdBQVc7Q0FnQnZCO0FBTUQsTUFBTSxPQUFPLFdBQVc7Q0FLdkI7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUsxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsK0JBQWEsQ0FBQTtJQUNiLCtDQUE2QixDQUFBO0lBQzdCLCtDQUE2QixDQUFBO0FBQy9CLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZ25pdG9Vc2VyIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2F1dGgnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlLCBVc2VyRGVsZXRlTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBQYXNzSWRwUGFyYW1zLCBQYXNzS2V5UGFyYW1zIH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgeyBVc2VyUGxhbiB9IGZyb20gJy4uL3BsYW4vcGxhbi50eXBlcyc7XG5pbXBvcnQgeyBDdXJyZW50VXNlcktleSwgTWFpbkNvbnRhY3RDYXJkIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXNzS2V5QnVuZGxlIHtcbiAgcGFzc0tleVBhcmFtczogUGFzc0tleVBhcmFtcztcbiAgcGFzc0tleTogSldLLktleTtcbiAgcGFzc0lkcFBhcmFtczogUGFzc0lkcFBhcmFtcztcbiAgcGFzc0lkcDogSldLLktleTtcbiAgcGFzc0lkcFZlcmlmaWVyOiBKV0suS2V5O1xuICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrOiBvYmplY3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2duaXRvQ2hhbGxlbmdlVXNlciBleHRlbmRzIENvZ25pdG9Vc2VyIHtcbiAgcmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzO1xuICBjaGFsbGVuZ2VOYW1lOiAnU01TX01GQScgfCAnU09GVFdBUkVfVE9LRU5fTUZBJztcbiAgY2hhbGxlbmdlUGFyYW06IGFueTtcbiAgaXNUcFBhc3N3b3JkUmVzZXRVc2VyID0gZmFsc2U7XG59XG5cbmV4cG9ydCBlbnVtIEZlYXR1cmVBY3Rpb24ge1xuICAvLyBKdXN0IHRoZSBvbmUgZm9yIG5vd1xuICBBQ0NFU1MgPSAnYWNjZXNzJyxcbn1cblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVzIHtcbiAgbXlWYXVsdDogRmVhdHVyZUFjdGlvbltdO1xuICB0cFZhdWx0OiBGZWF0dXJlQWN0aW9uW107XG4gIHNoYXJlVmF1bHQ6IEZlYXR1cmVBY3Rpb25bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEN1cnJlbnRVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgc3ViOiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VyS2V5OiBDdXJyZW50VXNlcktleTtcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgcGhvbmU6IHN0cmluZztcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbjtcbiAgZ2V0QWNjZXNzSnd0VG9rZW46ICgpID0+IHN0cmluZztcbiAgY29udGFjdENhcmQ6IE1haW5Db250YWN0Q2FyZDtcbiAgdXNlckRlbGV0ZT86IFVzZXJEZWxldGVOb2RlO1xuICB1c2VyUGxhbnM6IFVzZXJQbGFuW107XG4gIGZlYXR1cmVzOiBGZWF0dXJlcztcbiAgaGFzVFBWYXVsdEFjY2VzczogYm9vbGVhbjtcbiAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyIGV4dGVuZHMgVHBQYXNzd29yZFJlc2V0VXNlck5vZGUge1xuICBzdWI6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExvZ2luUmVzdWx0IHtcbiAgaGFzQ2hhbGxlbmdlOiBib29sZWFuO1xuICBjaGFsbGVuZ2U/OiBDb2duaXRvQ2hhbGxlbmdlVXNlcjtcbiAgdXNlcj86IEN1cnJlbnRVc2VyO1xuICByZXNldFVzZXI/OiBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyUmVzdWx0IHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHByZVNpZ25VcFRva2VuOiBzdHJpbmc7XG4gIHVzZXJTdWI6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUmVjb3ZlcnlTdGF0dXMge1xuICBOT05FID0gJ25vbmUnLFxuICBORVdfUEFTU1dPUkQgPSAnbmV3LXBhc3N3b3JkJyxcbiAgT0xEX1BBU1NXT1JEID0gJ29sZC1wYXNzd29yZCcsXG59XG4iXX0=
|
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Inject, Injectable, isDevMode } from '@angular/core';
|
|
3
|
+
import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
|
|
3
4
|
import { Hub } from '@aws-amplify/core';
|
|
5
|
+
import { JWK } from 'node-jose';
|
|
4
6
|
import { ReplaySubject } from 'rxjs';
|
|
5
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
6
|
-
import { KeyService } from '../cryptography/key.service';
|
|
7
|
-
import { ProfileService } from '../users/profile.service';
|
|
8
|
-
import { PasswordChangeStatus } from '../users/profile.types';
|
|
9
|
-
import { LrConcurrentAccessException, LrBadRequestException, LrBadStateException, LrException, } from '../_common/exceptions';
|
|
10
|
-
import { RecoveryStatus, } from './auth.types';
|
|
11
|
-
import { PasswordService } from './password.service';
|
|
12
|
-
import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
|
|
13
|
-
import { CompleteTpPasswordResetRequestMutation, CreateTpAssemblyKeyChallengeMutation, PreCompleteTpPasswordResetRequestMutation, TpPasswordResetUserQuery, } from '../trusted-parties/tp-password-reset.gql';
|
|
14
|
-
import { IdleService } from './idle.service';
|
|
15
|
-
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
16
7
|
import { LrGraphQLService, LrMutation } from '../api/lr-graphql';
|
|
17
|
-
import { TpClaimState } from '../api/types';
|
|
18
8
|
import { TpPasswordResetProcessorService } from '../api/query-processor/tp-password-reset-processor.service';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
9
|
+
import { TpClaimState } from '../api/types';
|
|
10
|
+
import { EncryptionService } from '../encryption/encryption.service';
|
|
11
|
+
import { IdleService } from '../idle/idle.service';
|
|
12
|
+
import { KeyFactoryService } from '../key/key-factory.service';
|
|
13
|
+
import { KeyGraphService } from '../key/key-graph.service';
|
|
14
|
+
import { KeyService } from '../key/key.service';
|
|
22
15
|
import { LR_CONFIG } from '../life-ready.config';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
16
|
+
import { PasswordService } from '../password/password.service';
|
|
17
|
+
import { PersistService } from '../persist/persist.service';
|
|
18
|
+
import { ProfileService } from '../profile/profile.service';
|
|
19
|
+
import { PasswordChangeStatus } from '../profile/profile.types';
|
|
20
|
+
import { Slip39Service } from '../slip39/slip39.service';
|
|
21
|
+
import { TP_PASSWORD_RESET_CLIENT_NONCE_LENGTH, TP_PASSWORD_RESET_USERNAME_SUFFIX, } from '../tp-password-reset/tp-password-reset.constants';
|
|
22
|
+
import { TpPasswordResetAssemblyController } from '../tp-password-reset/tp-password-reset.controller';
|
|
23
|
+
import { CompleteTpPasswordResetRequestMutation, CreateTpAssemblyKeyChallengeMutation, PreCompleteTpPasswordResetRequestMutation, } from '../tp-password-reset/tp-password-reset.gql';
|
|
24
|
+
import { TpPasswordResetUserQuery } from '../tp-password-reset/tp-password-reset.private.gql';
|
|
25
|
+
import { LrBadRequestException, LrBadStateException, LrConcurrentAccessException, LrException, } from '../_common/exceptions';
|
|
26
|
+
import { SetSessionEncryptionKeyMutation } from './auth.gql';
|
|
27
|
+
import { RecoveryStatus, } from './auth.types';
|
|
27
28
|
import * as i0 from "@angular/core";
|
|
28
29
|
import * as i1 from "../life-ready.config";
|
|
29
30
|
import * as i2 from "@aws-amplify/auth/lib-esm/Auth";
|
|
30
|
-
import * as i3 from "../
|
|
31
|
-
import * as i4 from "../
|
|
32
|
-
import * as i5 from "../
|
|
33
|
-
import * as i6 from "../
|
|
34
|
-
import * as i7 from "
|
|
35
|
-
import * as i8 from "
|
|
31
|
+
import * as i3 from "../key/key-factory.service";
|
|
32
|
+
import * as i4 from "../key/key.service";
|
|
33
|
+
import * as i5 from "../profile/profile.service";
|
|
34
|
+
import * as i6 from "../key/key-graph.service";
|
|
35
|
+
import * as i7 from "../password/password.service";
|
|
36
|
+
import * as i8 from "../idle/idle.service";
|
|
36
37
|
import * as i9 from "../api/lr-graphql/lr-graphql.service";
|
|
37
38
|
import * as i10 from "../api/query-processor/tp-password-reset-processor.service";
|
|
38
|
-
import * as i11 from "../
|
|
39
|
-
import * as i12 from "../
|
|
40
|
-
import * as i13 from "../
|
|
41
|
-
import * as i14 from "../
|
|
39
|
+
import * as i11 from "../persist/persist.service";
|
|
40
|
+
import * as i12 from "../encryption/encryption.service";
|
|
41
|
+
import * as i13 from "../slip39/slip39.service";
|
|
42
|
+
import * as i14 from "../tp-password-reset/tp-password-reset.controller";
|
|
42
43
|
export const initialiseAuth = (authService) => {
|
|
43
44
|
return () => authService.initialise();
|
|
44
45
|
};
|
|
@@ -266,7 +267,7 @@ export class LifeReadyAuthService {
|
|
|
266
267
|
}
|
|
267
268
|
loadUser(cognitoUser, password) {
|
|
268
269
|
return __awaiter(this, void 0, void 0, function* () {
|
|
269
|
-
const { currentUser, contactCard, userPlans
|
|
270
|
+
const { currentUser, contactCard, userPlans } = yield this.profileService.getCurrentUser();
|
|
270
271
|
if (currentUser.sessionEncryptionKey) {
|
|
271
272
|
this.persistService.setServerSessionEncryptionKey(yield JWK.asKey(currentUser.sessionEncryptionKey));
|
|
272
273
|
}
|
|
@@ -485,4 +486,4 @@ LifeReadyAuthService.ctorParameters = () => [
|
|
|
485
486
|
{ type: Slip39Service },
|
|
486
487
|
{ type: TpPasswordResetAssemblyController }
|
|
487
488
|
];
|
|
488
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsV0FBVyxHQUNaLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUtMLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsb0NBQW9DLEVBQ3BDLHlDQUF5QyxFQUN6Qyx3QkFBd0IsR0FDekIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUs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UUFBUSxDQUFDLGdDQUFnQyxDQUMxQyxDQUNGLENBQ0osQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELENBQUM7S0FBQTs7OztZQTVuQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7NENBT0ksTUFBTSxTQUFDLFNBQVM7WUF6Q1osU0FBUztZQVFULGlCQUFpQjtZQXpCakIsVUFBVTtZQUNWLGNBQWM7WUFGZCxlQUFlO1lBaUJmLGVBQWU7WUFRZixXQUFXO1lBRVgsZ0JBQWdCO1lBRWhCLCtCQUErQjtZQUUvQixjQUFjO1lBR2QsaUJBQWlCO1lBQ2pCLGFBQWE7WUFLYixpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29nbml0b1VzZXIgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aCc7XG5pbXBvcnQgeyBIdWIgfSBmcm9tICdAYXdzLWFtcGxpZnkvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlckF0dHJpYnV0ZSB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhc3NJZHBQYXJhbXMgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlcnMvcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3N3b3JkQ2hhbmdlU3RhdHVzIH0gZnJvbSAnLi4vdXNlcnMvcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQge1xuICBMckNvbmN1cnJlbnRBY2Nlc3NFeGNlcHRpb24sXG4gIExyQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgTHJCYWRTdGF0ZUV4Y2VwdGlvbixcbiAgTHJFeGNlcHRpb24sXG59IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQge1xuICBDb2duaXRvQ2hhbGxlbmdlVXNlcixcbiAgQ3VycmVudFVzZXIsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXIsXG4gIExvZ2luUmVzdWx0LFxuICBSZWNvdmVyeVN0YXR1cyxcbn0gZnJvbSAnLi9hdXRoLnR5cGVzJztcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4vcGFzc3dvcmQuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQ2xhc3MgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aC9saWItZXNtL0F1dGgnO1xuaW1wb3J0IHtcbiAgQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvbixcbiAgUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeSxcbn0gZnJvbSAnLi4vdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LmdxbCc7XG5pbXBvcnQgeyBJZGxlU2VydmljZSB9IGZyb20gJy4vaWRsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTHJHcmFwaFFMU2VydmljZSwgTHJNdXRhdGlvbiB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IFRwQ2xhaW1TdGF0ZSwgVHBQYXNzd29yZFJlc2V0VXNlck5vZGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0UHJvY2Vzc29yU2VydmljZSB9IGZyb20gJy4uL2FwaS9xdWVyeS1wcm9jZXNzb3IvdHAtcGFzc3dvcmQtcmVzZXQtcHJvY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbiB9IGZyb20gJy4vYXV0aC5ncWwnO1xuaW1wb3J0IHsgUGVyc2lzdFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvcGVyc2lzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTbGlwMzlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L3NsaXAzOS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFRQX1BBU1NXT1JEX1JFU0VUX0NMSUVOVF9OT05DRV9MRU5HVEgsXG4gIFRQX1BBU1NXT1JEX1JFU0VUX1VTRVJOQU1FX1NVRkZJWCxcbn0gZnJvbSAnLi4vdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXIgfSBmcm9tICcuLi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXNlQXV0aCA9IChhdXRoU2VydmljZTogTGlmZVJlYWR5QXV0aFNlcnZpY2UpID0+IHtcbiAgcmV0dXJuICgpID0+IGF1dGhTZXJ2aWNlLmluaXRpYWxpc2UoKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5PcHRpb25zIHtcbiAgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpZmVSZWFkeUF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodWJTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PGFueT4gPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuICBwcml2YXRlIGN1cnJlbnRVc2VyOiBDdXJyZW50VXNlcjtcbiAgcHJpdmF0ZSBjdXJyZW50UmVzZXRVc2VyOiBUcFBhc3N3b3JkUmVzZXRVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTFJfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnLFxuICAgIHByaXZhdGUgYXV0aDogQXV0aENsYXNzLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGhTZXJ2aWNlOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXNzd29yZFNlcnZpY2U6IFBhc3N3b3JkU2VydmljZSxcbiAgICBwcml2YXRlIGlkbGVTZXJ2aWNlOiBJZGxlU2VydmljZSxcbiAgICBwcml2YXRlIGxyR3JhcGhRTDogTHJHcmFwaFFMU2VydmljZSxcbiAgICBwcml2YXRlIHRwUGFzc3dvcmRSZXNldFByb2Nlc3NvclNlcnZpY2U6IFRwUGFzc3dvcmRSZXNldFByb2Nlc3NvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJzaXN0U2VydmljZTogUGVyc2lzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbGlwMzlTZXJ2aWNlOiBTbGlwMzlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZW1ibHlDb250cm9sbGVyOiBUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXNlKCkge1xuICAgIEh1Yi5saXN0ZW4oJ2F1dGgnLCAoZGF0YSkgPT4gdGhpcy5odWJTdWJqZWN0Lm5leHQoZGF0YS5wYXlsb2FkKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luSWRwSW1wbChcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHBhc3NJZHBQYXJhbXM6IFBhc3NJZHBQYXJhbXMsXG4gICAgcmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzXG4gICk6IFByb21pc2U8Q29nbml0b0NoYWxsZW5nZVVzZXI+IHtcbiAgICBjb25zdCBwYXNzSWRwUmVzdWx0ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmRlcml2ZVBhc3NJZHAoe1xuICAgICAgcGFzc3dvcmQsXG4gICAgICAuLi5wYXNzSWRwUGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIFVzZSB0aGUgZGVyaXZlZCBwYXNzd29yZCB0byBzaWduaW4gd2l0aCBjb2duaXRvXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuYXV0aC5zaWduSW4oXG4gICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICB0aGlzLnBhc3N3b3JkU2VydmljZS5nZXRQYXNzSWRwU3RyaW5nKHBhc3NJZHBSZXN1bHQuandrKVxuICAgICk7XG5cbiAgICB1c2VyLnJlY292ZXJ5U3RhdHVzID0gcmVjb3ZlcnlTdGF0dXM7XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9naW5JZHAoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZ1xuICApOiBQcm9taXNlPENvZ25pdG9DaGFsbGVuZ2VVc2VyPiB7XG4gICAgLy8gRG93bmxvYWQgdGhlIHNhbHQgbmVlZGVkIHRvIGRlcml2ZSB0aGUgUGFzc0lkcFxuICAgIGNvbnN0IHBhc3NJZHBBcGlSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFBhc3NJZHBQYXJhbXMoXG4gICAgICBlbWFpbE9yUGhvbmVcbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuSW5Qcm9ncmVzc1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IExyQ29uY3VycmVudEFjY2Vzc0V4Y2VwdGlvbignQSBwYXNzd29yZCBjaGFuZ2UgaXMgaW4gcHJvZ3Jlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwYXNzSWRwQXBpUmVzdWx0LnBhc3N3b3JkQ2hhbmdlU3RhdHVzID09PSBQYXNzd29yZENoYW5nZVN0YXR1cy5SZWNvdmVyeVxuICAgICkge1xuICAgICAgY29uc29sZS5sb2coJ0luIHJlY292ZXJ5IG1vZGUuJyk7XG4gICAgICAvLyBMZXQncyBzYXkgd2UgZG9uJ3Qga25vdyBpZiB0aGUgcGFzc3dvcmQgaXMgdGhlIG5ldyBvbmUgb3IgdGhlIG9sZCBvbmUuIFdlIGp1c3QgaGF2ZSB0byB0cnkgYm90aC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmxvZ2luSWRwSW1wbChcbiAgICAgICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgcGFzc0lkcEFwaVJlc3VsdC5uZXdQYXNzSWRwUGFyYW1zLFxuICAgICAgICAgIFJlY292ZXJ5U3RhdHVzLk5FV19QQVNTV09SRFxuICAgICAgICApO1xuICAgICAgICAvLyBOZXcgcGFzc3dvcmQgd29ya2VkLiBMZXQncyBzZXQgdG8gdGhlIGN1cnJlbnQgcGFzc3dvcmRcblxuICAgICAgICAvLyAtLVBvdGVudGlhbCBGYWlsdXJlIFBvaW50IDEtLVxuICAgICAgICAvLyBpZiBjaGFuZ2VQYXNzd29yZENvbXBsZXRlKCkgZG9lc24ndCBnZXQgY2FsbGVkLCB0aGVuIGl0IHNob3VsZCByZW1haW5cblxuICAgICAgICBjb25zb2xlLmxvZygnTmV3IHBhc3N3b3JkIHdvcmtzIScpO1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSnVzdCBidWJibGUgdXAgYW55IG90aGVyIHR5cGUgb2YgZXJyb3IuXG4gICAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnTm90QXV0aG9yaXplZEV4Y2VwdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBwYXNzLCB0cnkgYWdhaW4gYXNzdW1pbmcgaXQncyB0aGUgb2xkIHBhc3N3b3JkXG4gICAgICB9XG5cbiAgICAgIC8vIE5vdyBhc3N1bWUgaXQncyB0aGUgcHJldmlvdXMgcGFzc3dvcmQuIEFueSBleGNlcHRpb24gaXMgYWxsb3dlZCB0byBidWJibGUgdXAuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICAgICAgZW1haWxPclBob25lLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIHBhc3NJZHBBcGlSZXN1bHQuY3VycmVudFBhc3NJZHBQYXJhbXMsXG4gICAgICAgICAgUmVjb3ZlcnlTdGF0dXMuT0xEX1BBU1NXT1JEXG4gICAgICAgICk7XG4gICAgICAgIC8vIE9sZCBwYXNzd29yZCB3b3JrZWQuXG4gICAgICAgIGNvbnNvbGUubG9nKCdPbGQgcGFzc3dvcmQgd29ya3MhJyk7XG5cbiAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBKdXN0IGJ1YmJsZSB1cCBhbnkgb3RoZXIgdHlwZSBvZiBlcnJvci5cbiAgICAgICAgdGhyb3cgZXJyb3IuY29kZSA9PT0gJ05vdEF1dGhvcml6ZWRFeGNlcHRpb24nXG4gICAgICAgICAgPyBuZXcgTHJCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICAgICAgICAnVGhlIHBhc3N3b3JkIGNoYW5nZSByZXF1ZXN0IHdhcyBpbnRlcnJ1cHRlZCwgcGxlYXNlIHRyeSB0byBsb2dpbiB3aXRoIGJvdGggeW91ciBuZXcgYW5kIG9sZCBwYXNzd29yZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyeSBhZ2FpbnN0IGFzIHRoZSBUUCBwYXNzd29yZCByZXNldCBhY2NvdW50XG4gICAgaWYgKHBhc3NJZHBBcGlSZXN1bHQudHBQYXNzd29yZFJlc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUUCBwYXNzd29yZCByZXNldCBpcyBpbiBwcm9jZXNzLiBXZSBuZWVkIHRvIHRyeSB0aGUgcGFzc3dvcmQgYWdhaW5zdCBib3RoXG4gICAgICAgIC8vIG9yaWdpbmFsIGFjY291bnQgYW5kIHRoZSBuZXcgcmVzZXQgYWNjb3VudC5cbiAgICAgICAgY29uc3QgcmVzZXQgPSBwYXNzSWRwQXBpUmVzdWx0LnRwUGFzc3dvcmRSZXNldDtcbiAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICAgICAgcmVzZXQucmVzZXRVc2VybmFtZSxcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICByZXNldC5wYXNzSWRwUGFyYW1zLFxuICAgICAgICAgIFJlY292ZXJ5U3RhdHVzLk5PTkVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0LmlzVHBQYXNzd29yZFJlc2V0VXNlciA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBjb250aW51ZSwgdHJ5IGFnYWluIGFzIHJlZ3VsYXIgdXNlci5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2dpbiBhcyByZWd1bGFyIHVzZXJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHBhc3NJZHBBcGlSZXN1bHQuY3VycmVudFBhc3NJZHBQYXJhbXMsXG4gICAgICBSZWNvdmVyeVN0YXR1cy5OT05FXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZXNzaW9uRW5jcnlwdGlvbktleSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5KSB7XG4gICAgICBpZiAoIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgJ1lvdSBzaG91bGQgbm90IHNldCBkaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXk9VHJ1ZSBpbiBtb2RlIHByb2QuIEl0IGRlZmF1bHRzIHRvIGZhbHNlLic7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1lvdSBoYXZlIHNldCBkaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXk9VHJ1ZS4gTWFrZSBzdXJlIG5vdCB0byBkbyB0aGlzIGluIHByb2QgbW9kZS4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNldCB0aGUgc2Vzc2lvbiBrZXkgdG8gYSBuZXcgZW5jcnlwdGlvbiBrZXkgZm9yIHRoaXMgc2Vzc2lvblxuICAgICAgY29uc3Qgc2Vzc2lvbkVuY3J5cHRpb25LZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5LnRvSlNPTih0cnVlKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIGluY2x1ZGVLZXlHcmFwaDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoc2Vzc2lvbkVuY3J5cHRpb25LZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVQb3N0QXV0aChjb2duaXRvVXNlcjogQ29nbml0b0NoYWxsZW5nZVVzZXIpIHtcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVBhc3N3b3JkUmVjb3ZlcnkoY29nbml0b1VzZXIpO1xuICAgIGF3YWl0IHRoaXMuaGFuZGxlU2Vzc2lvbkVuY3J5cHRpb25LZXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dpbihcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHsgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlID0gdHJ1ZSB9OiBMb2dpbk9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBsZXQgbG9naW5SZXN1bHQgPSBhd2FpdCB0aGlzLmxvZ2luSW1wbChlbWFpbE9yUGhvbmUsIHBhc3N3b3JkKTtcblxuICAgIGlmIChcbiAgICAgIHRwUGFzc3dvcmRSZXNldEF1dG9Db21wbGV0ZSAmJlxuICAgICAgbG9naW5SZXN1bHQucmVzZXRVc2VyPy5zdGF0ZSA9PT0gVHBDbGFpbVN0YXRlLkFQUFJPVkVEXG4gICAgKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbXBsZXRlUmVxdWVzdChwYXNzd29yZCk7XG4gICAgICBsb2dpblJlc3VsdCA9IGF3YWl0IHRoaXMubG9naW5JbXBsKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dpblJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dpbkltcGwoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZ1xuICApOiBQcm9taXNlPExvZ2luUmVzdWx0PiB7XG4gICAgYXdhaXQgdGhpcy5sb2dvdXQoKTtcbiAgICBjb25zdCBjb2duaXRvVXNlciA9IGF3YWl0IHRoaXMubG9naW5JZHAoZW1haWxPclBob25lLCBwYXNzd29yZCk7XG5cbiAgICAvLyB0b2RvOiBNZWV0IE1GQSBjaGFsbGVuZ2VzLlxuICAgIGlmIChbJ1NNU19NRkEnLCAnU09GVFdBUkVfVE9LRU5fTUZBJ10uaW5jbHVkZXMoY29nbml0b1VzZXIuY2hhbGxlbmdlTmFtZSkpIHtcbiAgICAgIHJldHVybiB7IGhhc0NoYWxsZW5nZTogdHJ1ZSwgY2hhbGxlbmdlOiBjb2duaXRvVXNlciB9O1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaGFuZGxlUG9zdEF1dGgoY29nbml0b1VzZXIpO1xuXG4gICAgaWYgKGNvZ25pdG9Vc2VyLmlzVHBQYXNzd29yZFJlc2V0VXNlcikge1xuICAgICAgLy8gQXNzdW1pbmcgdGhlcmUgaXMgbm8gTUZBIG9uIHRoZSBUUCByZXNldCB1c2VyLlxuICAgICAgY29uc3QgcmVzZXRVc2VyID0gYXdhaXQgdGhpcy5sb2FkUmVzZXRVc2VyKHBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7IGhhc0NoYWxsZW5nZTogZmFsc2UsIHJlc2V0VXNlciB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2FkVXNlcihjb2duaXRvVXNlciwgcGFzc3dvcmQpO1xuICAgICAgYXdhaXQgdGhpcy5pZGxlU2VydmljZS5zdGFydCgpOyAvLyBSdW4gaWRsZVNlcnZpY2Ugd2hlbmV2ZXIgdXNlciBpcyBsb2dnZWQgaW4uXG4gICAgICByZXR1cm4geyBoYXNDaGFsbGVuZ2U6IGZhbHNlLCB1c2VyIH07XG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETyA8QVo+IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSBpc1RwUGFzc3dvcmRSZXNldFVzZXI9VHJ1ZSBjYXNlIGhlcmUgYWZ0ZXIgTUZBIGFzIHdlbGwuXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlMb2dpbihcbiAgICBjaGFsbGVuZ2U6IENvZ25pdG9DaGFsbGVuZ2VVc2VyLFxuICAgIHBhc3N3b3JkOiBzdHJpbmcsXG4gICAgcmVtZW1iZXJNZTogYm9vbGVhbixcbiAgICBjb2RlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxDdXJyZW50VXNlcj4ge1xuICAgIGF3YWl0IHRoaXMuYXV0aC5jb25maXJtU2lnbkluKGNoYWxsZW5nZSwgY29kZSwgY2hhbGxlbmdlLmNoYWxsZW5nZU5hbWUpO1xuXG4gICAgLy8gVE9ETzogdGhpcy5hdXRoLmNvbmZpcm1TaWduSW4oKSBjb3VsZCByZXR1cm4gYW5vdGhlciBjaGFsbGVuZ2UuXG5cbiAgICBjb25zdCBjb2duaXRvVXNlcjogQ29nbml0b1VzZXIgPSBhd2FpdCB0aGlzLmF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLmhhbmRsZVBvc3RBdXRoKGNoYWxsZW5nZSk7XG5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2FkVXNlcihjb2duaXRvVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgaWYgKHJlbWVtYmVyTWUpIHtcbiAgICAgIGNvZ25pdG9Vc2VyLnNldERldmljZVN0YXR1c1JlbWVtYmVyZWQoe1xuICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHt9LFxuICAgICAgICBvbkZhaWx1cmU6IChlKSA9PiBjb25zb2xlLmVycm9yKGUpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyBoYW5kbGVQYXNzd29yZFJlY292ZXJ5KHVzZXI6IENvZ25pdG9DaGFsbGVuZ2VVc2VyKSB7XG4gICAgaWYgKHVzZXIucmVjb3ZlcnlTdGF0dXMgIT09IFJlY292ZXJ5U3RhdHVzLk5PTkUpIHtcbiAgICAgIGNvbnN0IGp3dFRva2VuID0gdXNlclxuICAgICAgICAuZ2V0U2lnbkluVXNlclNlc3Npb24oKVxuICAgICAgICAuZ2V0QWNjZXNzVG9rZW4oKVxuICAgICAgICAuZ2V0Snd0VG9rZW4oKTtcbiAgICAgIGF3YWl0IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmNoYW5nZVBhc3N3b3JkQ29tcGxldGUoXG4gICAgICAgIGp3dFRva2VuLFxuICAgICAgICB1c2VyLnJlY292ZXJ5U3RhdHVzID09PSBSZWNvdmVyeVN0YXR1cy5ORVdfUEFTU1dPUkRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VXNlck9yUmVzZXRVc2VyKFxuICAgIHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlXG4gICk6IFByb21pc2U8Q3VycmVudFVzZXIgfCBUcFBhc3N3b3JkUmVzZXRVc2VyPiB7XG4gICAgY29uc3QgY29nbml0b1VzZXIgPSBhd2FpdCB0aGlzLmF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XG5cbiAgICBpZiAoY29nbml0b1VzZXIuZ2V0VXNlcm5hbWUoKS5lbmRzV2l0aChUUF9QQVNTV09SRF9SRVNFVF9VU0VSTkFNRV9TVUZGSVgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXNldFVzZXIocmVsb2FkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VXNlcihyZWxvYWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFJlc2V0VXNlcihyZWxvYWQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VHBQYXNzd29yZFJlc2V0VXNlcj4ge1xuICAgIGlmICghcmVsb2FkICYmIHRoaXMuY3VycmVudFJlc2V0VXNlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlc2V0VXNlcjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRSZXNldFVzZXIgPSBhd2FpdCB0aGlzLmxvYWRSZXNldFVzZXIoKTtcblxuICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2Uuc3RhcnQoKTsgLy8gUnVuIGlkbGVTZXJ2aWNlIHdoZW5ldmVyIHVzZXIgaXMgbG9nZ2VkIGluLlxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFJlc2V0VXNlcjtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXIocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPEN1cnJlbnRVc2VyPiB7XG4gICAgaWYgKCFyZWxvYWQgJiYgdGhpcy5jdXJyZW50VXNlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXI7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmxvYWRVc2VyKFxuICAgICAgYXdhaXQgdGhpcy5hdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZygnU3RhcnRpbmcgaWRsZSBzZXJ2aWNlLicpO1xuICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2Uuc3RhcnQoKTsgLy8gUnVuIGlkbGVTZXJ2aWNlIHdoZW5ldmVyIHVzZXIgaXMgbG9nZ2VkIGluLlxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRVc2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUUFZhdWx0QWNjZXNzKGZlYXR1cmVzPzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHBWYXVsdEZlYXR1cmUgPSBmZWF0dXJlcz8udHBWYXVsdDtcbiAgICByZXR1cm4gKFxuICAgICAgdHBWYXVsdEZlYXR1cmU/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIHRwVmF1bHRGZWF0dXJlLnNvbWUoKGZlYXR1cmUpID0+IGZlYXR1cmUudG9VcHBlckNhc2UoKSA9PT0gJ0FDQ0VTUycpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXIoXG4gICAgY29nbml0b1VzZXI6IENvZ25pdG9Vc2VyLFxuICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICk6IFByb21pc2U8Q3VycmVudFVzZXI+IHtcbiAgICBjb25zdCB7XG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGNvbnRhY3RDYXJkLFxuICAgICAgdXNlclBsYW5zLFxuICAgIH0gPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XG5cbiAgICBpZiAoY3VycmVudFVzZXIuc2Vzc2lvbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoXG4gICAgICAgIGF3YWl0IEpXSy5hc0tleShjdXJyZW50VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckF0dHJpYnV0ZXMgPSBhd2FpdCB0aGlzLmF1dGgudXNlckF0dHJpYnV0ZXMoY29nbml0b1VzZXIpO1xuXG4gICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICBjb25zdCBwYXNzS2V5ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmtleUZhY3RvcnkuZGVyaXZlUGFzc0tleSh7XG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgLi4uY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkucGFzc0tleS5wYXNzS2V5UGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgKS5qd2s7XG5cbiAgICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2UucGVyc2lzdE1hc3RlcktleShcbiAgICAgICAgYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UudW53cmFwV2l0aFBhc3NLZXkoXG4gICAgICAgICAgY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkucGFzc0tleS5pZCxcbiAgICAgICAgICBwYXNzS2V5LFxuICAgICAgICAgIGN1cnJlbnRVc2VyLmN1cnJlbnRVc2VyS2V5Lm1hc3RlcktleS5pZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5wb3B1bGF0ZUtleXMoY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjdXJyZW50VXNlci5pZCxcbiAgICAgIHN1YjogdGhpcy5nZXRVc2VyQXR0cmlidXRlKCdzdWInLCB1c2VyQXR0cmlidXRlcyksXG4gICAgICB1c2VybmFtZTogY3VycmVudFVzZXIudXNlcm5hbWUsXG4gICAgICBjdXJyZW50VXNlcktleTogY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXksXG4gICAgICBnZXRBY2Nlc3NKd3RUb2tlbjogKCkgPT5cbiAgICAgICAgY29nbml0b1VzZXIuZ2V0U2lnbkluVXNlclNlc3Npb24oKS5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCksXG4gICAgICBlbWFpbDogdGhpcy5nZXRVc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIGVtYWlsVmVyaWZpZWQ6XG4gICAgICAgIHRoaXMuZ2V0VXNlckF0dHJpYnV0ZSgnZW1haWxfdmVyaWZpZWQnLCB1c2VyQXR0cmlidXRlcykgPT09ICd0cnVlJyxcbiAgICAgIHBob25lOiB0aGlzLmdldFVzZXJBdHRyaWJ1dGUoJ3Bob25lX251bWJlcicsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHBob25lVmVyaWZpZWQ6XG4gICAgICAgIHRoaXMuZ2V0VXNlckF0dHJpYnV0ZSgncGhvbmVfbnVtYmVyX3ZlcmlmaWVkJywgdXNlckF0dHJpYnV0ZXMpID09PVxuICAgICAgICAndHJ1ZScsXG4gICAgICBjb250YWN0Q2FyZDoge1xuICAgICAgICAuLi4oYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5kZWNyeXB0Q29udGFjdENhcmQoY29udGFjdENhcmQpKSxcbiAgICAgIH0sXG4gICAgICB1c2VyRGVsZXRlOiBjdXJyZW50VXNlci51c2VyRGVsZXRlLFxuICAgICAgdXNlclBsYW5zLFxuICAgICAgaGFzVFBWYXVsdEFjY2VzczogdGhpcy5tYXBUUFZhdWx0QWNjZXNzKGN1cnJlbnRVc2VyLmZlYXR1cmVzKSxcbiAgICAgIGZlYXR1cmVzOiBjdXJyZW50VXNlci5mZWF0dXJlcyxcbiAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBjdXJyZW50VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHdhdGNoQXV0aCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh1YlN1YmplY3Q7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFVzZXIgPSBudWxsO1xuICAgIHRoaXMua2V5U2VydmljZS5wdXJnZUtleXMoKTtcbiAgICB0aGlzLmtleUdyYXBoU2VydmljZS5wdXJnZUtleXMoKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmF1dGguc2lnbk91dCgpLCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnNpZ25PdXQoKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyQXR0cmlidXRlKFxuICAgIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyxcbiAgICB1c2VyQXR0cmlidXRlczogQ29nbml0b1VzZXJBdHRyaWJ1dGVbXVxuICApIHtcbiAgICBjb25zdCB1c2VyQXR0cmlidXRlID0gdXNlckF0dHJpYnV0ZXMuZmluZChcbiAgICAgICh4KSA9PiB4LmdldE5hbWUoKSA9PT0gYXR0cmlidXRlTmFtZVxuICAgICk7XG5cbiAgICByZXR1cm4gdXNlckF0dHJpYnV0ZSA/IHVzZXJBdHRyaWJ1dGUuZ2V0VmFsdWUoKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZFJlc2V0VXNlcihwYXNzd29yZD86IHN0cmluZyk6IFByb21pc2U8VHBQYXNzd29yZFJlc2V0VXNlcj4ge1xuICAgIGNvbnN0IHsgdHBQYXNzd29yZFJlc2V0VXNlcjogcmVzZXRVc2VyIH0gPSBhd2FpdCB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICBxdWVyeTogVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5LFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc2V0VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSkge1xuICAgICAgdGhpcy5wZXJzaXN0U2VydmljZS5zZXRTZXJ2ZXJTZXNzaW9uRW5jcnlwdGlvbktleShcbiAgICAgICAgYXdhaXQgSldLLmFzS2V5KHJlc2V0VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBrZXlzXG4gICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICBjb25zdCBwYXNzS2V5ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmtleUZhY3RvcnkuZGVyaXZlUGFzc0tleSh7XG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgLi4ucmVzZXRVc2VyLnBhc3NLZXkucGFzc0tleVBhcmFtcyxcbiAgICAgICAgfSlcbiAgICAgICkuandrO1xuXG4gICAgICBhd2FpdCB0aGlzLmlkbGVTZXJ2aWNlLnBlcnNpc3RNYXN0ZXJLZXkoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLnVud3JhcFdpdGhQYXNzS2V5KFxuICAgICAgICAgIHJlc2V0VXNlci5wYXNzS2V5LmlkLFxuICAgICAgICAgIHBhc3NLZXksXG4gICAgICAgICAgcmVzZXRVc2VyLm1hc3RlcktleS5pZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMua2V5U2VydmljZS5wb3B1bGF0ZUtleXMoe1xuICAgICAgcGFzc0tleToge1xuICAgICAgICBpZDogcmVzZXRVc2VyLnBhc3NLZXkuaWQsXG4gICAgICB9LFxuICAgICAgbWFzdGVyS2V5OiB7XG4gICAgICAgIGlkOiByZXNldFVzZXIubWFzdGVyS2V5LmlkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGVzID0gYXdhaXQgdGhpcy5hdXRoLnVzZXJBdHRyaWJ1dGVzKFxuICAgICAgYXdhaXQgdGhpcy5hdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpXG4gICAgKTtcbiAgICBjb25zdCBzdWIgPSB0aGlzLmdldFVzZXJBdHRyaWJ1dGUoJ3N1YicsIHVzZXJBdHRyaWJ1dGVzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4oYXdhaXQgdGhpcy50cFBhc3N3b3JkUmVzZXRQcm9jZXNzb3JTZXJ2aWNlLnByb2Nlc3NUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZShcbiAgICAgICAgcmVzZXRVc2VyXG4gICAgICApKSxcbiAgICAgIHN1YixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hBY2Nlc3NUb2tlbigpIHtcbiAgICBjb25zdCBjb2duaXRvVXNlcjogQ29nbml0b1VzZXIgPSBhd2FpdCB0aGlzLmF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gY29nbml0b1VzZXIuZ2V0U2lnbkluVXNlclNlc3Npb24oKS5nZXRSZWZyZXNoVG9rZW4oKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb2duaXRvVXNlci5yZWZyZXNoU2Vzc2lvbihyZWZyZXNoVG9rZW4sIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW46ICcsIGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1Rva2VuIHJlZnJlc2ggY29tcGxldGU6ICcsIGRhdGEpO1xuICAgICAgICAgIHJlc29sdmUoMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVSZXF1ZXN0KG5ld1Bhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXNldFVzZXIgPSBhd2FpdCB0aGlzLmdldFJlc2V0VXNlcih0cnVlKTtcblxuICAgIGlmIChyZXNldFVzZXIuc3RhdGUgIT09IFRwQ2xhaW1TdGF0ZS5BUFBST1ZFRCkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdQYXNzd29yZCByZXNldCByZXF1ZXN0IGhhcyBub3QgYmVlbiBhcHByb3ZlZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUHJlcGFyZSBhbGwgbWF0ZXJpYWxzIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gZXJyb3JzLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgYXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLnJlY292ZXJBc3NlbWJseUtleShyZXNldFVzZXIpO1xuXG4gICAgY29uc3QgeyByb290S2V5IH0gPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIHJlc2V0VXNlci5hc3NlbWJseUNpcGhlckRhdGFcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKHJvb3RLZXkpO1xuXG4gICAgLy8gTWFraW5nIHN1cmUgaXQncyBhIHZhbGlkIGtleS5cbiAgICBjb25zdCByb290S2V5SndrID0gYXdhaXQgSldLLmFzS2V5KHJvb3RLZXkpO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UuZ2V0S2V5KHJlc2V0VXNlci5tYXN0ZXJLZXkuaWQpO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5V3JhcHBlZFJvb3RLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIG1hc3RlcktleS5qd2ssXG4gICAgICByb290S2V5SndrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICAvLyBUaGUgbmV3IHBhc3N3b3JkXG4gICAgY29uc3QgbmV3UGFzc0lkcFJlc3VsdCA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVQYXNzSWRwKHtcbiAgICAgIHBhc3N3b3JkOiBuZXdQYXNzd29yZCxcbiAgICAgIC4uLnJlc2V0VXNlci5wYXNzS2V5LnBhc3NJZHBQYXJhbXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXdJZHBQYXNzd29yZCA9IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcoXG4gICAgICBuZXdQYXNzSWRwUmVzdWx0Lmp3a1xuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEdldCBhc3NlbWJseSBrZXkgY2hhbGxlbmdlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjaGFsbGVuZ2UgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24sXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpbnB1dDoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5jcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlLmNoYWxsZW5nZTtcblxuICAgIGNvbnNvbGUubG9nKGNoYWxsZW5nZSk7XG5cbiAgICAvLyBTaWduIHRoZSBjaGFsbGVuZ2VcbiAgICAvLyBHZW5lcmF0ZSBhIGNsaWVudCBzaWRlIG5vbmNlIHRoYXQncyBubyBpbiB0aGUgc2VydmVyJ3MgY29udHJvbC5cbiAgICBjaGFsbGVuZ2UuY2xpZW50Tm9uY2UgPSB0aGlzLmtleUZhY3RvcnkucmFuZG9tU3RyaW5nKFxuICAgICAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY2hhbGxlbmdlKTtcblxuICAgIGNvbnN0IGFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIHJlc2V0VXNlci53cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclBya1xuICAgICk7XG4gICAgY29uc3Qgc2lnbmVkQ2hhbGxlbmdlID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKFxuICAgICAgYXNzZW1ibHlLZXlWZXJpZmllclByayxcbiAgICAgIGNoYWxsZW5nZVxuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIENoYW5nZSBwYXNzd29yZCBmb3IgdGhlIG9yaWdpbmFsIHVzZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHRlbXBJZHBQYXNzd29yZCA9IChcbiAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFxuICAgICAgICBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgbXV0YXRpb246IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgc2lnbmVkQ2hhbGxlbmdlOiBKU09OLnN0cmluZ2lmeShzaWduZWRDaGFsbGVuZ2UpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIGluY2x1ZGVLZXlHcmFwaDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICApLnByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdC5pZHBQYXNzd29yZDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTG9naW4gYXMgdGhlIG9yaWdpbmFsIHVzZXIgdXNpbmcgbmV3IHRlbXBvcmFyeSBwYXNzd29yZFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG9yaWdpbmFsIGFjY291bnQncyBwYXNzd29yZCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gYSB0ZW1wb3JhcnkgcGFzc3dvcmQuIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSBmb3IgdGhlIHVzZXJcbiAgICAvLyB0byB1c2UgdGhlIG9yaWdpbmFsIHBhc3N3b3JkIHRvIGxvZ2luLiBBbnkgc3VjY2Vzc2Z1bCBsb2dpblxuICAgIC8vIGNhbiBvbmx5IGJlIHVzaW5nIHRoZSB0ZW1wb3JhcnkgcGFzc3dvcmQuIFNvIGl0J3Mgc2FmZSB0byBhc3N1bWVcbiAgICAvLyB0aGF0IHdlIHdhbnQgdG8gXCJjb21wbGV0ZVwiIHRoZSBwYXNzd29yZCByZXNldC5cblxuICAgIC8vIFRoZSBtYXliZSAyRkEgc28gd2UgbGlzdGVuIGZvciB0aGUgYXV0aCBldmVudCBmcm9tIEFtcGxpZnkuXG4gICAgY29uc3QgcmV0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lciA9IGFzeW5jIChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnBheWxvYWQuZXZlbnQgIT09ICdzaWduSW4nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgSHViLnJlbW92ZSgnYXV0aCcsIGxpc3RlbmVyKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhLnBheWxvYWQpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuYXV0aC5zaWduSW4ocmVzZXRVc2VyLnVzZXJuYW1lLCBuZXdJZHBQYXNzd29yZCk7XG5cbiAgICAgICAgLy8gU3dpdGNoIG92ZXIgdG8gdGhlIG5ldyBzZXQgb2Yga2V5c1xuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgICBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgICBtdXRhdGlvbjogQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBtYXN0ZXJLZXlXcmFwcGVkUm9vdEtleSxcbiAgICAgICAgICAgICAgICBtYXN0ZXJLZXlJZDogbWFzdGVyS2V5LmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIEh1Yi5saXN0ZW4oJ2F1dGgnLCBsaXN0ZW5lcik7XG4gICAgfSk7XG5cbiAgICAvLyBTaWduaW4gYXMgdGhlIG9yaWdpbmFsIHVzZXIuIFBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0IHRvIHRlbXBvcmFyeSBvbmUuIEl0IHNob3VsZCByZXR1cm5cbiAgICAvLyB3aXRoIE5FV19QQVNTV09SRF9SRVFVSVJFRFxuICAgIGxldCB1c2VyID0gYXdhaXQgdGhpcy5hdXRoLnNpZ25JbihyZXNldFVzZXIudXNlcm5hbWUsIHRlbXBJZHBQYXNzd29yZCwge1xuICAgICAgbm9Qcm94eTogJ3RydWUnLFxuICAgIH0pO1xuXG4gICAgaWYgKHVzZXIuY2hhbGxlbmdlTmFtZSAhPT0gJ05FV19QQVNTV09SRF9SRVFVSVJFRCcpIHtcbiAgICAgIHRocm93IG5ldyBMckV4Y2VwdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ0ludGVybmFsIGVycm9yLiBFeHBlY3RpbmcgQ29nbml0byB0byBoYXZlIGRvbmUgYSBwYXNzd29yZCByZXNldCBhZnRlciBjYWxsIHRvIFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLicsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbmV3IHBhc3N3b3JkIG9uIElkcFxuICAgIC8vIHRoZSBhd3NGZXRjaCgpIGZ1bmN0aW9uIHBhc3NlcyBORVdfUEFTU1dPUkRfUkVRVUlSRUQgZGlyZWN0bHkgdG8gQVdTIHdpdGhvdXRcbiAgICAvLyBnb2luZyB0aHJvdWdoIHRoZSBwcm94eS5cbiAgICB1c2VyID0gYXdhaXQgdGhpcy5hdXRoLmNvbXBsZXRlTmV3UGFzc3dvcmQodXNlciwgbmV3SWRwUGFzc3dvcmQsIHt9KTtcblxuICAgIHJldHVybiByZXRQcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgcmVzZXRVc2VyOiBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZVxuICApOiBQcm9taXNlPEpXSy5LZXk+IHtcbiAgICBjb25zdCBwcmsgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkocmVzZXRVc2VyLnB4ay5pZCk7XG5cbiAgICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcmVzZXRVc2VyLmFwcHJvdmFsc1xuICAgICAgICAuZmlsdGVyKChhcHByb3ZhbCkgPT4gISFhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleSlcbiAgICAgICAgLm1hcCgoYXBwcm92YWwpID0+XG4gICAgICAgICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICAgICAgcHJrLFxuICAgICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXNzZW1ibHlDb250cm9sbGVyLnJlY292ZXJBc3NlbWJseUtleShwYXJ0aWFscyk7XG4gIH1cbn1cbiJdfQ==
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0csT0FBTyxFQUFFLFlBQVksRUFBMkIsTUFBTSxjQUFjLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUNMLHFDQUFxQyxFQUNyQyxpQ0FBaUMsR0FDbEMsTUFBTSxrREFBa0QsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RyxPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG9DQUFvQyxFQUNwQyx5Q0FBeUMsR0FDMUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQiwyQkFBMkIsRUFDM0IsV0FBVyxHQUNaLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFJTCxjQUFjLEdBRWYsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBaUMsRUFBRSxFQUFFO0lBQ2xFLE9BQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQVNGLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFDNkIsTUFBdUIsRUFDMUMsSUFBZSxFQUNmLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLFNBQTJCLEVBQzNCLCtCQUFnRSxFQUNoRSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsYUFBNEIsRUFDNUIsa0JBQXFEO1FBYmxDLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQzFDLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFDaEUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQztRQWxCdkQsZUFBVSxHQUF1QixJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztJQW1CaEUsQ0FBQztJQUVTLFVBQVU7O1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDO0tBQUE7SUFFYSxZQUFZLENBQ3hCLFlBQW9CLEVBQ3BCLFFBQWdCLEVBQ2hCLGFBQTRCLEVBQzVCLGNBQThCOztZQUU5QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxpQkFDdkQsUUFBUSxJQUNMLGFBQWEsRUFDaEIsQ0FBQztZQUNILGtEQUFrRDtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNqQyxZQUFZLEVBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQ3pELENBQUM7WUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztZQUVyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVhLFFBQVEsQ0FDcEIsWUFBb0IsRUFDcEIsUUFBZ0I7O1lBRWhCLGlEQUFpRDtZQUNqRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FDakUsWUFBWSxDQUNiLENBQUM7WUFFRixJQUNFLGdCQUFnQixDQUFDLG9CQUFvQixLQUFLLG9CQUFvQixDQUFDLFVBQVUsRUFDekU7Z0JBQ0EsTUFBTSxJQUFJLDJCQUEyQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7YUFDM0U7WUFFRCxJQUNFLGdCQUFnQixDQUFDLG9CQUFvQixLQUFLLG9CQUFvQixDQUFDLFFBQVEsRUFDdkU7Z0JBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNqQyxtR0FBbUc7Z0JBQ25HLElBQUk7b0JBQ0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUNsQyxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixDQUFDLGdCQUFnQixFQUNqQyxjQUFjLENBQUMsWUFBWSxDQUM1QixDQUFDO29CQUNGLHlEQUF5RDtvQkFFekQsZ0NBQWdDO29CQUNoQyx3RUFBd0U7b0JBRXhFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFFbkMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsMENBQTBDO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssd0JBQXdCLEVBQUU7d0JBQzNDLE1BQU0sS0FBSyxDQUFDO3FCQUNiO29CQUNELGlEQUFpRDtpQkFDbEQ7Z0JBRUQsZ0ZBQWdGO2dCQUNoRixJQUFJO29CQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FDbEMsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFDckMsY0FBYyxDQUFDLFlBQVksQ0FDNUIsQ0FBQztvQkFDRix1QkFBdUI7b0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFFbkMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsMENBQTBDO29CQUMxQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssd0JBQXdCO3dCQUMzQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FDdkIsc0dBQXNHLENBQ3ZHO3dCQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ1g7YUFDRjtZQUVELCtDQUErQztZQUMvQyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtnQkFDcEMsSUFBSTtvQkFDRiw0RUFBNEU7b0JBQzVFLDhDQUE4QztvQkFDOUMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO29CQUMvQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQ2pDLEtBQUssQ0FBQyxhQUFhLEVBQ25CLFFBQVEsRUFDUixLQUFLLENBQUMsYUFBYSxFQUNuQixjQUFjLENBQUMsSUFBSSxDQUNwQixDQUFDO29CQUNGLEdBQUcsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7b0JBRWpDLE9BQU8sR0FBRyxDQUFDO2lCQUNaO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNaLHVDQUF1QztpQkFDeEM7YUFDRjtZQUVELHdCQUF3QjtZQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FDNUIsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFDckMsY0FBYyxDQUFDLElBQUksQ0FDcEIsQ0FBQztRQUNKLENBQUM7S0FBQTtJQUVlLDBCQUEwQjs7WUFDeEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ2hCLE1BQU0sR0FBRyxHQUNQLHlGQUF5RixDQUFDO29CQUM1RixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN0QjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsSUFBSSxDQUNWLHVGQUF1RixDQUN4RixDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsK0RBQStEO2dCQUMvRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDM0IsSUFBSSxVQUFVLENBQUM7b0JBQ2IsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsU0FBUyxFQUFFO3dCQUNULEtBQUssRUFBRTs0QkFDTCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNsQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQ2xDO3lCQUNGO3FCQUNGO2lCQUNGLENBQUMsRUFDRjtvQkFDRSxlQUFlLEVBQUUsS0FBSztpQkFDdkIsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN6RTtRQUNILENBQUM7S0FBQTtJQUVlLGNBQWMsQ0FBQyxXQUFpQzs7WUFDOUQsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0tBQUE7SUFFWSxLQUFLLENBQ2hCLFlBQW9CLEVBQ3BCLFFBQWdCLEVBQ2hCLEVBQUUsMkJBQTJCLEdBQUcsSUFBSSxLQUFtQixFQUFFOzs7WUFFekQsSUFBSSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUvRCxJQUNFLDJCQUEyQjtnQkFDM0IsT0FBQSxXQUFXLENBQUMsU0FBUywwQ0FBRSxLQUFLLE1BQUssWUFBWSxDQUFDLFFBQVEsRUFDdEQ7Z0JBQ0EsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUM1RDtZQUVELE9BQU8sV0FBVyxDQUFDOztLQUNwQjtJQUVZLFNBQVMsQ0FDcEIsWUFBb0IsRUFDcEIsUUFBZ0I7O1lBRWhCLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFaEUsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDdkQ7WUFFRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdkMsSUFBSSxXQUFXLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3JDLGlEQUFpRDtnQkFDakQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUMzQztpQkFBTTtnQkFDTCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyw4Q0FBOEM7Z0JBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQztLQUFBO0lBRUQsMEZBQTBGO0lBQzdFLFdBQVcsQ0FDdEIsU0FBK0IsRUFDL0IsUUFBZ0IsRUFDaEIsVUFBbUIsRUFDbkIsSUFBWTs7WUFFWixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXhFLGtFQUFrRTtZQUVsRSxNQUFNLFdBQVcsR0FBZ0IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFNUUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXJDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFeEQsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsV0FBVyxDQUFDLHlCQUF5QixDQUFDO29CQUNwQyxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztvQkFDbkIsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbkMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVLLHNCQUFzQixDQUFDLElBQTBCOztZQUNyRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSTtxQkFDbEIsb0JBQW9CLEVBQUU7cUJBQ3RCLGNBQWMsRUFBRTtxQkFDaEIsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FDL0MsUUFBUSxFQUNSLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FDcEQsQ0FBQzthQUNIO1FBQ0gsQ0FBQztLQUFBO0lBRUssa0JBQWtCLENBQ3RCLFNBQWtCLEtBQUs7O1lBRXZCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRS9ELElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO2dCQUN6RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQztLQUFBO0lBRUssWUFBWSxDQUFDLFNBQWtCLEtBQUs7O1lBQ3hDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNwQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzthQUM5QjtZQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVuRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyw4Q0FBOEM7WUFFOUUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRUssT0FBTyxDQUFDLFNBQWtCLEtBQUs7O1lBQ25DLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQ3BDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUMzQyxDQUFDO1lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDhDQUE4QztZQUM5RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztLQUFBO0lBRU8sZ0JBQWdCLENBQUMsUUFBYztRQUNyQyxNQUFNLGNBQWMsR0FBRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsT0FBTyxDQUFDO1FBQ3pDLE9BQU8sQ0FDTCxDQUFBLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxNQUFNLElBQUcsQ0FBQztZQUMxQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQ3JFLENBQUM7SUFDSixDQUFDO0lBRWEsUUFBUSxDQUNwQixXQUF3QixFQUN4QixRQUFpQjs7WUFFakIsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQzNDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUU3QyxJQUFJLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FDL0MsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNsRCxDQUFDO2FBQ0g7WUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRW5FLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sT0FBTyxHQUFHLENBQ2QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsaUJBQ2pDLFFBQVEsSUFDTCxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQ25ELENBQ0gsQ0FBQyxHQUFHLENBQUM7Z0JBRU4sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUNyQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQzFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFDckMsT0FBTyxFQUNQLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDeEMsQ0FDRixDQUFDO2FBQ0g7WUFDRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVwRSxPQUFPO2dCQUNMLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO2dCQUNqRCxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7Z0JBQzlCLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYztnQkFDMUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQ3RCLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDbkUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDO2dCQUNyRCxhQUFhLEVBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxLQUFLLE1BQU07Z0JBQ3BFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztnQkFDNUQsYUFBYSxFQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUM7b0JBQzlELE1BQU07Z0JBQ1IsV0FBVyxvQkFDTixDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUMvRDtnQkFDRCxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7Z0JBQ2xDLFNBQVM7Z0JBQ1QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtnQkFDOUIsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLG9CQUFvQjthQUN2RCxDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRVksTUFBTTs7WUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWpDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQztLQUFBO0lBRU8sZ0JBQWdCLENBQ3RCLGFBQXFCLEVBQ3JCLGNBQXNDO1FBRXRDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssYUFBYSxDQUNyQyxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUM7SUFFWSxhQUFhLENBQUMsUUFBaUI7O1lBQzFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNwRSxLQUFLLEVBQUUsd0JBQXdCO2FBQ2hDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxDQUFDLG9CQUFvQixFQUFFO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUMvQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQ2hELENBQUM7YUFDSDtZQUVELGtCQUFrQjtZQUNsQixJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLE9BQU8sR0FBRyxDQUNkLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLGlCQUNqQyxRQUFRLElBQ0wsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQ2xDLENBQ0gsQ0FBQyxHQUFHLENBQUM7Z0JBRU4sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUNyQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQzFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUNwQixPQUFPLEVBQ1AsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3ZCLENBQ0YsQ0FBQzthQUNIO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQzNCLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2lCQUN6QjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsRUFBRSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtpQkFDM0I7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUNuRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FDM0MsQ0FBQztZQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFekQsdUNBQ0ssQ0FBQyxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FBQyw4QkFBOEIsQ0FDM0UsU0FBUyxDQUNWLENBQUMsS0FDRixHQUFHLElBQ0g7UUFDSixDQUFDO0tBQUE7SUFFWSxrQkFBa0I7O1lBQzdCLE1BQU0sV0FBVyxHQUFnQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUM1RSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUxRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNyQyxXQUFXLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDckQsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNiO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQzlDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDWjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRUssZUFBZSxDQUFDLFdBQW1COztZQUN2QyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFaEQsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7Z0JBQzdDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsK0NBQStDLENBQ2hELENBQUM7YUFDSDtZQUVELGlFQUFpRTtZQUNqRSx1REFBdUQ7WUFDdkQsaUVBQWlFO1lBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTdELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQ3RELFdBQVcsRUFDWCxTQUFTLENBQUMsa0JBQWtCLENBQzdCLENBQUM7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXJCLGdDQUFnQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTVFLE1BQU0sdUJBQXVCLEdBQzNCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsU0FBUyxDQUFDLEdBQUcsRUFDYixVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUN4QixDQUFDO1lBRUosbUJBQW1CO1lBQ25CLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsaUJBQzFELFFBQVEsRUFBRSxXQUFXLElBQ2xCLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNsQyxDQUFDO1lBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FDMUQsZ0JBQWdCLENBQUMsR0FBRyxDQUNyQixDQUFDO1lBRUYsaUVBQWlFO1lBQ2pFLDZCQUE2QjtZQUM3QixpRUFBaUU7WUFDakUsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDM0IsSUFBSSxVQUFVLENBQUM7Z0JBQ2IsUUFBUSxFQUFFLG9DQUFvQztnQkFDOUMsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRSxFQUFFO2lCQUNWO2FBQ0YsQ0FBQyxFQUNGO2dCQUNFLGVBQWUsRUFBRSxLQUFLO2FBQ3ZCLENBQ0YsQ0FDRixDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQztZQUV6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZCLHFCQUFxQjtZQUNyQixrRUFBa0U7WUFDbEUsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDbEQscUNBQXFDLENBQ3RDLENBQUM7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZCLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUNqRSxXQUFXLEVBQ1gsU0FBUyxDQUFDLDZCQUE2QixDQUN4QyxDQUFDO1lBQ0YsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN2RCxzQkFBc0IsRUFDdEIsU0FBUyxDQUNWLENBQUM7WUFFRixpRUFBaUU7WUFDakUsd0NBQXdDO1lBQ3hDLGlFQUFpRTtZQUNqRSxNQUFNLGVBQWUsR0FBRyxDQUN0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUMzQixJQUFJLFVBQVUsQ0FBQztnQkFDYixRQUFRLEVBQUUseUNBQXlDO2dCQUNuRCxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQkFDakQ7aUJBQ0Y7YUFDRixDQUFDLEVBQ0Y7Z0JBQ0UsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FDRixDQUNGLENBQUMsaUNBQWlDLENBQUMsV0FBVyxDQUFDO1lBRWhELGlFQUFpRTtZQUNqRSwwREFBMEQ7WUFDMUQsaUVBQWlFO1lBQ2pFLGtFQUFrRTtZQUNsRSxpRUFBaUU7WUFDakUsOERBQThEO1lBQzlELG1FQUFtRTtZQUNuRSxpREFBaUQ7WUFFakQsOERBQThEO1lBQzlELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQy9DLE1BQU0sUUFBUSxHQUFHLENBQU8sSUFBSSxFQUFFLEVBQUU7b0JBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO3dCQUNuQyxPQUFPO3FCQUNSO29CQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUU3QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFMUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUUzRCxxQ0FBcUM7b0JBQ3JDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQzNCLElBQUksVUFBVSxDQUFDO3dCQUNiLFFBQVEsRUFBRSxzQ0FBc0M7d0JBQ2hELFNBQVMsRUFBRTs0QkFDVCxLQUFLLEVBQUU7Z0NBQ0wsdUJBQXVCO2dDQUN2QixXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUU7NkJBQzFCO3lCQUNGO3FCQUNGLENBQUMsQ0FDSCxDQUFDO29CQUVGLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUMsQ0FBQSxDQUFDO2dCQUVGLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBRUgsMEZBQTBGO1lBQzFGLDZCQUE2QjtZQUM3QixJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFO2dCQUNyRSxPQUFPLEVBQUUsTUFBTTthQUNoQixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssdUJBQXVCLEVBQUU7Z0JBQ2xELE1BQU0sSUFBSSxXQUFXLENBQUM7b0JBQ3BCLE9BQU8sRUFDTCwwSEFBMEg7aUJBQzdILENBQUMsQ0FBQzthQUNKO1lBRUQsMEJBQTBCO1lBQzFCLCtFQUErRTtZQUMvRSwyQkFBMkI7WUFDM0IsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXJFLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7S0FBQTtJQUVhLGtCQUFrQixDQUM5QixTQUFrQzs7WUFFbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWhFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDaEMsU0FBUyxDQUFDLFNBQVM7aUJBQ2hCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDakUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FDNUIsR0FBRyxFQUNILFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FDMUMsQ0FDRixDQUNKLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxDQUFDO0tBQUE7Ozs7WUExbkJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQU9JLE1BQU0sU0FBQyxTQUFTO1lBL0RaLFNBQVM7WUFVVCxpQkFBaUI7WUFFakIsVUFBVTtZQUtWLGNBQWM7WUFOZCxlQUFlO1lBSWYsZUFBZTtZQU5mLFdBQVc7WUFKWCxnQkFBZ0I7WUFDaEIsK0JBQStCO1lBVS9CLGNBQWM7WUFSZCxpQkFBaUI7WUFXakIsYUFBYTtZQUtiLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlciB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoJztcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XG5pbXBvcnQgeyBIdWIgfSBmcm9tICdAYXdzLWFtcGxpZnkvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlckF0dHJpYnV0ZSB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlLCBMck11dGF0aW9uIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0UHJvY2Vzc29yU2VydmljZSB9IGZyb20gJy4uL2FwaS9xdWVyeS1wcm9jZXNzb3IvdHAtcGFzc3dvcmQtcmVzZXQtcHJvY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHBDbGFpbVN0YXRlLCBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElkbGVTZXJ2aWNlIH0gZnJvbSAnLi4vaWRsZS9pZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBQYXNzSWRwUGFyYW1zIH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdFNlcnZpY2UgfSBmcm9tICcuLi9wZXJzaXN0L3BlcnNpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3N3b3JkQ2hhbmdlU3RhdHVzIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFNsaXAzOVNlcnZpY2UgfSBmcm9tICcuLi9zbGlwMzkvc2xpcDM5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSCxcbiAgVFBfUEFTU1dPUkRfUkVTRVRfVVNFUk5BTUVfU1VGRklYLFxufSBmcm9tICcuLi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0QXNzZW1ibHlDb250cm9sbGVyIH0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uLFxuICBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsJztcbmltcG9ydCB7IFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeSB9IGZyb20gJy4uL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LnByaXZhdGUuZ3FsJztcbmltcG9ydCB7XG4gIExyQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgTHJCYWRTdGF0ZUV4Y2VwdGlvbixcbiAgTHJDb25jdXJyZW50QWNjZXNzRXhjZXB0aW9uLFxuICBMckV4Y2VwdGlvbixcbn0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24gfSBmcm9tICcuL2F1dGguZ3FsJztcbmltcG9ydCB7XG4gIENvZ25pdG9DaGFsbGVuZ2VVc2VyLFxuICBDdXJyZW50VXNlcixcbiAgTG9naW5SZXN1bHQsXG4gIFJlY292ZXJ5U3RhdHVzLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyLFxufSBmcm9tICcuL2F1dGgudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGlzZUF1dGggPSAoYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlKSA9PiB7XG4gIHJldHVybiAoKSA9PiBhdXRoU2VydmljZS5pbml0aWFsaXNlKCk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luT3B0aW9ucyB7XG4gIHRwUGFzc3dvcmRSZXNldEF1dG9Db21wbGV0ZT86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaWZlUmVhZHlBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgaHViU3ViamVjdDogUmVwbGF5U3ViamVjdDxhbnk+ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBjdXJyZW50VXNlcjogQ3VycmVudFVzZXI7XG4gIHByaXZhdGUgY3VycmVudFJlc2V0VXNlcjogVHBQYXNzd29yZFJlc2V0VXNlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhDbGFzcyxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoU2VydmljZTogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFzc3dvcmRTZXJ2aWNlOiBQYXNzd29yZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZGxlU2VydmljZTogSWRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsckdyYXBoUUw6IExyR3JhcGhRTFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cFBhc3N3b3JkUmVzZXRQcm9jZXNzb3JTZXJ2aWNlOiBUcFBhc3N3b3JkUmVzZXRQcm9jZXNzb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyc2lzdFNlcnZpY2U6IFBlcnNpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2xpcDM5U2VydmljZTogU2xpcDM5U2VydmljZSxcbiAgICBwcml2YXRlIGFzc2VtYmx5Q29udHJvbGxlcjogVHBQYXNzd29yZFJlc2V0QXNzZW1ibHlDb250cm9sbGVyXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGlzZSgpIHtcbiAgICBIdWIubGlzdGVuKCdhdXRoJywgKGRhdGEpID0+IHRoaXMuaHViU3ViamVjdC5uZXh0KGRhdGEucGF5bG9hZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbklkcEltcGwoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICBwYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zLFxuICAgIHJlY292ZXJ5U3RhdHVzOiBSZWNvdmVyeVN0YXR1c1xuICApOiBQcm9taXNlPENvZ25pdG9DaGFsbGVuZ2VVc2VyPiB7XG4gICAgY29uc3QgcGFzc0lkcFJlc3VsdCA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVQYXNzSWRwKHtcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgLi4ucGFzc0lkcFBhcmFtcyxcbiAgICB9KTtcbiAgICAvLyBVc2UgdGhlIGRlcml2ZWQgcGFzc3dvcmQgdG8gc2lnbmluIHdpdGggY29nbml0b1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmF1dGguc2lnbkluKFxuICAgICAgZW1haWxPclBob25lLFxuICAgICAgdGhpcy5wYXNzd29yZFNlcnZpY2UuZ2V0UGFzc0lkcFN0cmluZyhwYXNzSWRwUmVzdWx0Lmp3aylcbiAgICApO1xuXG4gICAgdXNlci5yZWNvdmVyeVN0YXR1cyA9IHJlY292ZXJ5U3RhdHVzO1xuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luSWRwKFxuICAgIGVtYWlsT3JQaG9uZTogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxDb2duaXRvQ2hhbGxlbmdlVXNlcj4ge1xuICAgIC8vIERvd25sb2FkIHRoZSBzYWx0IG5lZWRlZCB0byBkZXJpdmUgdGhlIFBhc3NJZHBcbiAgICBjb25zdCBwYXNzSWRwQXBpUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQYXNzSWRwUGFyYW1zKFxuICAgICAgZW1haWxPclBob25lXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIHBhc3NJZHBBcGlSZXN1bHQucGFzc3dvcmRDaGFuZ2VTdGF0dXMgPT09IFBhc3N3b3JkQ2hhbmdlU3RhdHVzLkluUHJvZ3Jlc3NcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBMckNvbmN1cnJlbnRBY2Nlc3NFeGNlcHRpb24oJ0EgcGFzc3dvcmQgY2hhbmdlIGlzIGluIHByb2dyZXNzJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuUmVjb3ZlcnlcbiAgICApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbiByZWNvdmVyeSBtb2RlLicpO1xuICAgICAgLy8gTGV0J3Mgc2F5IHdlIGRvbid0IGtub3cgaWYgdGhlIHBhc3N3b3JkIGlzIHRoZSBuZXcgb25lIG9yIHRoZSBvbGQgb25lLiBXZSBqdXN0IGhhdmUgdG8gdHJ5IGJvdGguXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICAgICAgZW1haWxPclBob25lLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIHBhc3NJZHBBcGlSZXN1bHQubmV3UGFzc0lkcFBhcmFtcyxcbiAgICAgICAgICBSZWNvdmVyeVN0YXR1cy5ORVdfUEFTU1dPUkRcbiAgICAgICAgKTtcbiAgICAgICAgLy8gTmV3IHBhc3N3b3JkIHdvcmtlZC4gTGV0J3Mgc2V0IHRvIHRoZSBjdXJyZW50IHBhc3N3b3JkXG5cbiAgICAgICAgLy8gLS1Qb3RlbnRpYWwgRmFpbHVyZSBQb2ludCAxLS1cbiAgICAgICAgLy8gaWYgY2hhbmdlUGFzc3dvcmRDb21wbGV0ZSgpIGRvZXNuJ3QgZ2V0IGNhbGxlZCwgdGhlbiBpdCBzaG91bGQgcmVtYWluXG5cbiAgICAgICAgY29uc29sZS5sb2coJ05ldyBwYXNzd29yZCB3b3JrcyEnKTtcblxuICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIEp1c3QgYnViYmxlIHVwIGFueSBvdGhlciB0eXBlIG9mIGVycm9yLlxuICAgICAgICBpZiAoZXJyb3IuY29kZSAhPT0gJ05vdEF1dGhvcml6ZWRFeGNlcHRpb24nKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFzcywgdHJ5IGFnYWluIGFzc3VtaW5nIGl0J3MgdGhlIG9sZCBwYXNzd29yZFxuICAgICAgfVxuXG4gICAgICAvLyBOb3cgYXNzdW1lIGl0J3MgdGhlIHByZXZpb3VzIHBhc3N3b3JkLiBBbnkgZXhjZXB0aW9uIGlzIGFsbG93ZWQgdG8gYnViYmxlIHVwLlxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMubG9naW5JZHBJbXBsKFxuICAgICAgICAgIGVtYWlsT3JQaG9uZSxcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICBwYXNzSWRwQXBpUmVzdWx0LmN1cnJlbnRQYXNzSWRwUGFyYW1zLFxuICAgICAgICAgIFJlY292ZXJ5U3RhdHVzLk9MRF9QQVNTV09SRFxuICAgICAgICApO1xuICAgICAgICAvLyBPbGQgcGFzc3dvcmQgd29ya2VkLlxuICAgICAgICBjb25zb2xlLmxvZygnT2xkIHBhc3N3b3JkIHdvcmtzIScpO1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSnVzdCBidWJibGUgdXAgYW55IG90aGVyIHR5cGUgb2YgZXJyb3IuXG4gICAgICAgIHRocm93IGVycm9yLmNvZGUgPT09ICdOb3RBdXRob3JpemVkRXhjZXB0aW9uJ1xuICAgICAgICAgID8gbmV3IExyQmFkUmVxdWVzdEV4Y2VwdGlvbihcbiAgICAgICAgICAgICAgJ1RoZSBwYXNzd29yZCBjaGFuZ2UgcmVxdWVzdCB3YXMgaW50ZXJydXB0ZWQsIHBsZWFzZSB0cnkgdG8gbG9naW4gd2l0aCBib3RoIHlvdXIgbmV3IGFuZCBvbGQgcGFzc3dvcmQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcnkgYWdhaW5zdCBhcyB0aGUgVFAgcGFzc3dvcmQgcmVzZXQgYWNjb3VudFxuICAgIGlmIChwYXNzSWRwQXBpUmVzdWx0LnRwUGFzc3dvcmRSZXNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVFAgcGFzc3dvcmQgcmVzZXQgaXMgaW4gcHJvY2Vzcy4gV2UgbmVlZCB0byB0cnkgdGhlIHBhc3N3b3JkIGFnYWluc3QgYm90aFxuICAgICAgICAvLyBvcmlnaW5hbCBhY2NvdW50IGFuZCB0aGUgbmV3IHJlc2V0IGFjY291bnQuXG4gICAgICAgIGNvbnN0IHJlc2V0ID0gcGFzc0lkcEFwaVJlc3VsdC50cFBhc3N3b3JkUmVzZXQ7XG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHRoaXMubG9naW5JZHBJbXBsKFxuICAgICAgICAgIHJlc2V0LnJlc2V0VXNlcm5hbWUsXG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgcmVzZXQucGFzc0lkcFBhcmFtcyxcbiAgICAgICAgICBSZWNvdmVyeVN0YXR1cy5OT05FXG4gICAgICAgICk7XG4gICAgICAgIHJldC5pc1RwUGFzc3dvcmRSZXNldFVzZXIgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gY29udGludWUsIHRyeSBhZ2FpbiBhcyByZWd1bGFyIHVzZXIuXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTG9naW4gYXMgcmVndWxhciB1c2VyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9naW5JZHBJbXBsKFxuICAgICAgZW1haWxPclBob25lLFxuICAgICAgcGFzc3dvcmQsXG4gICAgICBwYXNzSWRwQXBpUmVzdWx0LmN1cnJlbnRQYXNzSWRwUGFyYW1zLFxuICAgICAgUmVjb3ZlcnlTdGF0dXMuTk9ORVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2Vzc2lvbkVuY3J5cHRpb25LZXkoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleSkge1xuICAgICAgaWYgKCFpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICdZb3Ugc2hvdWxkIG5vdCBzZXQgZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5PVRydWUgaW4gbW9kZSBwcm9kLiBJdCBkZWZhdWx0cyB0byBmYWxzZS4nO1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdZb3UgaGF2ZSBzZXQgZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5PVRydWUuIE1ha2Ugc3VyZSBub3QgdG8gZG8gdGhpcyBpbiBwcm9kIG1vZGUuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZXQgdGhlIHNlc3Npb24ga2V5IHRvIGEgbmV3IGVuY3J5cHRpb24ga2V5IGZvciB0aGlzIHNlc3Npb25cbiAgICAgIGNvbnN0IHNlc3Npb25FbmNyeXB0aW9uS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwubHJNdXRhdGUoXG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBzZXNzaW9uRW5jcnlwdGlvbktleS50b0pTT04odHJ1ZSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICB0aGlzLnBlcnNpc3RTZXJ2aWNlLnNldFNlcnZlclNlc3Npb25FbmNyeXB0aW9uS2V5KHNlc3Npb25FbmNyeXB0aW9uS2V5KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUG9zdEF1dGgoY29nbml0b1VzZXI6IENvZ25pdG9DaGFsbGVuZ2VVc2VyKSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQYXNzd29yZFJlY292ZXJ5KGNvZ25pdG9Vc2VyKTtcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVNlc3Npb25FbmNyeXB0aW9uS2V5KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9naW4oXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICB7IHRwUGFzc3dvcmRSZXNldEF1dG9Db21wbGV0ZSA9IHRydWUgfTogTG9naW5PcHRpb25zID0ge31cbiAgKSB7XG4gICAgbGV0IGxvZ2luUmVzdWx0ID0gYXdhaXQgdGhpcy5sb2dpbkltcGwoZW1haWxPclBob25lLCBwYXNzd29yZCk7XG5cbiAgICBpZiAoXG4gICAgICB0cFBhc3N3b3JkUmVzZXRBdXRvQ29tcGxldGUgJiZcbiAgICAgIGxvZ2luUmVzdWx0LnJlc2V0VXNlcj8uc3RhdGUgPT09IFRwQ2xhaW1TdGF0ZS5BUFBST1ZFRFxuICAgICkge1xuICAgICAgYXdhaXQgdGhpcy5jb21wbGV0ZVJlcXVlc3QocGFzc3dvcmQpO1xuICAgICAgbG9naW5SZXN1bHQgPSBhd2FpdCB0aGlzLmxvZ2luSW1wbChlbWFpbE9yUGhvbmUsIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9naW5SZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9naW5JbXBsKFxuICAgIGVtYWlsT3JQaG9uZTogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxMb2dpblJlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMubG9nb3V0KCk7XG4gICAgY29uc3QgY29nbml0b1VzZXIgPSBhd2FpdCB0aGlzLmxvZ2luSWRwKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuXG4gICAgLy8gdG9kbzogTWVldCBNRkEgY2hhbGxlbmdlcy5cbiAgICBpZiAoWydTTVNfTUZBJywgJ1NPRlRXQVJFX1RPS0VOX01GQSddLmluY2x1ZGVzKGNvZ25pdG9Vc2VyLmNoYWxsZW5nZU5hbWUpKSB7XG4gICAgICByZXR1cm4geyBoYXNDaGFsbGVuZ2U6IHRydWUsIGNoYWxsZW5nZTogY29nbml0b1VzZXIgfTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmhhbmRsZVBvc3RBdXRoKGNvZ25pdG9Vc2VyKTtcblxuICAgIGlmIChjb2duaXRvVXNlci5pc1RwUGFzc3dvcmRSZXNldFVzZXIpIHtcbiAgICAgIC8vIEFzc3VtaW5nIHRoZXJlIGlzIG5vIE1GQSBvbiB0aGUgVFAgcmVzZXQgdXNlci5cbiAgICAgIGNvbnN0IHJlc2V0VXNlciA9IGF3YWl0IHRoaXMubG9hZFJlc2V0VXNlcihwYXNzd29yZCk7XG4gICAgICByZXR1cm4geyBoYXNDaGFsbGVuZ2U6IGZhbHNlLCByZXNldFVzZXIgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMubG9hZFVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcbiAgICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2Uuc3RhcnQoKTsgLy8gUnVuIGlkbGVTZXJ2aWNlIHdoZW5ldmVyIHVzZXIgaXMgbG9nZ2VkIGluLlxuICAgICAgcmV0dXJuIHsgaGFzQ2hhbGxlbmdlOiBmYWxzZSwgdXNlciB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gPEFaPiBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgaXNUcFBhc3N3b3JkUmVzZXRVc2VyPVRydWUgY2FzZSBoZXJlIGFmdGVyIE1GQSBhcyB3ZWxsLlxuICBwdWJsaWMgYXN5bmMgdmVyaWZ5TG9naW4oXG4gICAgY2hhbGxlbmdlOiBDb2duaXRvQ2hhbGxlbmdlVXNlcixcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHJlbWVtYmVyTWU6IGJvb2xlYW4sXG4gICAgY29kZTogc3RyaW5nXG4gICk6IFByb21pc2U8Q3VycmVudFVzZXI+IHtcbiAgICBhd2FpdCB0aGlzLmF1dGguY29uZmlybVNpZ25JbihjaGFsbGVuZ2UsIGNvZGUsIGNoYWxsZW5nZS5jaGFsbGVuZ2VOYW1lKTtcblxuICAgIC8vIFRPRE86IHRoaXMuYXV0aC5jb25maXJtU2lnbkluKCkgY291bGQgcmV0dXJuIGFub3RoZXIgY2hhbGxlbmdlLlxuXG4gICAgY29uc3QgY29nbml0b1VzZXI6IENvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5hdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuXG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQb3N0QXV0aChjaGFsbGVuZ2UpO1xuXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMubG9hZFVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcblxuICAgIGlmIChyZW1lbWJlck1lKSB7XG4gICAgICBjb2duaXRvVXNlci5zZXREZXZpY2VTdGF0dXNSZW1lbWJlcmVkKHtcbiAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7fSxcbiAgICAgICAgb25GYWlsdXJlOiAoZSkgPT4gY29uc29sZS5lcnJvcihlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlUGFzc3dvcmRSZWNvdmVyeSh1c2VyOiBDb2duaXRvQ2hhbGxlbmdlVXNlcikge1xuICAgIGlmICh1c2VyLnJlY292ZXJ5U3RhdHVzICE9PSBSZWNvdmVyeVN0YXR1cy5OT05FKSB7XG4gICAgICBjb25zdCBqd3RUb2tlbiA9IHVzZXJcbiAgICAgICAgLmdldFNpZ25JblVzZXJTZXNzaW9uKClcbiAgICAgICAgLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgICAgLmdldEp3dFRva2VuKCk7XG4gICAgICBhd2FpdCB0aGlzLnBhc3N3b3JkU2VydmljZS5jaGFuZ2VQYXNzd29yZENvbXBsZXRlKFxuICAgICAgICBqd3RUb2tlbixcbiAgICAgICAgdXNlci5yZWNvdmVyeVN0YXR1cyA9PT0gUmVjb3ZlcnlTdGF0dXMuTkVXX1BBU1NXT1JEXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJPclJlc2V0VXNlcihcbiAgICByZWxvYWQ6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBQcm9taXNlPEN1cnJlbnRVc2VyIHwgVHBQYXNzd29yZFJlc2V0VXNlcj4ge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5hdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuXG4gICAgaWYgKGNvZ25pdG9Vc2VyLmdldFVzZXJuYW1lKCkuZW5kc1dpdGgoVFBfUEFTU1dPUkRfUkVTRVRfVVNFUk5BTUVfU1VGRklYKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVzZXRVc2VyKHJlbG9hZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVzZXIocmVsb2FkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRSZXNldFVzZXIocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFRwUGFzc3dvcmRSZXNldFVzZXI+IHtcbiAgICBpZiAoIXJlbG9hZCAmJiB0aGlzLmN1cnJlbnRSZXNldFVzZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNldFVzZXI7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50UmVzZXRVc2VyID0gYXdhaXQgdGhpcy5sb2FkUmVzZXRVc2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLmlkbGVTZXJ2aWNlLnN0YXJ0KCk7IC8vIFJ1biBpZGxlU2VydmljZSB3aGVuZXZlciB1c2VyIGlzIGxvZ2dlZCBpbi5cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNldFVzZXI7XG4gIH1cblxuICBhc3luYyBnZXRVc2VyKHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxDdXJyZW50VXNlcj4ge1xuICAgIGlmICghcmVsb2FkICYmIHRoaXMuY3VycmVudFVzZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRVc2VyO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gYXdhaXQgdGhpcy5sb2FkVXNlcihcbiAgICAgIGF3YWl0IHRoaXMuYXV0aC5jdXJyZW50QXV0aGVudGljYXRlZFVzZXIoKVxuICAgICk7XG4gICAgY29uc29sZS5sb2coJ1N0YXJ0aW5nIGlkbGUgc2VydmljZS4nKTtcbiAgICBhd2FpdCB0aGlzLmlkbGVTZXJ2aWNlLnN0YXJ0KCk7IC8vIFJ1biBpZGxlU2VydmljZSB3aGVuZXZlciB1c2VyIGlzIGxvZ2dlZCBpbi5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVFBWYXVsdEFjY2VzcyhmZWF0dXJlcz86IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRwVmF1bHRGZWF0dXJlID0gZmVhdHVyZXM/LnRwVmF1bHQ7XG4gICAgcmV0dXJuIChcbiAgICAgIHRwVmF1bHRGZWF0dXJlPy5sZW5ndGggPiAwICYmXG4gICAgICB0cFZhdWx0RmVhdHVyZS5zb21lKChmZWF0dXJlKSA9PiBmZWF0dXJlLnRvVXBwZXJDYXNlKCkgPT09ICdBQ0NFU1MnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyKFxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcixcbiAgICBwYXNzd29yZD86IHN0cmluZ1xuICApOiBQcm9taXNlPEN1cnJlbnRVc2VyPiB7XG4gICAgY29uc3QgeyBjdXJyZW50VXNlciwgY29udGFjdENhcmQsIHVzZXJQbGFucyB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcblxuICAgIGlmIChjdXJyZW50VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSkge1xuICAgICAgdGhpcy5wZXJzaXN0U2VydmljZS5zZXRTZXJ2ZXJTZXNzaW9uRW5jcnlwdGlvbktleShcbiAgICAgICAgYXdhaXQgSldLLmFzS2V5KGN1cnJlbnRVc2VyLnNlc3Npb25FbmNyeXB0aW9uS2V5KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQXR0cmlidXRlcyA9IGF3YWl0IHRoaXMuYXV0aC51c2VyQXR0cmlidXRlcyhjb2duaXRvVXNlcik7XG5cbiAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHBhc3NLZXkgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVQYXNzS2V5KHtcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAuLi5jdXJyZW50VXNlci5jdXJyZW50VXNlcktleS5wYXNzS2V5LnBhc3NLZXlQYXJhbXMsXG4gICAgICAgIH0pXG4gICAgICApLmp3aztcblxuICAgICAgYXdhaXQgdGhpcy5pZGxlU2VydmljZS5wZXJzaXN0TWFzdGVyS2V5KFxuICAgICAgICBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS51bndyYXBXaXRoUGFzc0tleShcbiAgICAgICAgICBjdXJyZW50VXNlci5jdXJyZW50VXNlcktleS5wYXNzS2V5LmlkLFxuICAgICAgICAgIHBhc3NLZXksXG4gICAgICAgICAgY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkubWFzdGVyS2V5LmlkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLnBvcHVsYXRlS2V5cyhjdXJyZW50VXNlci5jdXJyZW50VXNlcktleSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgc3ViOiB0aGlzLmdldFVzZXJBdHRyaWJ1dGUoJ3N1YicsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHVzZXJuYW1lOiBjdXJyZW50VXNlci51c2VybmFtZSxcbiAgICAgIGN1cnJlbnRVc2VyS2V5OiBjdXJyZW50VXNlci5jdXJyZW50VXNlcktleSxcbiAgICAgIGdldEFjY2Vzc0p3dFRva2VuOiAoKSA9PlxuICAgICAgICBjb2duaXRvVXNlci5nZXRTaWduSW5Vc2VyU2Vzc2lvbigpLmdldEFjY2Vzc1Rva2VuKCkuZ2V0Snd0VG9rZW4oKSxcbiAgICAgIGVtYWlsOiB0aGlzLmdldFVzZXJBdHRyaWJ1dGUoJ2VtYWlsJywgdXNlckF0dHJpYnV0ZXMpLFxuICAgICAgZW1haWxWZXJpZmllZDpcbiAgICAgICAgdGhpcy5nZXRVc2VyQXR0cmlidXRlKCdlbWFpbF92ZXJpZmllZCcsIHVzZXJBdHRyaWJ1dGVzKSA9PT0gJ3RydWUnLFxuICAgICAgcGhvbmU6IHRoaXMuZ2V0VXNlckF0dHJpYnV0ZSgncGhvbmVfbnVtYmVyJywgdXNlckF0dHJpYnV0ZXMpLFxuICAgICAgcGhvbmVWZXJpZmllZDpcbiAgICAgICAgdGhpcy5nZXRVc2VyQXR0cmlidXRlKCdwaG9uZV9udW1iZXJfdmVyaWZpZWQnLCB1c2VyQXR0cmlidXRlcykgPT09XG4gICAgICAgICd0cnVlJyxcbiAgICAgIGNvbnRhY3RDYXJkOiB7XG4gICAgICAgIC4uLihhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmRlY3J5cHRDb250YWN0Q2FyZChjb250YWN0Q2FyZCkpLFxuICAgICAgfSxcbiAgICAgIHVzZXJEZWxldGU6IGN1cnJlbnRVc2VyLnVzZXJEZWxldGUsXG4gICAgICB1c2VyUGxhbnMsXG4gICAgICBoYXNUUFZhdWx0QWNjZXNzOiB0aGlzLm1hcFRQVmF1bHRBY2Nlc3MoY3VycmVudFVzZXIuZmVhdHVyZXMpLFxuICAgICAgZmVhdHVyZXM6IGN1cnJlbnRVc2VyLmZlYXR1cmVzLFxuICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IGN1cnJlbnRVc2VyLnNlc3Npb25FbmNyeXB0aW9uS2V5LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hBdXRoKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHViU3ViamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50VXNlciA9IG51bGw7XG4gICAgdGhpcy5rZXlTZXJ2aWNlLnB1cmdlS2V5cygpO1xuICAgIHRoaXMua2V5R3JhcGhTZXJ2aWNlLnB1cmdlS2V5cygpO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuYXV0aC5zaWduT3V0KCksIHRoaXMucHJvZmlsZVNlcnZpY2Uuc2lnbk91dCgpXSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJBdHRyaWJ1dGUoXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICAgIHVzZXJBdHRyaWJ1dGVzOiBDb2duaXRvVXNlckF0dHJpYnV0ZVtdXG4gICkge1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGUgPSB1c2VyQXR0cmlidXRlcy5maW5kKFxuICAgICAgKHgpID0+IHguZ2V0TmFtZSgpID09PSBhdHRyaWJ1dGVOYW1lXG4gICAgKTtcblxuICAgIHJldHVybiB1c2VyQXR0cmlidXRlID8gdXNlckF0dHJpYnV0ZS5nZXRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkUmVzZXRVc2VyKHBhc3N3b3JkPzogc3RyaW5nKTogUHJvbWlzZTxUcFBhc3N3b3JkUmVzZXRVc2VyPiB7XG4gICAgY29uc3QgeyB0cFBhc3N3b3JkUmVzZXRVc2VyOiByZXNldFVzZXIgfSA9IGF3YWl0IHRoaXMubHJHcmFwaFFMLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBUcFBhc3N3b3JkUmVzZXRVc2VyUXVlcnksXG4gICAgfSk7XG5cbiAgICBpZiAocmVzZXRVc2VyLnNlc3Npb25FbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLnBlcnNpc3RTZXJ2aWNlLnNldFNlcnZlclNlc3Npb25FbmNyeXB0aW9uS2V5KFxuICAgICAgICBhd2FpdCBKV0suYXNLZXkocmVzZXRVc2VyLnNlc3Npb25FbmNyeXB0aW9uS2V5KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGtleXNcbiAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHBhc3NLZXkgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVQYXNzS2V5KHtcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAuLi5yZXNldFVzZXIucGFzc0tleS5wYXNzS2V5UGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgKS5qd2s7XG5cbiAgICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2UucGVyc2lzdE1hc3RlcktleShcbiAgICAgICAgYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UudW53cmFwV2l0aFBhc3NLZXkoXG4gICAgICAgICAgcmVzZXRVc2VyLnBhc3NLZXkuaWQsXG4gICAgICAgICAgcGFzc0tleSxcbiAgICAgICAgICByZXNldFVzZXIubWFzdGVyS2V5LmlkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlTZXJ2aWNlLnBvcHVsYXRlS2V5cyh7XG4gICAgICBwYXNzS2V5OiB7XG4gICAgICAgIGlkOiByZXNldFVzZXIucGFzc0tleS5pZCxcbiAgICAgIH0sXG4gICAgICBtYXN0ZXJLZXk6IHtcbiAgICAgICAgaWQ6IHJlc2V0VXNlci5tYXN0ZXJLZXkuaWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgdXNlckF0dHJpYnV0ZXMgPSBhd2FpdCB0aGlzLmF1dGgudXNlckF0dHJpYnV0ZXMoXG4gICAgICBhd2FpdCB0aGlzLmF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKClcbiAgICApO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuZ2V0VXNlckF0dHJpYnV0ZSgnc3ViJywgdXNlckF0dHJpYnV0ZXMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihhd2FpdCB0aGlzLnRwUGFzc3dvcmRSZXNldFByb2Nlc3NvclNlcnZpY2UucHJvY2Vzc1RwUGFzc3dvcmRSZXNldFVzZXJOb2RlKFxuICAgICAgICByZXNldFVzZXJcbiAgICAgICkpLFxuICAgICAgc3ViLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVmcmVzaEFjY2Vzc1Rva2VuKCkge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlciA9IGF3YWl0IHRoaXMuYXV0aC5jdXJyZW50QXV0aGVudGljYXRlZFVzZXIoKTtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBjb2duaXRvVXNlci5nZXRTaWduSW5Vc2VyU2Vzc2lvbigpLmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvZ25pdG9Vc2VyLnJlZnJlc2hTZXNzaW9uKHJlZnJlc2hUb2tlbiwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVmcmVzaGluZyB0b2tlbjogJywgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVG9rZW4gcmVmcmVzaCBjb21wbGV0ZTogJywgZGF0YSk7XG4gICAgICAgICAgcmVzb2x2ZSgwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb21wbGV0ZVJlcXVlc3QobmV3UGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc2V0VXNlciA9IGF3YWl0IHRoaXMuZ2V0UmVzZXRVc2VyKHRydWUpO1xuXG4gICAgaWYgKHJlc2V0VXNlci5zdGF0ZSAhPT0gVHBDbGFpbVN0YXRlLkFQUFJPVkVEKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgJ1Bhc3N3b3JkIHJlc2V0IHJlcXVlc3QgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBQcmVwYXJlIGFsbCBtYXRlcmlhbHMgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBlcnJvcnMuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMucmVjb3ZlckFzc2VtYmx5S2V5KHJlc2V0VXNlcik7XG5cbiAgICBjb25zdCB7IHJvb3RLZXkgfSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmVzZXRVc2VyLmFzc2VtYmx5Q2lwaGVyRGF0YVxuICAgICk7XG4gICAgY29uc29sZS5sb2cocm9vdEtleSk7XG5cbiAgICAvLyBNYWtpbmcgc3VyZSBpdCdzIGEgdmFsaWQga2V5LlxuICAgIGNvbnN0IHJvb3RLZXlKd2sgPSBhd2FpdCBKV0suYXNLZXkocm9vdEtleSk7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkocmVzZXRVc2VyLm1hc3RlcktleS5pZCk7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXlXcmFwcGVkUm9vdEtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgbWFzdGVyS2V5Lmp3ayxcbiAgICAgICAgcm9vdEtleUp3ay50b0pTT04odHJ1ZSlcbiAgICAgICk7XG5cbiAgICAvLyBUaGUgbmV3IHBhc3N3b3JkXG4gICAgY29uc3QgbmV3UGFzc0lkcFJlc3VsdCA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVQYXNzSWRwKHtcbiAgICAgIHBhc3N3b3JkOiBuZXdQYXNzd29yZCxcbiAgICAgIC4uLnJlc2V0VXNlci5wYXNzS2V5LnBhc3NJZHBQYXJhbXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXdJZHBQYXNzd29yZCA9IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcoXG4gICAgICBuZXdQYXNzSWRwUmVzdWx0Lmp3a1xuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEdldCBhc3NlbWJseSBrZXkgY2hhbGxlbmdlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjaGFsbGVuZ2UgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24sXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpbnB1dDoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5jcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlLmNoYWxsZW5nZTtcblxuICAgIGNvbnNvbGUubG9nKGNoYWxsZW5nZSk7XG5cbiAgICAvLyBTaWduIHRoZSBjaGFsbGVuZ2VcbiAgICAvLyBHZW5lcmF0ZSBhIGNsaWVudCBzaWRlIG5vbmNlIHRoYXQncyBubyBpbiB0aGUgc2VydmVyJ3MgY29udHJvbC5cbiAgICBjaGFsbGVuZ2UuY2xpZW50Tm9uY2UgPSB0aGlzLmtleUZhY3RvcnkucmFuZG9tU3RyaW5nKFxuICAgICAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY2hhbGxlbmdlKTtcblxuICAgIGNvbnN0IGFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIHJlc2V0VXNlci53cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclBya1xuICAgICk7XG4gICAgY29uc3Qgc2lnbmVkQ2hhbGxlbmdlID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKFxuICAgICAgYXNzZW1ibHlLZXlWZXJpZmllclByayxcbiAgICAgIGNoYWxsZW5nZVxuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIENoYW5nZSBwYXNzd29yZCBmb3IgdGhlIG9yaWdpbmFsIHVzZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHRlbXBJZHBQYXNzd29yZCA9IChcbiAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFxuICAgICAgICBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgbXV0YXRpb246IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgc2lnbmVkQ2hhbGxlbmdlOiBKU09OLnN0cmluZ2lmeShzaWduZWRDaGFsbGVuZ2UpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIGluY2x1ZGVLZXlHcmFwaDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICApLnByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdC5pZHBQYXNzd29yZDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTG9naW4gYXMgdGhlIG9yaWdpbmFsIHVzZXIgdXNpbmcgbmV3IHRlbXBvcmFyeSBwYXNzd29yZFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG9yaWdpbmFsIGFjY291bnQncyBwYXNzd29yZCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gYSB0ZW1wb3JhcnkgcGFzc3dvcmQuIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSBmb3IgdGhlIHVzZXJcbiAgICAvLyB0byB1c2UgdGhlIG9yaWdpbmFsIHBhc3N3b3JkIHRvIGxvZ2luLiBBbnkgc3VjY2Vzc2Z1bCBsb2dpblxuICAgIC8vIGNhbiBvbmx5IGJlIHVzaW5nIHRoZSB0ZW1wb3JhcnkgcGFzc3dvcmQuIFNvIGl0J3Mgc2FmZSB0byBhc3N1bWVcbiAgICAvLyB0aGF0IHdlIHdhbnQgdG8gXCJjb21wbGV0ZVwiIHRoZSBwYXNzd29yZCByZXNldC5cblxuICAgIC8vIFRoZSBtYXliZSAyRkEgc28gd2UgbGlzdGVuIGZvciB0aGUgYXV0aCBldmVudCBmcm9tIEFtcGxpZnkuXG4gICAgY29uc3QgcmV0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lciA9IGFzeW5jIChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnBheWxvYWQuZXZlbnQgIT09ICdzaWduSW4nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgSHViLnJlbW92ZSgnYXV0aCcsIGxpc3RlbmVyKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhLnBheWxvYWQpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuYXV0aC5zaWduSW4ocmVzZXRVc2VyLnVzZXJuYW1lLCBuZXdJZHBQYXNzd29yZCk7XG5cbiAgICAgICAgLy8gU3dpdGNoIG92ZXIgdG8gdGhlIG5ldyBzZXQgb2Yga2V5c1xuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgICBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgICBtdXRhdGlvbjogQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBtYXN0ZXJLZXlXcmFwcGVkUm9vdEtleSxcbiAgICAgICAgICAgICAgICBtYXN0ZXJLZXlJZDogbWFzdGVyS2V5LmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIEh1Yi5saXN0ZW4oJ2F1dGgnLCBsaXN0ZW5lcik7XG4gICAgfSk7XG5cbiAgICAvLyBTaWduaW4gYXMgdGhlIG9yaWdpbmFsIHVzZXIuIFBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0IHRvIHRlbXBvcmFyeSBvbmUuIEl0IHNob3VsZCByZXR1cm5cbiAgICAvLyB3aXRoIE5FV19QQVNTV09SRF9SRVFVSVJFRFxuICAgIGxldCB1c2VyID0gYXdhaXQgdGhpcy5hdXRoLnNpZ25JbihyZXNldFVzZXIudXNlcm5hbWUsIHRlbXBJZHBQYXNzd29yZCwge1xuICAgICAgbm9Qcm94eTogJ3RydWUnLFxuICAgIH0pO1xuXG4gICAgaWYgKHVzZXIuY2hhbGxlbmdlTmFtZSAhPT0gJ05FV19QQVNTV09SRF9SRVFVSVJFRCcpIHtcbiAgICAgIHRocm93IG5ldyBMckV4Y2VwdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ0ludGVybmFsIGVycm9yLiBFeHBlY3RpbmcgQ29nbml0byB0byBoYXZlIGRvbmUgYSBwYXNzd29yZCByZXNldCBhZnRlciBjYWxsIHRvIFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLicsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbmV3IHBhc3N3b3JkIG9uIElkcFxuICAgIC8vIHRoZSBhd3NGZXRjaCgpIGZ1bmN0aW9uIHBhc3NlcyBORVdfUEFTU1dPUkRfUkVRVUlSRUQgZGlyZWN0bHkgdG8gQVdTIHdpdGhvdXRcbiAgICAvLyBnb2luZyB0aHJvdWdoIHRoZSBwcm94eS5cbiAgICB1c2VyID0gYXdhaXQgdGhpcy5hdXRoLmNvbXBsZXRlTmV3UGFzc3dvcmQodXNlciwgbmV3SWRwUGFzc3dvcmQsIHt9KTtcblxuICAgIHJldHVybiByZXRQcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgcmVzZXRVc2VyOiBUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZVxuICApOiBQcm9taXNlPEpXSy5LZXk+IHtcbiAgICBjb25zdCBwcmsgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkocmVzZXRVc2VyLnB4ay5pZCk7XG5cbiAgICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcmVzZXRVc2VyLmFwcHJvdmFsc1xuICAgICAgICAuZmlsdGVyKChhcHByb3ZhbCkgPT4gISFhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleSlcbiAgICAgICAgLm1hcCgoYXBwcm92YWwpID0+XG4gICAgICAgICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICAgICAgcHJrLFxuICAgICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXNzZW1ibHlDb250cm9sbGVyLnJlY292ZXJBc3NlbWJseUtleShwYXJ0aWFscyk7XG4gIH1cbn1cbiJdfQ==
|