@bitgo/sdk-core 38.12.1 → 38.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/account-lib/baseCoin/enum.d.ts +2 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +3 -1
- package/dist/src/api/types.d.ts +6 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +8 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +2 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +3 -3
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +12 -6
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/defi/defiVault.d.ts +35 -1
- package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
- package/dist/src/bitgo/defi/defiVault.js +67 -1
- package/dist/src/bitgo/defi/iDefiVault.d.ts +15 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
- package/dist/src/bitgo/defi/iDefiVault.js +1 -1
- package/dist/src/bitgo/internal/keycard.d.ts +2 -1
- package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
- package/dist/src/bitgo/internal/keycard.js +6 -3
- package/dist/src/bitgo/keychain/iKeychains.d.ts +2 -2
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +29 -5
- package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +27 -6
- package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -1
- package/dist/src/bitgo/safe/derivableEd25519Pub.js +68 -20
- package/dist/src/bitgo/safe/safe.js +2 -2
- package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
- package/dist/src/bitgo/safe/safes.js +10 -1
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +4 -1
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +50 -0
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +112 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +15 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +39 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +344 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +2 -1
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +17 -2
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +8 -5
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +33 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +260 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/index.js +2 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +15 -2
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +13 -2
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +13 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts +30 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +2 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/safeKeychain.d.ts +25 -2
- package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/safeKeychain.js +72 -18
- package/dist/src/bitgo/wallet/wallet.d.ts +18 -5
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +109 -19
- package/dist/src/bitgo/wallet/wallets.d.ts +6 -0
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +37 -22
- package/dist/test/unit/bitgo/defi/defiVault.js +163 -1
- package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
- package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
- package/dist/test/unit/bitgo/keychain/keychains.js +155 -0
- package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +21 -6
- package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +114 -62
- package/dist/test/unit/bitgo/safe/safe.js +4 -4
- package/dist/test/unit/bitgo/safe/safes.js +28 -2
- package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
- package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
- package/dist/test/unit/bitgo/tss/common.js +77 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +181 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +70 -1
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +173 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +33 -1
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
- package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +10 -10
- package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
- package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/safeShareWallet.js +303 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +51 -40
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -5
|
@@ -118,6 +118,9 @@ async function sendSignatureShareV2(bitgo, walletId, txRequestId, signatureShare
|
|
|
118
118
|
else if (multisigTypeVersion === 'MPCv2' && mpcAlgorithm === 'eddsa') {
|
|
119
119
|
type = 'eddsaMpcV2';
|
|
120
120
|
}
|
|
121
|
+
else if (multisigTypeVersion === 'MPCv2' && mpcAlgorithm === 'redpallas') {
|
|
122
|
+
type = 'redpallasMpcV2';
|
|
123
|
+
}
|
|
121
124
|
else if (multisigTypeVersion === undefined && mpcAlgorithm === 'eddsa') {
|
|
122
125
|
type = 'eddsaMpcV1';
|
|
123
126
|
}
|
|
@@ -241,4 +244,4 @@ async function getTxRequestChallenge(bitgo, walletId, txRequestId, index, reques
|
|
|
241
244
|
bitgo.setRequestTracer(reqTracer);
|
|
242
245
|
return await bitgo.post(bitgo.url(urlPath, 2)).send({ paillierModulus }).result();
|
|
243
246
|
}
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFzQkEsd0RBa0JDO0FBV0Qsb0NBbUJDO0FBZ0JELGdEQXNDQztBQWlCRCxvREFrREM7QUFZRCxzQ0FZQztBQWFELDREQWlCQztBQU1ELGtFQXdDQztBQWFELHNEQXNCQztBQXRVRCxvREFBNEI7QUFPNUIsb0NBVWtCO0FBR2xCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRW5ELFNBQWdCLHNCQUFzQixDQUNwQyxlQUF1QyxFQUN2QyxlQUFtQyxFQUNuQyxTQUE0QjtJQUU1QixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQzVFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFBLGdCQUFNLEVBQUMsVUFBVSxFQUFFLGlCQUFpQixTQUFTLGtCQUFrQixDQUFDLENBQUM7SUFDakUsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLFlBQVksQ0FDaEMsS0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsS0FBc0I7SUFFdEIsTUFB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LENBQUMsRUFBRTtZQUNqQixRQUFRLEdBQUcsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLE1BQU07UUFDUixLQUFLLG1CQUFXLENBQUMsT0FBTztZQUN0QixRQUFRLEdBQUcsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNoQyxNQUFNO0lBQ1YsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQVUsR0FBRyxRQUFRLEdBQUcsY0FBYyxHQUFHLFdBQVcsR0FBRyxRQUFRLEdBQUcsWUFBWSxDQUFDO0lBQy9GLE1BQU0sU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLHFCQUFhLEVBQUUsQ0FBQztJQUMvQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsT0FBTyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgb3BlbnBncCBmcm9tICdvcGVucGdwJztcblxuaW1wb3J0IHsgTVBDdjJTaWduaW5nU3RhdGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBUeFJlcXVlc3RDaGFsbGVuZ2VSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTVBDQWxnb3JpdGhtIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHtcbiAgUmVxdWVzdFR5cGUsXG4gIFR4UmVxdWVzdCxcbiAgdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBDb21taXRtZW50U2hhcmVSZWNvcmQsXG4gIEVuY3J5cHRlZFNpZ25lclNoYXJlUmVjb3JkLFxuICBFeGNoYW5nZUNvbW1pdG1lbnRSZXNwb25zZSxcbiAgUmVxdWVzdFRyYWNlcixcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi8uLi9hcGknO1xuXG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2JpdGdvOnRzczpjb21tb24nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJpdGdvU2lnbmF0dXJlU2hhcmUoXG4gIHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXSxcbiAgc2lnbmVyU2hhcmVUeXBlOiBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIHNoYXJlVHlwZTogTVBDdjJTaWduaW5nU3RhdGVcbik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgY29uc3QgYml0Z29TaGFyZSA9IHNpZ25hdHVyZVNoYXJlcy5maW5kKChzaGFyZSkgPT4ge1xuICAgIGlmIChzaGFyZS5mcm9tICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gfHwgc2hhcmUudG8gIT09IHNpZ25lclNoYXJlVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShzaGFyZS5zaGFyZSkudHlwZSA9PT0gc2hhcmVUeXBlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIGFzc2VydChiaXRnb1NoYXJlLCBgTWlzc2luZyBCaXRHbyAke3NoYXJlVHlwZX0gc2lnbmF0dXJlIHNoYXJlYCk7XG4gIHJldHVybiBiaXRnb1NoYXJlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxhdGVzdCBUeCBSZXF1ZXN0IGJ5IGlkXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IGlkXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHRoZSByZXF1ZXN0IHRyYWNlciByZXF1ZXN0IGlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxUeFJlcXVlc3Q+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VHhSZXF1ZXN0KFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIGNvbnN0IHR4UmVxdWVzdFJlcyA9IGF3YWl0IGJpdGdvXG4gICAgLmdldChiaXRnby51cmwoJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgLnF1ZXJ5KHsgdHhSZXF1ZXN0SWRzOiB0eFJlcXVlc3RJZCwgbGF0ZXN0OiAndHJ1ZScgfSlcbiAgICAucmV0cnkoMylcbiAgICAucmVzdWx0KCk7XG5cbiAgaWYgKHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzLmxlbmd0aCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCBUeFJlcXVlc3Qgd2l0aCBpZCAke3R4UmVxdWVzdElkfWApO1xuICB9XG5cbiAgcmV0dXJuIHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzWzBdO1xufVxuXG4vKipcbiAqIFNlbmRzIGEgU2lnbmF0dXJlIFNoYXJlXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBzaWduYXR1cmVTaGFyZSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSBUaGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0gc2lnbmVyU2hhcmVcbiAqIEBwYXJhbSBtcGNBbGdvcml0aG1cbiAqIEBwYXJhbSBhcGlNb2RlXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHRoZSByZXF1ZXN0IHRyYWNlciByZXF1ZXN0IGlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaWduYXR1cmVTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUsXG4gIHNpZ25lclNoYXJlPzogc3RyaW5nLFxuICBtcGNBbGdvcml0aG06ICdlZGRzYScgfCAnZWNkc2EnID0gJ2VkZHNhJyxcbiAgYXBpTW9kZTogJ2Z1bGwnIHwgJ2xpdGUnID0gJ2xpdGUnLFxuICB1c2VyUHVibGljR3BnS2V5Pzogc3RyaW5nLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPiB7XG4gIGxldCBhZGRlbmR1bSA9ICcnO1xuICBzd2l0Y2ggKHJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBSZXF1ZXN0VHlwZS50eDpcbiAgICAgIGlmIChtcGNBbGdvcml0aG0gPT09ICdlY2RzYScgfHwgYXBpTW9kZSA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJy90cmFuc2FjdGlvbnMvMCc7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlcXVlc3RUeXBlLm1lc3NhZ2U6XG4gICAgICBpZiAobXBjQWxnb3JpdGhtID09PSAnZWNkc2EnIHx8IGFwaU1vZGUgPT09ICdmdWxsJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcvbWVzc2FnZXMvMCc7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9zaWduYXR1cmVzaGFyZXMnO1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIC8vIFRPRE8oV0NOLTU0MSk6IGFkZCBvcHRpb25hbCBhdHRlc3RhdGlvbiBwYXNzLXRocm91Z2ggZm9yIE1QQyAvc2lnbmF0dXJlc2hhcmVzLCBmaXJzdCByb3VuZFxuICAvLyBvbmx5IChkZWZlcnJlZCB1bnRpbCBtdWx0aXNpZyBhdHRlc3RhdGlvbiwgV0NOLTUzOSwgaXMgdmVyaWZpZWQgZW5kLXRvLWVuZCBvbiBzdGFnaW5nKS5cbiAgcmV0dXJuIGJpdGdvXG4gICAgLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKVxuICAgIC5zZW5kKHtcbiAgICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgICAgc2lnbmVyU2hhcmUsXG4gICAgICB1c2VyUHVibGljR3BnS2V5LFxuICAgIH0pXG4gICAgLnJlc3VsdCgpO1xufVxuXG4vKipcbiAqIFNlbmRzIGEgU2lnbmF0dXJlIFNoYXJlIHVzaW5nIHRoZSBzaWduIHR4UmVxdWVzdCByb3V0ZVxuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZCAgKlxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHNpZ25hdHVyZVNoYXJlc1xuICogQHBhcmFtIHJlcXVlc3RUeXBlIC0gVGhlIHR5cGUgb2YgcmVxdWVzdCBiZWluZyBzdWJtaXR0ZWQgKGVpdGhlciB0eCBvciBtZXNzYWdlIGZvciBzaWduaW5nKVxuICogQHBhcmFtIHNpZ25lclNoYXJlXG4gKiBAcGFyYW0gbXBjQWxnb3JpdGhtXG4gKiBAcGFyYW0gbXVsdGlzaWdUeXBlVmVyc2lvblxuICogQHBhcmFtIHNpZ25lckdwZ1B1YmxpY0tleVxuICogQHBhcmFtIHJlcUlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaWduYXR1cmVTaGFyZVYyKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBzaWduYXR1cmVTaGFyZXM6IFNpZ25hdHVyZVNoYXJlUmVjb3JkW10sXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSxcbiAgbXBjQWxnb3JpdGhtOiBNUENBbGdvcml0aG0sXG4gIHNpZ25lckdwZ1B1YmxpY0tleTogc3RyaW5nLFxuICBzaWduZXJTaGFyZT86IHN0cmluZyxcbiAgbXVsdGlzaWdUeXBlVmVyc2lvbj86ICdNUEN2MicgfCB1bmRlZmluZWQsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gIGNvbnN0IGFkZGVuZHVtID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLnR4ID8gJy90cmFuc2FjdGlvbnMvMCcgOiAnL21lc3NhZ2VzLzAnO1xuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9zaWduJztcbiAgbGV0IHR5cGUgPSAnJztcbiAgaWYgKG11bHRpc2lnVHlwZVZlcnNpb24gPT09ICdNUEN2MicgJiYgbXBjQWxnb3JpdGhtID09PSAnZWNkc2EnKSB7XG4gICAgdHlwZSA9ICdlY2RzYU1wY1YyJztcbiAgfSBlbHNlIGlmIChtdWx0aXNpZ1R5cGVWZXJzaW9uID09PSAnTVBDdjInICYmIG1wY0FsZ29yaXRobSA9PT0gJ2VkZHNhJykge1xuICAgIHR5cGUgPSAnZWRkc2FNcGNWMic7XG4gIH0gZWxzZSBpZiAobXVsdGlzaWdUeXBlVmVyc2lvbiA9PT0gdW5kZWZpbmVkICYmIG1wY0FsZ29yaXRobSA9PT0gJ2VkZHNhJykge1xuICAgIHR5cGUgPSAnZWRkc2FNcGNWMSc7XG4gIH1cbiAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgdHlwZSxcbiAgICBzaWduYXR1cmVTaGFyZXMsXG4gICAgc2lnbmVyU2hhcmUsXG4gICAgc2lnbmVyR3BnUHVibGljS2V5LFxuICB9O1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG5cbiAgbGV0IGF0dGVtcHRzID0gMDtcbiAgY29uc3QgbWF4QXR0ZW1wdHMgPSAzO1xuXG4gIHdoaWxlIChhdHRlbXB0cyA8IG1heEF0dGVtcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZChyZXF1ZXN0Qm9keSkucmVzdWx0KCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyPy5zdGF0dXMgPT09IDQyOSkge1xuICAgICAgICBjb25zdCBzbGVlcFRpbWUgPSAxMDAwICogKGF0dGVtcHRzICsgMSk7XG4gICAgICAgIGRlYnVnKGBNUEMgU2lnbmluZyByYXRlIGxpbWl0IGVycm9yIC0gcmV0cnlpbmcgaW4gJHtzbGVlcFRpbWUgLyAxMDAwfSBzZWNvbmRzYCk7XG4gICAgICAgIC8vIHNsZWVwIGZvciBhIGJpdCBiZWZvcmUgcmV0cnlpbmdcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgc2xlZXBUaW1lKSk7XG4gICAgICAgIGF0dGVtcHRzKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZChyZXF1ZXN0Qm9keSkucmVzdWx0KCk7XG59XG5cbi8qKlxuICogU2VuZHMgYSBUcmFuc2FjdGlvbiBSZXF1ZXN0IGZvciBicm9hZGNhc3Qgb25jZSBzaWduaW5nIGlzIGNvbXBsZXRlXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSBUaGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHJlcXVlc3QgdHJhY2VyIHJlcXVlc3QgaWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFR4UmVxdWVzdChcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICBjb25zdCBhZGRlbmR1bSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS50eCA/ICcvdHJhbnNhY3Rpb25zLzAnIDogJy9tZXNzYWdlcy8wJztcbiAgY29uc3QgdXJsUGF0aCA9ICcvd2FsbGV0LycgKyB3YWxsZXRJZCArICcvdHhyZXF1ZXN0cy8nICsgdHhSZXF1ZXN0SWQgKyBhZGRlbmR1bSArICcvc2VuZCc7XG4gIGNvbnN0IHJlcVRyYWNlciA9IHJlcUlkIHx8IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gIGJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxVHJhY2VyKTtcbiAgcmV0dXJuIGJpdGdvLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKS5zZW5kKCkucmVzdWx0KCk7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIGNsaWVudCBjb21taXRtZW50IGFuZCBlbmNyeXB0ZWQgc2lnbmVyIHNoYXJlIHRvIHRoZSBzZXJ2ZXIsIGdldHRpbmcgYmFjayB0aGUgc2VydmVyIGNvbW1pdG1lbnRcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtzdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHtDb21taXRtZW50U2hhcmVSZWNvcmR9IGNvbW1pdG1lbnRTaGFyZSAtIHRoZSBjbGllbnQgY29tbWl0bWVudCBzaGFyZVxuICogQHBhcmFtIHtFbmNyeXB0ZWRTaWduZXJTaGFyZVJlY29yZH0gZW5jcnlwdGVkU2lnbmVyU2hhcmUgLSB0aGUgY2xpZW50IGVuY3J5cHRlZCBzaWduZXIgc2hhcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXBpTW9kZV0gLSB0aGUgdHhSZXF1ZXN0IGFwaSBtb2RlIChmdWxsIG9yIGxpdGUpIC0gZGVmYXVsdHMgdG8gbGl0ZVxuICogQHBhcmFtIHtJUmVxdWVzdFRyYWNlcn0gcmVxSWQgLSB0aGUgcmVxdWVzdCB0cmFjZXIgcmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8RXhjaGFuZ2VDb21taXRtZW50UmVzcG9uc2U+fSAtIHRoZSBzZXJ2ZXIgY29tbWl0bWVudCBzaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhjaGFuZ2VFZGRzYUNvbW1pdG1lbnRzKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBjb21taXRtZW50U2hhcmU6IENvbW1pdG1lbnRTaGFyZVJlY29yZCxcbiAgZW5jcnlwdGVkU2lnbmVyU2hhcmU6IEVuY3J5cHRlZFNpZ25lclNoYXJlUmVjb3JkLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZScsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8RXhjaGFuZ2VDb21taXRtZW50UmVzcG9uc2U+IHtcbiAgbGV0IGFkZGVuZHVtID0gJyc7XG4gIGlmIChhcGlNb2RlID09PSAnZnVsbCcpIHtcbiAgICBhZGRlbmR1bSA9ICcvdHJhbnNhY3Rpb25zLzAnO1xuICB9XG4gIGNvbnN0IHVybFBhdGggPSAnL3dhbGxldC8nICsgd2FsbGV0SWQgKyAnL3R4cmVxdWVzdHMvJyArIHR4UmVxdWVzdElkICsgYWRkZW5kdW0gKyAnL2NvbW1pdCc7XG4gIGNvbnN0IHJlcVRyYWNlciA9IHJlcUlkIHx8IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gIGJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxVHJhY2VyKTtcbiAgcmV0dXJuIGF3YWl0IGJpdGdvLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKS5zZW5kKHsgY29tbWl0bWVudFNoYXJlLCBlbmNyeXB0ZWRTaWduZXJTaGFyZSB9KS5yZXN1bHQoKTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IGEgVFNTIHdhbGxldCBzaWduYXR1cmUgd2FzIHByb2R1Y2VkIHdpdGggdGhlIGV4cGVjdGVkIGtleSBhbmQgdGhhdCB0aGUgc2lnbmVkIGRhdGEgY29udGFpbnMgdGhlXG4gKiBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gYXMgd2VsbCBhcyB0aGUgZXhwZWN0ZWQgdXNlciBhbmQgYmFja3VwIGtleSBpZHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbW1vblZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXM6IHtcbiAgd2FsbGV0U2lnbmF0dXJlOiBvcGVucGdwLktleTtcbiAgYml0Z29QdWI6IG9wZW5wZ3AuS2V5O1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICB1c2VyS2V5SWQ6IHN0cmluZztcbiAgYmFja3VwS2V5SWQ6IHN0cmluZztcbn0pOiBQcm9taXNlPHsgdmFsdWU6IEFycmF5QnVmZmVyIH1bXT4ge1xuICBjb25zdCB7IHdhbGxldFNpZ25hdHVyZSwgYml0Z29QdWIsIGNvbW1vbktleWNoYWluLCB1c2VyS2V5SWQsIGJhY2t1cEtleUlkIH0gPSBwYXJhbXM7XG5cbiAgLy8gQnkgZW5zdXJpbmcgdGhhdCB0aGUgZmluZ2VycHJpbnRzIG9mIHRoZSB3YWxsZXRTaWduYXR1cmUgYW5kIHRoZSBiaXRnb1B1YiBhcmUgZGlmZmVyZW50IGFuZCB0aGF0IGFueSBvZiB0aGUgcmVzdWx0c1xuICAvLyBmcm9tIGNhbGxpbmcgdmVyaWZ5UHJpbWFyeVVzZXIgaXMgdmFsaWQgd2Uga25vdyB0aGF0IHRoZSBzaWduYXR1cmUgd2FzIGFjdHVhbGx5IHByb2R1Y2VkIGJ5IHRoZSBwcml2YXRlIGtleVxuICAvLyBiZWxvbmdpbmcgdG8gdGhlIGJpdGdvUHViLlxuICBpZiAod2FsbGV0U2lnbmF0dXJlLmtleVBhY2tldC5nZXRGaW5nZXJwcmludCgpID09PSBiaXRnb1B1Yi5rZXlQYWNrZXQuZ2V0RmluZ2VycHJpbnQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBIU00gR1BHIHNpZ25hdHVyZScpO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uUmVzdWx0ID0gYXdhaXQgdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyKHdhbGxldFNpZ25hdHVyZSwgYml0Z29QdWIsIGZhbHNlKTtcbiAgY29uc3QgaXNWYWxpZCA9IHZlcmlmaWNhdGlvblJlc3VsdC5zb21lKChyZXN1bHQpID0+IHJlc3VsdC52YWxpZCk7XG4gIGlmICghaXNWYWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBIU00gR1BHIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IHByaW1hcnlVc2VyID0gYXdhaXQgd2FsbGV0U2lnbmF0dXJlLmdldFByaW1hcnlVc2VyKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlIHRoZSByYXdOb3RhdGlvbnMgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHRoZSB0eXBlIGJ1dCBpdCBhY3R1YWxseSBleGlzdHNcbiAgY29uc3QgcmF3Tm90YXRpb25zOiB7IHZhbHVlOiBVaW50OEFycmF5IH1bXSA9IHByaW1hcnlVc2VyLnVzZXIub3RoZXJDZXJ0aWZpY2F0aW9uc1swXS5yYXdOb3RhdGlvbnM7XG5cbiAgYXNzZXJ0KHJhd05vdGF0aW9ucy5sZW5ndGggPT09IDUsICdpbnZhbGlkIHdhbGxldCBzaWduYXR1cmVzJyk7XG5cbiAgYXNzZXJ0KFxuICAgIGNvbW1vbktleWNoYWluID09PSBCdWZmZXIuZnJvbShyYXdOb3RhdGlvbnNbMF0udmFsdWUpLnRvU3RyaW5nKCksXG4gICAgJ3dhbGxldCBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2ggY29tbW9uIGtleWNoYWluJ1xuICApO1xuICBhc3NlcnQodXNlcktleUlkID09PSBCdWZmZXIuZnJvbShyYXdOb3RhdGlvbnNbMV0udmFsdWUpLnRvU3RyaW5nKCksIGB3YWxsZXQgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIHVzZXIga2V5IGlkYCk7XG4gIGFzc2VydChcbiAgICBiYWNrdXBLZXlJZCA9PT0gQnVmZmVyLmZyb20ocmF3Tm90YXRpb25zWzJdLnZhbHVlKS50b1N0cmluZygpLFxuICAgICd3YWxsZXQgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIGJhY2t1cCBrZXkgaWQnXG4gICk7XG5cbiAgcmV0dXJuIHJhd05vdGF0aW9ucztcbn1cblxuLyoqXG4gKiBHZXRzIGNoYWxsZW5nZSBmb3IgYSB0eCByZXF1ZXN0IGZyb20gQml0R29cbiAqIHN1cHBvcnRzIE1lc3NhZ2UgYW5kIHJlZ3VsYXIgVHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBiaXRnb1xuICogQHBhcmFtIHdhbGxldElkXG4gKiBAcGFyYW0gdHhSZXF1ZXN0SWRcbiAqIEBwYXJhbSBpbmRleFxuICogQHBhcmFtIHJlcXVlc3RUeXBlXG4gKiBAcGFyYW0gcGFpbGxpZXJNb2R1bHVzXG4gKiBAcGFyYW0gcmVxSWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFR4UmVxdWVzdENoYWxsZW5nZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgaW5kZXg6IHN0cmluZyxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlLFxuICBwYWlsbGllck1vZHVsdXM6IHN0cmluZyxcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlclxuKTogUHJvbWlzZTxUeFJlcXVlc3RDaGFsbGVuZ2VSZXNwb25zZT4ge1xuICBsZXQgYWRkZW5kdW0gPSAnJztcbiAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgUmVxdWVzdFR5cGUudHg6XG4gICAgICBhZGRlbmR1bSA9ICcvdHJhbnNhY3Rpb25zLycgKyBpbmRleDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVxdWVzdFR5cGUubWVzc2FnZTpcbiAgICAgIGFkZGVuZHVtID0gJy9tZXNzYWdlcy8nICsgaW5kZXg7XG4gICAgICBicmVhaztcbiAgfVxuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9jaGFsbGVuZ2UnO1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZCh7IHBhaWxsaWVyTW9kdWx1cyB9KS5yZXN1bHQoKTtcbn1cbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFzQkEsd0RBa0JDO0FBV0Qsb0NBbUJDO0FBZ0JELGdEQXNDQztBQWlCRCxvREFvREM7QUFZRCxzQ0FZQztBQWFELDREQWlCQztBQU1ELGtFQXdDQztBQWFELHNEQXNCQztBQXhVRCxvREFBNEI7QUFPNUIsb0NBVWtCO0FBR2xCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRW5ELFNBQWdCLHNCQUFzQixDQUNwQyxlQUF1QyxFQUN2QyxlQUFtQyxFQUNuQyxTQUE0QjtJQUU1QixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQzVFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFBLGdCQUFNLEVBQUMsVUFBVSxFQUFFLGlCQUFpQixTQUFTLGtCQUFrQixDQUFDLENBQUM7SUFDakUsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLFlBQVksQ0FDaEMsS0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsS0FBc0I7SUFFdEIsTUFB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QUN4QixlQUF1QixFQUN2QixLQUFzQjtJQUV0QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDbEIsUUFBUSxXQUFXLEVBQUUsQ0FBQztRQUNwQixLQUFLLG1CQUFXLENBQUMsRUFBRTtZQUNqQixRQUFRLEdBQUcsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLE1BQU07UUFDUixLQUFLLG1CQUFXLENBQUMsT0FBTztZQUN0QixRQUFRLEdBQUcsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNoQyxNQUFNO0lBQ1YsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQVUsR0FBRyxRQUFRLEdBQUcsY0FBYyxHQUFHLFdBQVcsR0FBRyxRQUFRLEdBQUcsWUFBWSxDQUFDO0lBQy9GLE1BQU0sU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLHFCQUFhLEVBQUUsQ0FBQztJQUMvQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsT0FBTyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgb3BlbnBncCBmcm9tICdvcGVucGdwJztcblxuaW1wb3J0IHsgTVBDdjJTaWduaW5nU3RhdGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBUeFJlcXVlc3RDaGFsbGVuZ2VSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTVBDQWxnb3JpdGhtIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHtcbiAgUmVxdWVzdFR5cGUsXG4gIFR4UmVxdWVzdCxcbiAgdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBDb21taXRtZW50U2hhcmVSZWNvcmQsXG4gIEVuY3J5cHRlZFNpZ25lclNoYXJlUmVjb3JkLFxuICBFeGNoYW5nZUNvbW1pdG1lbnRSZXNwb25zZSxcbiAgUmVxdWVzdFRyYWNlcixcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi8uLi9hcGknO1xuXG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2JpdGdvOnRzczpjb21tb24nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJpdGdvU2lnbmF0dXJlU2hhcmUoXG4gIHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXSxcbiAgc2lnbmVyU2hhcmVUeXBlOiBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIHNoYXJlVHlwZTogTVBDdjJTaWduaW5nU3RhdGVcbik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgY29uc3QgYml0Z29TaGFyZSA9IHNpZ25hdHVyZVNoYXJlcy5maW5kKChzaGFyZSkgPT4ge1xuICAgIGlmIChzaGFyZS5mcm9tICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gfHwgc2hhcmUudG8gIT09IHNpZ25lclNoYXJlVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShzaGFyZS5zaGFyZSkudHlwZSA9PT0gc2hhcmVUeXBlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIGFzc2VydChiaXRnb1NoYXJlLCBgTWlzc2luZyBCaXRHbyAke3NoYXJlVHlwZX0gc2lnbmF0dXJlIHNoYXJlYCk7XG4gIHJldHVybiBiaXRnb1NoYXJlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxhdGVzdCBUeCBSZXF1ZXN0IGJ5IGlkXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IGlkXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHRoZSByZXF1ZXN0IHRyYWNlciByZXF1ZXN0IGlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxUeFJlcXVlc3Q+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VHhSZXF1ZXN0KFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIGNvbnN0IHR4UmVxdWVzdFJlcyA9IGF3YWl0IGJpdGdvXG4gICAgLmdldChiaXRnby51cmwoJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgLnF1ZXJ5KHsgdHhSZXF1ZXN0SWRzOiB0eFJlcXVlc3RJZCwgbGF0ZXN0OiAndHJ1ZScgfSlcbiAgICAucmV0cnkoMylcbiAgICAucmVzdWx0KCk7XG5cbiAgaWYgKHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzLmxlbmd0aCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCBUeFJlcXVlc3Qgd2l0aCBpZCAke3R4UmVxdWVzdElkfWApO1xuICB9XG5cbiAgcmV0dXJuIHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzWzBdO1xufVxuXG4vKipcbiAqIFNlbmRzIGEgU2lnbmF0dXJlIFNoYXJlXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBzaWduYXR1cmVTaGFyZSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSBUaGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0gc2lnbmVyU2hhcmVcbiAqIEBwYXJhbSBtcGNBbGdvcml0aG1cbiAqIEBwYXJhbSBhcGlNb2RlXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHRoZSByZXF1ZXN0IHRyYWNlciByZXF1ZXN0IGlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaWduYXR1cmVTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUsXG4gIHNpZ25lclNoYXJlPzogc3RyaW5nLFxuICBtcGNBbGdvcml0aG06ICdlZGRzYScgfCAnZWNkc2EnID0gJ2VkZHNhJyxcbiAgYXBpTW9kZTogJ2Z1bGwnIHwgJ2xpdGUnID0gJ2xpdGUnLFxuICB1c2VyUHVibGljR3BnS2V5Pzogc3RyaW5nLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPiB7XG4gIGxldCBhZGRlbmR1bSA9ICcnO1xuICBzd2l0Y2ggKHJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBSZXF1ZXN0VHlwZS50eDpcbiAgICAgIGlmIChtcGNBbGdvcml0aG0gPT09ICdlY2RzYScgfHwgYXBpTW9kZSA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJy90cmFuc2FjdGlvbnMvMCc7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlcXVlc3RUeXBlLm1lc3NhZ2U6XG4gICAgICBpZiAobXBjQWxnb3JpdGhtID09PSAnZWNkc2EnIHx8IGFwaU1vZGUgPT09ICdmdWxsJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcvbWVzc2FnZXMvMCc7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9zaWduYXR1cmVzaGFyZXMnO1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIC8vIFRPRE8oV0NOLTU0MSk6IGFkZCBvcHRpb25hbCBhdHRlc3RhdGlvbiBwYXNzLXRocm91Z2ggZm9yIE1QQyAvc2lnbmF0dXJlc2hhcmVzLCBmaXJzdCByb3VuZFxuICAvLyBvbmx5IChkZWZlcnJlZCB1bnRpbCBtdWx0aXNpZyBhdHRlc3RhdGlvbiwgV0NOLTUzOSwgaXMgdmVyaWZpZWQgZW5kLXRvLWVuZCBvbiBzdGFnaW5nKS5cbiAgcmV0dXJuIGJpdGdvXG4gICAgLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKVxuICAgIC5zZW5kKHtcbiAgICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgICAgc2lnbmVyU2hhcmUsXG4gICAgICB1c2VyUHVibGljR3BnS2V5LFxuICAgIH0pXG4gICAgLnJlc3VsdCgpO1xufVxuXG4vKipcbiAqIFNlbmRzIGEgU2lnbmF0dXJlIFNoYXJlIHVzaW5nIHRoZSBzaWduIHR4UmVxdWVzdCByb3V0ZVxuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZCAgKlxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHNpZ25hdHVyZVNoYXJlc1xuICogQHBhcmFtIHJlcXVlc3RUeXBlIC0gVGhlIHR5cGUgb2YgcmVxdWVzdCBiZWluZyBzdWJtaXR0ZWQgKGVpdGhlciB0eCBvciBtZXNzYWdlIGZvciBzaWduaW5nKVxuICogQHBhcmFtIHNpZ25lclNoYXJlXG4gKiBAcGFyYW0gbXBjQWxnb3JpdGhtXG4gKiBAcGFyYW0gbXVsdGlzaWdUeXBlVmVyc2lvblxuICogQHBhcmFtIHNpZ25lckdwZ1B1YmxpY0tleVxuICogQHBhcmFtIHJlcUlkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaWduYXR1cmVTaGFyZVYyKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBzaWduYXR1cmVTaGFyZXM6IFNpZ25hdHVyZVNoYXJlUmVjb3JkW10sXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSxcbiAgbXBjQWxnb3JpdGhtOiBNUENBbGdvcml0aG0sXG4gIHNpZ25lckdwZ1B1YmxpY0tleTogc3RyaW5nLFxuICBzaWduZXJTaGFyZT86IHN0cmluZyxcbiAgbXVsdGlzaWdUeXBlVmVyc2lvbj86ICdNUEN2MicgfCB1bmRlZmluZWQsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gIGNvbnN0IGFkZGVuZHVtID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLnR4ID8gJy90cmFuc2FjdGlvbnMvMCcgOiAnL21lc3NhZ2VzLzAnO1xuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9zaWduJztcbiAgbGV0IHR5cGUgPSAnJztcbiAgaWYgKG11bHRpc2lnVHlwZVZlcnNpb24gPT09ICdNUEN2MicgJiYgbXBjQWxnb3JpdGhtID09PSAnZWNkc2EnKSB7XG4gICAgdHlwZSA9ICdlY2RzYU1wY1YyJztcbiAgfSBlbHNlIGlmIChtdWx0aXNpZ1R5cGVWZXJzaW9uID09PSAnTVBDdjInICYmIG1wY0FsZ29yaXRobSA9PT0gJ2VkZHNhJykge1xuICAgIHR5cGUgPSAnZWRkc2FNcGNWMic7XG4gIH0gZWxzZSBpZiAobXVsdGlzaWdUeXBlVmVyc2lvbiA9PT0gJ01QQ3YyJyAmJiBtcGNBbGdvcml0aG0gPT09ICdyZWRwYWxsYXMnKSB7XG4gICAgdHlwZSA9ICdyZWRwYWxsYXNNcGNWMic7XG4gIH0gZWxzZSBpZiAobXVsdGlzaWdUeXBlVmVyc2lvbiA9PT0gdW5kZWZpbmVkICYmIG1wY0FsZ29yaXRobSA9PT0gJ2VkZHNhJykge1xuICAgIHR5cGUgPSAnZWRkc2FNcGNWMSc7XG4gIH1cbiAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgdHlwZSxcbiAgICBzaWduYXR1cmVTaGFyZXMsXG4gICAgc2lnbmVyU2hhcmUsXG4gICAgc2lnbmVyR3BnUHVibGljS2V5LFxuICB9O1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG5cbiAgbGV0IGF0dGVtcHRzID0gMDtcbiAgY29uc3QgbWF4QXR0ZW1wdHMgPSAzO1xuXG4gIHdoaWxlIChhdHRlbXB0cyA8IG1heEF0dGVtcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZChyZXF1ZXN0Qm9keSkucmVzdWx0KCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyPy5zdGF0dXMgPT09IDQyOSkge1xuICAgICAgICBjb25zdCBzbGVlcFRpbWUgPSAxMDAwICogKGF0dGVtcHRzICsgMSk7XG4gICAgICAgIGRlYnVnKGBNUEMgU2lnbmluZyByYXRlIGxpbWl0IGVycm9yIC0gcmV0cnlpbmcgaW4gJHtzbGVlcFRpbWUgLyAxMDAwfSBzZWNvbmRzYCk7XG4gICAgICAgIC8vIHNsZWVwIGZvciBhIGJpdCBiZWZvcmUgcmV0cnlpbmdcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgc2xlZXBUaW1lKSk7XG4gICAgICAgIGF0dGVtcHRzKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZChyZXF1ZXN0Qm9keSkucmVzdWx0KCk7XG59XG5cbi8qKlxuICogU2VuZHMgYSBUcmFuc2FjdGlvbiBSZXF1ZXN0IGZvciBicm9hZGNhc3Qgb25jZSBzaWduaW5nIGlzIGNvbXBsZXRlXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSBUaGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0ge0lSZXF1ZXN0VHJhY2VyfSByZXFJZCAtIHJlcXVlc3QgdHJhY2VyIHJlcXVlc3QgaWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFR4UmVxdWVzdChcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlLFxuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyXG4pOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICBjb25zdCBhZGRlbmR1bSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS50eCA/ICcvdHJhbnNhY3Rpb25zLzAnIDogJy9tZXNzYWdlcy8wJztcbiAgY29uc3QgdXJsUGF0aCA9ICcvd2FsbGV0LycgKyB3YWxsZXRJZCArICcvdHhyZXF1ZXN0cy8nICsgdHhSZXF1ZXN0SWQgKyBhZGRlbmR1bSArICcvc2VuZCc7XG4gIGNvbnN0IHJlcVRyYWNlciA9IHJlcUlkIHx8IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gIGJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxVHJhY2VyKTtcbiAgcmV0dXJuIGJpdGdvLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKS5zZW5kKCkucmVzdWx0KCk7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIGNsaWVudCBjb21taXRtZW50IGFuZCBlbmNyeXB0ZWQgc2lnbmVyIHNoYXJlIHRvIHRoZSBzZXJ2ZXIsIGdldHRpbmcgYmFjayB0aGUgc2VydmVyIGNvbW1pdG1lbnRcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtzdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHtDb21taXRtZW50U2hhcmVSZWNvcmR9IGNvbW1pdG1lbnRTaGFyZSAtIHRoZSBjbGllbnQgY29tbWl0bWVudCBzaGFyZVxuICogQHBhcmFtIHtFbmNyeXB0ZWRTaWduZXJTaGFyZVJlY29yZH0gZW5jcnlwdGVkU2lnbmVyU2hhcmUgLSB0aGUgY2xpZW50IGVuY3J5cHRlZCBzaWduZXIgc2hhcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXBpTW9kZV0gLSB0aGUgdHhSZXF1ZXN0IGFwaSBtb2RlIChmdWxsIG9yIGxpdGUpIC0gZGVmYXVsdHMgdG8gbGl0ZVxuICogQHBhcmFtIHtJUmVxdWVzdFRyYWNlcn0gcmVxSWQgLSB0aGUgcmVxdWVzdCB0cmFjZXIgcmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8RXhjaGFuZ2VDb21taXRtZW50UmVzcG9uc2U+fSAtIHRoZSBzZXJ2ZXIgY29tbWl0bWVudCBzaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhjaGFuZ2VFZGRzYUNvbW1pdG1lbnRzKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBjb21taXRtZW50U2hhcmU6IENvbW1pdG1lbnRTaGFyZVJlY29yZCxcbiAgZW5jcnlwdGVkU2lnbmVyU2hhcmU6IEVuY3J5cHRlZFNpZ25lclNoYXJlUmVjb3JkLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZScsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8RXhjaGFuZ2VDb21taXRtZW50UmVzcG9uc2U+IHtcbiAgbGV0IGFkZGVuZHVtID0gJyc7XG4gIGlmIChhcGlNb2RlID09PSAnZnVsbCcpIHtcbiAgICBhZGRlbmR1bSA9ICcvdHJhbnNhY3Rpb25zLzAnO1xuICB9XG4gIGNvbnN0IHVybFBhdGggPSAnL3dhbGxldC8nICsgd2FsbGV0SWQgKyAnL3R4cmVxdWVzdHMvJyArIHR4UmVxdWVzdElkICsgYWRkZW5kdW0gKyAnL2NvbW1pdCc7XG4gIGNvbnN0IHJlcVRyYWNlciA9IHJlcUlkIHx8IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gIGJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxVHJhY2VyKTtcbiAgcmV0dXJuIGF3YWl0IGJpdGdvLnBvc3QoYml0Z28udXJsKHVybFBhdGgsIDIpKS5zZW5kKHsgY29tbWl0bWVudFNoYXJlLCBlbmNyeXB0ZWRTaWduZXJTaGFyZSB9KS5yZXN1bHQoKTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IGEgVFNTIHdhbGxldCBzaWduYXR1cmUgd2FzIHByb2R1Y2VkIHdpdGggdGhlIGV4cGVjdGVkIGtleSBhbmQgdGhhdCB0aGUgc2lnbmVkIGRhdGEgY29udGFpbnMgdGhlXG4gKiBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gYXMgd2VsbCBhcyB0aGUgZXhwZWN0ZWQgdXNlciBhbmQgYmFja3VwIGtleSBpZHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbW1vblZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXM6IHtcbiAgd2FsbGV0U2lnbmF0dXJlOiBvcGVucGdwLktleTtcbiAgYml0Z29QdWI6IG9wZW5wZ3AuS2V5O1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICB1c2VyS2V5SWQ6IHN0cmluZztcbiAgYmFja3VwS2V5SWQ6IHN0cmluZztcbn0pOiBQcm9taXNlPHsgdmFsdWU6IEFycmF5QnVmZmVyIH1bXT4ge1xuICBjb25zdCB7IHdhbGxldFNpZ25hdHVyZSwgYml0Z29QdWIsIGNvbW1vbktleWNoYWluLCB1c2VyS2V5SWQsIGJhY2t1cEtleUlkIH0gPSBwYXJhbXM7XG5cbiAgLy8gQnkgZW5zdXJpbmcgdGhhdCB0aGUgZmluZ2VycHJpbnRzIG9mIHRoZSB3YWxsZXRTaWduYXR1cmUgYW5kIHRoZSBiaXRnb1B1YiBhcmUgZGlmZmVyZW50IGFuZCB0aGF0IGFueSBvZiB0aGUgcmVzdWx0c1xuICAvLyBmcm9tIGNhbGxpbmcgdmVyaWZ5UHJpbWFyeVVzZXIgaXMgdmFsaWQgd2Uga25vdyB0aGF0IHRoZSBzaWduYXR1cmUgd2FzIGFjdHVhbGx5IHByb2R1Y2VkIGJ5IHRoZSBwcml2YXRlIGtleVxuICAvLyBiZWxvbmdpbmcgdG8gdGhlIGJpdGdvUHViLlxuICBpZiAod2FsbGV0U2lnbmF0dXJlLmtleVBhY2tldC5nZXRGaW5nZXJwcmludCgpID09PSBiaXRnb1B1Yi5rZXlQYWNrZXQuZ2V0RmluZ2VycHJpbnQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBIU00gR1BHIHNpZ25hdHVyZScpO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uUmVzdWx0ID0gYXdhaXQgdmVyaWZ5UHJpbWFyeVVzZXJXcmFwcGVyKHdhbGxldFNpZ25hdHVyZSwgYml0Z29QdWIsIGZhbHNlKTtcbiAgY29uc3QgaXNWYWxpZCA9IHZlcmlmaWNhdGlvblJlc3VsdC5zb21lKChyZXN1bHQpID0+IHJlc3VsdC52YWxpZCk7XG4gIGlmICghaXNWYWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBIU00gR1BHIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IHByaW1hcnlVc2VyID0gYXdhaXQgd2FsbGV0U2lnbmF0dXJlLmdldFByaW1hcnlVc2VyKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlIHRoZSByYXdOb3RhdGlvbnMgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHRoZSB0eXBlIGJ1dCBpdCBhY3R1YWxseSBleGlzdHNcbiAgY29uc3QgcmF3Tm90YXRpb25zOiB7IHZhbHVlOiBVaW50OEFycmF5IH1bXSA9IHByaW1hcnlVc2VyLnVzZXIub3RoZXJDZXJ0aWZpY2F0aW9uc1swXS5yYXdOb3RhdGlvbnM7XG5cbiAgYXNzZXJ0KHJhd05vdGF0aW9ucy5sZW5ndGggPT09IDUsICdpbnZhbGlkIHdhbGxldCBzaWduYXR1cmVzJyk7XG5cbiAgYXNzZXJ0KFxuICAgIGNvbW1vbktleWNoYWluID09PSBCdWZmZXIuZnJvbShyYXdOb3RhdGlvbnNbMF0udmFsdWUpLnRvU3RyaW5nKCksXG4gICAgJ3dhbGxldCBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2ggY29tbW9uIGtleWNoYWluJ1xuICApO1xuICBhc3NlcnQodXNlcktleUlkID09PSBCdWZmZXIuZnJvbShyYXdOb3RhdGlvbnNbMV0udmFsdWUpLnRvU3RyaW5nKCksIGB3YWxsZXQgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIHVzZXIga2V5IGlkYCk7XG4gIGFzc2VydChcbiAgICBiYWNrdXBLZXlJZCA9PT0gQnVmZmVyLmZyb20ocmF3Tm90YXRpb25zWzJdLnZhbHVlKS50b1N0cmluZygpLFxuICAgICd3YWxsZXQgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIGJhY2t1cCBrZXkgaWQnXG4gICk7XG5cbiAgcmV0dXJuIHJhd05vdGF0aW9ucztcbn1cblxuLyoqXG4gKiBHZXRzIGNoYWxsZW5nZSBmb3IgYSB0eCByZXF1ZXN0IGZyb20gQml0R29cbiAqIHN1cHBvcnRzIE1lc3NhZ2UgYW5kIHJlZ3VsYXIgVHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBiaXRnb1xuICogQHBhcmFtIHdhbGxldElkXG4gKiBAcGFyYW0gdHhSZXF1ZXN0SWRcbiAqIEBwYXJhbSBpbmRleFxuICogQHBhcmFtIHJlcXVlc3RUeXBlXG4gKiBAcGFyYW0gcGFpbGxpZXJNb2R1bHVzXG4gKiBAcGFyYW0gcmVxSWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFR4UmVxdWVzdENoYWxsZW5nZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgaW5kZXg6IHN0cmluZyxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlLFxuICBwYWlsbGllck1vZHVsdXM6IHN0cmluZyxcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlclxuKTogUHJvbWlzZTxUeFJlcXVlc3RDaGFsbGVuZ2VSZXNwb25zZT4ge1xuICBsZXQgYWRkZW5kdW0gPSAnJztcbiAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgUmVxdWVzdFR5cGUudHg6XG4gICAgICBhZGRlbmR1bSA9ICcvdHJhbnNhY3Rpb25zLycgKyBpbmRleDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVxdWVzdFR5cGUubWVzc2FnZTpcbiAgICAgIGFkZGVuZHVtID0gJy9tZXNzYWdlcy8nICsgaW5kZXg7XG4gICAgICBicmVhaztcbiAgfVxuICBjb25zdCB1cmxQYXRoID0gJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArIGFkZGVuZHVtICsgJy9jaGFsbGVuZ2UnO1xuICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICBiaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcVRyYWNlcik7XG4gIHJldHVybiBhd2FpdCBiaXRnby5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSkuc2VuZCh7IHBhaWxsaWVyTW9kdWx1cyB9KS5yZXN1bHQoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as openpgp from 'openpgp';
|
|
2
|
+
import { RedPallasMPSTypes } from '@bitgo/sdk-lib-mpc';
|
|
3
|
+
import { RedpallasMPCv2SignatureShareRound1Output, RedpallasMPCv2SignatureShareRound2Output, RedpallasMPCv2SignatureShareRound3Output } from '@bitgo/public-types';
|
|
4
|
+
import { SignatureShareRecord } from '../../utils/tss/baseTypes';
|
|
5
|
+
import { MPCv2PartiesEnum } from '../../utils/tss/ecdsa/typesMPCv2';
|
|
6
|
+
type SignerPartyId = MPCv2PartiesEnum.USER | MPCv2PartiesEnum.BACKUP;
|
|
7
|
+
/**
|
|
8
|
+
* RedPallas MPS DSG signature-share helpers.
|
|
9
|
+
*
|
|
10
|
+
* Groundwork for a future custodial/cold (SMC/OVC) DSG signing flow - not yet wired up to any
|
|
11
|
+
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same 3-round shape, same PGP-signed-
|
|
12
|
+
* message envelope), but kept as an independent copy - built on `RedPallasMPSComms` - so
|
|
13
|
+
* RedPallas MPS never depends on the EdDSA MPS module, and vice versa.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Builds the round-1 signature share record.
|
|
17
|
+
*
|
|
18
|
+
* PGP-signs the WASM round-0 broadcast message with the signer's ephemeral key and
|
|
19
|
+
* wraps it into a SignatureShareRecord ready for `sendSignatureShareV2`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getSignatureShareRoundOne(userMsg1: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
22
|
+
/**
|
|
23
|
+
* Verifies the peer's round-1 PGP signature and returns the raw deserialized
|
|
24
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function verifyPeerMessageRoundOne(parsedRound1Output: RedpallasMPCv2SignatureShareRound1Output, peerGpgKey: openpgp.Key, peerPartyId?: MPCv2PartiesEnum): Promise<RedPallasMPSTypes.DeserializedMessage>;
|
|
27
|
+
/**
|
|
28
|
+
* Builds the round-2 signature share record.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSignatureShareRoundTwo(userMsg2: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
31
|
+
/**
|
|
32
|
+
* Verifies the peer's round-2 PGP signature and returns the raw deserialized
|
|
33
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function verifyPeerMessageRoundTwo(parsedRound2Output: RedpallasMPCv2SignatureShareRound2Output, peerGpgKey: openpgp.Key, peerPartyId?: MPCv2PartiesEnum): Promise<RedPallasMPSTypes.DeserializedMessage>;
|
|
36
|
+
/**
|
|
37
|
+
* Verifies the peer's round-3 PGP signature and returns the raw deserialized
|
|
38
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function verifyPeerMessageRoundThree(parsedRound3Output: RedpallasMPCv2SignatureShareRound3Output, peerGpgKey: openpgp.Key, peerPartyId?: MPCv2PartiesEnum): Promise<RedPallasMPSTypes.DeserializedMessage>;
|
|
41
|
+
/**
|
|
42
|
+
* Builds the round-3 signature share record (final signer message).
|
|
43
|
+
*
|
|
44
|
+
* There is no corresponding `verifyBitGoMessageRoundThree` because Wallet Platform
|
|
45
|
+
* finalises the signing server-side after receiving round 3; the client obtains the
|
|
46
|
+
* signed transaction via `sendTxRequest`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSignatureShareRoundThree(userMsg3: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=redpallasMPCv2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAqB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAEL,wCAAwC,EAExC,wCAAwC,EAExC,wCAAwC,EACzC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,KAAK,aAAa,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAarE;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,EAC/C,cAAc,EAAE,OAAO,CAAC,UAAU,EAClC,OAAO,GAAE,aAAqC,EAC9C,kBAAkB,GAAE,gBAAyC,GAC5D,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,kBAAkB,EAAE,wCAAwC,EAC5D,UAAU,EAAE,OAAO,CAAC,GAAG,EACvB,WAAW,GAAE,gBAAyC,GACrD,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAMhD;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,EAC/C,cAAc,EAAE,OAAO,CAAC,UAAU,EAClC,OAAO,GAAE,aAAqC,EAC9C,kBAAkB,GAAE,gBAAyC,GAC5D,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,kBAAkB,EAAE,wCAAwC,EAC5D,UAAU,EAAE,OAAO,CAAC,GAAG,EACvB,WAAW,GAAE,gBAAyC,GACrD,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAMhD;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,wCAAwC,EAC5D,UAAU,EAAE,OAAO,CAAC,GAAG,EACvB,WAAW,GAAE,gBAAyC,GACrD,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAGhD;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,EAC/C,cAAc,EAAE,OAAO,CAAC,UAAU,EAClC,OAAO,GAAE,aAAqC,EAC9C,kBAAkB,GAAE,gBAAyC,GAC5D,OAAO,CAAC,oBAAoB,CAAC,CAW/B"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSignatureShareRoundOne = getSignatureShareRoundOne;
|
|
4
|
+
exports.verifyPeerMessageRoundOne = verifyPeerMessageRoundOne;
|
|
5
|
+
exports.getSignatureShareRoundTwo = getSignatureShareRoundTwo;
|
|
6
|
+
exports.verifyPeerMessageRoundTwo = verifyPeerMessageRoundTwo;
|
|
7
|
+
exports.verifyPeerMessageRoundThree = verifyPeerMessageRoundThree;
|
|
8
|
+
exports.getSignatureShareRoundThree = getSignatureShareRoundThree;
|
|
9
|
+
const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
10
|
+
const baseTypes_1 = require("../../utils/tss/baseTypes");
|
|
11
|
+
const typesMPCv2_1 = require("../../utils/tss/ecdsa/typesMPCv2");
|
|
12
|
+
function partyIdToSignatureShareType(partyId) {
|
|
13
|
+
switch (partyId) {
|
|
14
|
+
case typesMPCv2_1.MPCv2PartiesEnum.USER:
|
|
15
|
+
return baseTypes_1.SignatureShareType.USER;
|
|
16
|
+
case typesMPCv2_1.MPCv2PartiesEnum.BACKUP:
|
|
17
|
+
return baseTypes_1.SignatureShareType.BACKUP;
|
|
18
|
+
case typesMPCv2_1.MPCv2PartiesEnum.BITGO:
|
|
19
|
+
return baseTypes_1.SignatureShareType.BITGO;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* RedPallas MPS DSG signature-share helpers.
|
|
24
|
+
*
|
|
25
|
+
* Groundwork for a future custodial/cold (SMC/OVC) DSG signing flow - not yet wired up to any
|
|
26
|
+
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same 3-round shape, same PGP-signed-
|
|
27
|
+
* message envelope), but kept as an independent copy - built on `RedPallasMPSComms` - so
|
|
28
|
+
* RedPallas MPS never depends on the EdDSA MPS module, and vice versa.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Builds the round-1 signature share record.
|
|
32
|
+
*
|
|
33
|
+
* PGP-signs the WASM round-0 broadcast message with the signer's ephemeral key and
|
|
34
|
+
* wraps it into a SignatureShareRecord ready for `sendSignatureShareV2`.
|
|
35
|
+
*/
|
|
36
|
+
async function getSignatureShareRoundOne(userMsg1, userGpgPrivKey, partyId = typesMPCv2_1.MPCv2PartiesEnum.USER, otherSignerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
37
|
+
const signedMsg1 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(userMsg1.payload), userGpgPrivKey);
|
|
38
|
+
const share = {
|
|
39
|
+
type: 'round1Input',
|
|
40
|
+
data: { msg1: signedMsg1 },
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
from: partyIdToSignatureShareType(partyId),
|
|
44
|
+
to: partyIdToSignatureShareType(otherSignerPartyId),
|
|
45
|
+
share: JSON.stringify(share),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Verifies the peer's round-1 PGP signature and returns the raw deserialized
|
|
50
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
51
|
+
*/
|
|
52
|
+
async function verifyPeerMessageRoundOne(parsedRound1Output, peerGpgKey, peerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
53
|
+
const rawBytes = await sdk_lib_mpc_1.RedPallasMPSComms.verifyMpsMessage(parsedRound1Output.data.msg1, peerGpgKey);
|
|
54
|
+
return {
|
|
55
|
+
from: peerPartyId,
|
|
56
|
+
payload: new Uint8Array(rawBytes),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Builds the round-2 signature share record.
|
|
61
|
+
*/
|
|
62
|
+
async function getSignatureShareRoundTwo(userMsg2, userGpgPrivKey, partyId = typesMPCv2_1.MPCv2PartiesEnum.USER, otherSignerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
63
|
+
const signedMsg2 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(userMsg2.payload), userGpgPrivKey);
|
|
64
|
+
const share = {
|
|
65
|
+
type: 'round2Input',
|
|
66
|
+
data: { msg2: signedMsg2 },
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
from: partyIdToSignatureShareType(partyId),
|
|
70
|
+
to: partyIdToSignatureShareType(otherSignerPartyId),
|
|
71
|
+
share: JSON.stringify(share),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Verifies the peer's round-2 PGP signature and returns the raw deserialized
|
|
76
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
77
|
+
*/
|
|
78
|
+
async function verifyPeerMessageRoundTwo(parsedRound2Output, peerGpgKey, peerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
79
|
+
const rawBytes = await sdk_lib_mpc_1.RedPallasMPSComms.verifyMpsMessage(parsedRound2Output.data.msg2, peerGpgKey);
|
|
80
|
+
return {
|
|
81
|
+
from: peerPartyId,
|
|
82
|
+
payload: new Uint8Array(rawBytes),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Verifies the peer's round-3 PGP signature and returns the raw deserialized
|
|
87
|
+
* message ready for `RedPallasDSG.handleIncomingMessages`.
|
|
88
|
+
*/
|
|
89
|
+
async function verifyPeerMessageRoundThree(parsedRound3Output, peerGpgKey, peerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
90
|
+
const rawBytes = await sdk_lib_mpc_1.RedPallasMPSComms.verifyMpsMessage(parsedRound3Output.data.msg3, peerGpgKey);
|
|
91
|
+
return { from: peerPartyId, payload: new Uint8Array(rawBytes) };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Builds the round-3 signature share record (final signer message).
|
|
95
|
+
*
|
|
96
|
+
* There is no corresponding `verifyBitGoMessageRoundThree` because Wallet Platform
|
|
97
|
+
* finalises the signing server-side after receiving round 3; the client obtains the
|
|
98
|
+
* signed transaction via `sendTxRequest`.
|
|
99
|
+
*/
|
|
100
|
+
async function getSignatureShareRoundThree(userMsg3, userGpgPrivKey, partyId = typesMPCv2_1.MPCv2PartiesEnum.USER, otherSignerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
101
|
+
const signedMsg3 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(userMsg3.payload), userGpgPrivKey);
|
|
102
|
+
const share = {
|
|
103
|
+
type: 'round3Input',
|
|
104
|
+
data: { msg3: signedMsg3 },
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
from: partyIdToSignatureShareType(partyId),
|
|
108
|
+
to: partyIdToSignatureShareType(otherSignerPartyId),
|
|
109
|
+
share: JSON.stringify(share),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlDQSw4REFnQkM7QUFNRCw4REFVQztBQUtELDhEQWdCQztBQU1ELDhEQVVDO0FBTUQsa0VBT0M7QUFTRCxrRUFnQkM7QUFuSkQsb0RBQTBFO0FBUzFFLHlEQUFxRjtBQUNyRixpRUFBb0U7QUFJcEUsU0FBUywyQkFBMkIsQ0FBQyxPQUF5QjtJQUM1RCxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssNkJBQWdCLENBQUMsSUFBSTtZQUN4QixPQUFPLDhCQUFrQixDQUFDLElBQUksQ0FBQztRQUNqQyxLQUFLLDZCQUFnQixDQUFDLE1BQU07WUFDMUIsT0FBTyw4QkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDbkMsS0FBSyw2QkFBZ0IsQ0FBQyxLQUFLO1lBQ3pCLE9BQU8sOEJBQWtCLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxRQUErQyxFQUMvQyxjQUFrQyxFQUNsQyxVQUF5Qiw2QkFBZ0IsQ0FBQyxJQUFJLEVBQzlDLHFCQUF1Qyw2QkFBZ0IsQ0FBQyxLQUFLO0lBRTdELE1BQU0sVUFBVSxHQUFHLE1BQU0sK0JBQWlCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0csTUFBTSxLQUFLLEdBQTRDO1FBQ3JELElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7S0FDM0IsQ0FBQztJQUNGLE9BQU87UUFDTCxJQUFJLEVBQUUsMkJBQTJCLENBQUMsT0FB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RUFBRSxFQUFFLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztLQUM3QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBSZWRQYWxsYXNNUFNDb21tcywgUmVkUGFsbGFzTVBTVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHtcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM091dHB1dCxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBTaWduYXR1cmVTaGFyZVJlY29yZCwgU2lnbmF0dXJlU2hhcmVUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHNzL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHNzL2VjZHNhL3R5cGVzTVBDdjInO1xuXG50eXBlIFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIgfCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUDtcblxuZnVuY3Rpb24gcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKHBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0pOiBTaWduYXR1cmVTaGFyZVR5cGUge1xuICBzd2l0Y2ggKHBhcnR5SWQpIHtcbiAgICBjYXNlIE1QQ3YyUGFydGllc0VudW0uVVNFUjpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUjtcbiAgICBjYXNlIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG4gICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTztcbiAgfVxufVxuXG4vKipcbiAqIFJlZFBhbGxhcyBNUFMgRFNHIHNpZ25hdHVyZS1zaGFyZSBoZWxwZXJzLlxuICpcbiAqIEdyb3VuZHdvcmsgZm9yIGEgZnV0dXJlIGN1c3RvZGlhbC9jb2xkIChTTUMvT1ZDKSBEU0cgc2lnbmluZyBmbG93IC0gbm90IHlldCB3aXJlZCB1cCB0byBhbnlcbiAqIGNhbGxlciBpbiB0aGlzIFNESy4gTWlycm9ycyBgLi4vZWRkc2EvZWRkc2FNUEN2Mi50c2AgKHNhbWUgMy1yb3VuZCBzaGFwZSwgc2FtZSBQR1Atc2lnbmVkLVxuICogbWVzc2FnZSBlbnZlbG9wZSksIGJ1dCBrZXB0IGFzIGFuIGluZGVwZW5kZW50IGNvcHkgLSBidWlsdCBvbiBgUmVkUGFsbGFzTVBTQ29tbXNgIC0gc29cbiAqIFJlZFBhbGxhcyBNUFMgbmV2ZXIgZGVwZW5kcyBvbiB0aGUgRWREU0EgTVBTIG1vZHVsZSwgYW5kIHZpY2UgdmVyc2EuXG4gKi9cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJvdW5kLTEgc2lnbmF0dXJlIHNoYXJlIHJlY29yZC5cbiAqXG4gKiBQR1Atc2lnbnMgdGhlIFdBU00gcm91bmQtMCBicm9hZGNhc3QgbWVzc2FnZSB3aXRoIHRoZSBzaWduZXIncyBlcGhlbWVyYWwga2V5IGFuZFxuICogd3JhcHMgaXQgaW50byBhIFNpZ25hdHVyZVNoYXJlUmVjb3JkIHJlYWR5IGZvciBgc2VuZFNpZ25hdHVyZVNoYXJlVjJgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZShcbiAgdXNlck1zZzE6IFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIHVzZXJHcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHBhcnR5SWQ6IFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIG90aGVyU2lnbmVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3Qgc2lnbmVkTXNnMSA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cxLnBheWxvYWQpLCB1c2VyR3BnUHJpdktleSk7XG4gIGNvbnN0IHNoYXJlOiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQgPSB7XG4gICAgdHlwZTogJ3JvdW5kMUlucHV0JyxcbiAgICBkYXRhOiB7IG1zZzE6IHNpZ25lZE1zZzEgfSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUocGFydHlJZCksXG4gICAgdG86IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShvdGhlclNpZ25lclBhcnR5SWQpLFxuICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShzaGFyZSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHBlZXIncyByb3VuZC0xIFBHUCBzaWduYXR1cmUgYW5kIHJldHVybnMgdGhlIHJhdyBkZXNlcmlhbGl6ZWRcbiAqIG1lc3NhZ2UgcmVhZHkgZm9yIGBSZWRQYWxsYXNEU0cuaGFuZGxlSW5jb21pbmdNZXNzYWdlc2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lKFxuICBwYXJzZWRSb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQxT3V0cHV0LmRhdGEubXNnMSwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcm91bmQtMiBzaWduYXR1cmUgc2hhcmUgcmVjb3JkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFR3byhcbiAgdXNlck1zZzI6IFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIHVzZXJHcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHBhcnR5SWQ6IFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIG90aGVyU2lnbmVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3Qgc2lnbmVkTXNnMiA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cyLnBheWxvYWQpLCB1c2VyR3BnUHJpdktleSk7XG4gIGNvbnN0IHNoYXJlOiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQgPSB7XG4gICAgdHlwZTogJ3JvdW5kMklucHV0JyxcbiAgICBkYXRhOiB7IG1zZzI6IHNpZ25lZE1zZzIgfSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUocGFydHlJZCksXG4gICAgdG86IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShvdGhlclNpZ25lclBhcnR5SWQpLFxuICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShzaGFyZSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHBlZXIncyByb3VuZC0yIFBHUCBzaWduYXR1cmUgYW5kIHJldHVybnMgdGhlIHJhdyBkZXNlcmlhbGl6ZWRcbiAqIG1lc3NhZ2UgcmVhZHkgZm9yIGBSZWRQYWxsYXNEU0cuaGFuZGxlSW5jb21pbmdNZXNzYWdlc2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvKFxuICBwYXJzZWRSb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQyT3V0cHV0LmRhdGEubXNnMiwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwZWVyJ3Mgcm91bmQtMyBQR1Agc2lnbmF0dXJlIGFuZCByZXR1cm5zIHRoZSByYXcgZGVzZXJpYWxpemVkXG4gKiBtZXNzYWdlIHJlYWR5IGZvciBgUmVkUGFsbGFzRFNHLmhhbmRsZUluY29taW5nTWVzc2FnZXNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFRocmVlKFxuICBwYXJzZWRSb3VuZDNPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQzT3V0cHV0LmRhdGEubXNnMywgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7IGZyb206IHBlZXJQYXJ0eUlkLCBwYXlsb2FkOiBuZXcgVWludDhBcnJheShyYXdCeXRlcykgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJvdW5kLTMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZCAoZmluYWwgc2lnbmVyIG1lc3NhZ2UpLlxuICpcbiAqIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgYHZlcmlmeUJpdEdvTWVzc2FnZVJvdW5kVGhyZWVgIGJlY2F1c2UgV2FsbGV0IFBsYXRmb3JtXG4gKiBmaW5hbGlzZXMgdGhlIHNpZ25pbmcgc2VydmVyLXNpZGUgYWZ0ZXIgcmVjZWl2aW5nIHJvdW5kIDM7IHRoZSBjbGllbnQgb2J0YWlucyB0aGVcbiAqIHNpZ25lZCB0cmFuc2FjdGlvbiB2aWEgYHNlbmRUeFJlcXVlc3RgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFRocmVlKFxuICB1c2VyTXNnMzogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSxcbiAgdXNlckdwZ1ByaXZLZXk6IG9wZW5wZ3AuUHJpdmF0ZUtleSxcbiAgcGFydHlJZDogU2lnbmVyUGFydHlJZCA9IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgb3RoZXJTaWduZXJQYXJ0eUlkOiBNUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5CSVRHT1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCBzaWduZWRNc2czID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20odXNlck1zZzMucGF5bG9hZCksIHVzZXJHcGdQcml2S2V5KTtcbiAgY29uc3Qgc2hhcmU6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCA9IHtcbiAgICB0eXBlOiAncm91bmQzSW5wdXQnLFxuICAgIGRhdGE6IHsgbXNnMzogc2lnbmVkTXNnMyB9LFxuICB9O1xuICByZXR1cm4ge1xuICAgIGZyb206IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShwYXJ0eUlkKSxcbiAgICB0bzogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKG90aGVyU2lnbmVyUGFydHlJZCksXG4gICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHNoYXJlKSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAEL,eAAe,EACf,oCAAoC,EACpC,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAsCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;KAC1C,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;
|
|
1
|
+
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAEL,eAAe,EACf,oCAAoC,EACpC,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAsCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;KAC1C,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;IAyRlG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS;CAY/F"}
|
|
@@ -144,6 +144,8 @@ class MpcUtils {
|
|
|
144
144
|
'defi-approve',
|
|
145
145
|
'defi-deposit',
|
|
146
146
|
'defi-withdraw',
|
|
147
|
+
'wrap-native',
|
|
148
|
+
'unwrap-native',
|
|
147
149
|
'wrapApprove',
|
|
148
150
|
'wrap',
|
|
149
151
|
].includes(params.intentType)) {
|
|
@@ -251,6 +253,18 @@ class MpcUtils {
|
|
|
251
253
|
shareTokenAmount: params.defiParams.amount,
|
|
252
254
|
};
|
|
253
255
|
}
|
|
256
|
+
case 'wrap-native':
|
|
257
|
+
case 'unwrap-native': {
|
|
258
|
+
(0, assert_1.default)(params.defiParams, `'defiParams' is required for ${params.intentType} intent`);
|
|
259
|
+
// WrapNativeIntent / UnwrapNativeIntent carry a plain `amount` (base units
|
|
260
|
+
// of the native coin when wrapping, of the wrapped token when unwrapping),
|
|
261
|
+
// not the `shareTokenAmount` that defi-withdraw uses for vault shares.
|
|
262
|
+
return {
|
|
263
|
+
...baseIntent,
|
|
264
|
+
vaultId: params.defiParams.vaultId,
|
|
265
|
+
amount: params.defiParams.amount,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
254
268
|
case 'wrapApprove':
|
|
255
269
|
case 'wrap': {
|
|
256
270
|
(0, assert_1.default)(params.wrapParams, `'wrapParams' is required for ${params.intentType} intent`);
|
|
@@ -301,4 +315,4 @@ class MpcUtils {
|
|
|
301
315
|
}
|
|
302
316
|
}
|
|
303
317
|
exports.MpcUtils = MpcUtils;
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBSWxGLGlEQUFnRTtBQU9oRSxzREFBd0Y7QUFDeEYsNENBQW9EO0FBU3BELE1BQXNCLFFBQVE7SUFJNUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFUyxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxVQUFxQztRQUM3RixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxxQkFBVyxFQUFDO1lBQzVDLGNBQWMsRUFBRSxZQUFZO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdCQUFjLEVBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLElBQUEsaUJBQU8sRUFBQztZQUNaLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUM7UUFFUCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFUyxLQUFLLENBQUMsdUJBQXVCLENBQ3JDLFVBQXFDLEVBQ3JDLFlBQXVDLEVBQ3ZDLFlBQXlCLEVBQ3pCLGNBQTJCLEVBQzNCLE9BQWdCLEVBQ2hCLFVBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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QUM7SUFDN0IsQ0FBQztDQUNGO0FBblhELDRCQW1YQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGRlY3J5cHQsIHJlYWRNZXNzYWdlLCByZWFkUHJpdmF0ZUtleSwgU2VyaWFsaXplZEtleVBhaXIgfSBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlLCBXZWJhdXRobktleUVuY3J5cHRpb25JbmZvIH0gZnJvbSAnLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgZW5jcnlwdFRleHQsIGdldEJpdGdvR3BnUHViS2V5IH0gZnJvbSAnLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHtcbiAgSW50ZW50UmVjaXBpZW50LFxuICBQb3B1bGF0ZWRJbnRlbnQsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtcyxcbn0gZnJvbSAnLi90c3MvYmFzZVR5cGVzJztcbmltcG9ydCB7IGVudlJlcXVpcmVzQml0Z29QdWJHcGdLZXlDb25maWcsIGlzQml0Z29NcGNQdWJLZXkgfSBmcm9tICcuLi90c3MvYml0Z29QdWJLZXlzJztcbmltcG9ydCB7IGNvaW5zLCBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBNcGNLZXlTaGFyZSB7XG4gIHB1YmxpY1NoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZTogc3RyaW5nO1xuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZztcbiAgdnNzUHJvb2Y/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNcGNVdGlscyB7XG4gIHByb3RlY3RlZCBiaXRnbzogQml0R29CYXNlO1xuICBwcm90ZWN0ZWQgYmFzZUNvaW46IElCYXNlQ29pbjtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBiYXNlQ29pbjogSUJhc2VDb2luKSB7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAgIHRoaXMuYmFzZUNvaW4gPSBiYXNlQ29pbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWNyeXB0UHJpdmF0ZVNoYXJlKHByaXZhdGVTaGFyZTogc3RyaW5nLCB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcml2YXRlU2hhcmVNZXNzYWdlID0gYXdhaXQgcmVhZE1lc3NhZ2Uoe1xuICAgICAgYXJtb3JlZE1lc3NhZ2U6IHByaXZhdGVTaGFyZSxcbiAgICB9KTtcbiAgICBjb25zdCB1c2VyR3BnUHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlckdwZ0tleS5wcml2YXRlS2V5IH0pO1xuXG4gICAgY29uc3QgZGVjcnlwdGVkUHJpdmF0ZVNoYXJlID0gKFxuICAgICAgYXdhaXQgZGVjcnlwdCh7XG4gICAgICAgIG1lc3NhZ2U6IHByaXZhdGVTaGFyZU1lc3NhZ2UsXG4gICAgICAgIGRlY3J5cHRpb25LZXlzOiBbdXNlckdwZ1ByaXZhdGVLZXldLFxuICAgICAgICBmb3JtYXQ6ICd1dGY4JyxcbiAgICAgIH0pXG4gICAgKS5kYXRhO1xuXG4gICAgcmV0dXJuIGRlY3J5cHRlZFByaXZhdGVTaGFyZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVCaXRnb0tleWNoYWluSW5XUChcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIGJhY2t1cEdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBNcGNLZXlTaGFyZSxcbiAgICBrZXlUeXBlOiBLZXlUeXBlLFxuICAgIGVudGVycHJpc2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gKGF3YWl0IGdldEJpdGdvR3BnUHViS2V5KHRoaXMuYml0Z28pKS5tcGNWMTtcbiAgICBpZiAoZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZyh0aGlzLmJpdGdvLmdldEVudigpKSkge1xuICAgICAgLy8gRW5zdXJlIHRoZSBwdWJsaWMga2V5IGlzIG9uZSBvZiB0aGUgZXhwZWN0ZWQgQml0R28gcHVibGljIGtleXMgd2hlbiBpbiB0ZXN0IG9yIHByb2QuXG4gICAgICBhc3NlcnQoaXNCaXRnb01wY1B1YktleShiaXRnb0tleS5hcm1vcigpLCAnbXBjdjEnKSwgJ0ludmFsaWQgQml0R28gR1BHIHB1YmxpYyBrZXknKTtcbiAgICB9XG4gICAgY29uc3QgZW5jVXNlclRvQml0R29NZXNzYWdlID0gYXdhaXQgZW5jcnlwdFRleHQodXNlcktleVNoYXJlLnByaXZhdGVTaGFyZSwgYml0Z29LZXkpO1xuICAgIGNvbnN0IGVuY0JhY2t1cFRvQml0R29NZXNzYWdlID0gYXdhaXQgZW5jcnlwdFRleHQoYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG5cbiAgICBjb25zdCBjcmVhdGVCaXRHb01QQ1BhcmFtczogQWRkS2V5Y2hhaW5PcHRpb25zID0ge1xuICAgICAga2V5VHlwZSxcbiAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgIGtleVNoYXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogJ3VzZXInLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiB1c2VyS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNVc2VyVG9CaXRHb01lc3NhZ2UsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IHVzZXJLZXlTaGFyZS5wcml2YXRlU2hhcmVQcm9vZixcbiAgICAgICAgICB2c3NQcm9vZjogdXNlcktleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJhY2t1cEtleVNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZTogZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiBiYWNrdXBLZXlTaGFyZS52c3NQcm9vZixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyR1BHUHVibGljS2V5OiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGJhY2t1cEdQR1B1YmxpY0tleTogYmFja3VwR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGVudGVycHJpc2U6IGVudGVycHJpc2UsXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpLmFkZChjcmVhdGVCaXRHb01QQ1BhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBVc2VyLCBCYWNrdXAsIGFuZCBCaXRHbyBNUEMgS2V5Y2hhaW5zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLnBhc3NwaHJhc2UgLSBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCBzaWduaW5nIG1hdGVyaWFscyBjcmVhdGVkIGZvciBVc2VyIGFuZCBCYWNrdXBcbiAgICogQHBhcmFtIHBhcmFtcy5lbnRlcnByaXNlIC0gb3B0aW9uYWwgZW50ZXJwcmlzZSBpZCB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIEJpdEdvIEtleWNoYWluXG4gICAqIEBwYXJhbSBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlIC0gb3B0aW9uYWwgZW5jcnlwdGlvbiBjb2RlIHVzZWQgdG8gcmVzZXQgdGhlIHVzZXIncyBwYXNzd29yZCwgaWYgYWJzZW50LCBwYXNzd29yZCByZWNvdmVyeSB3aWxsIG5vdCB3b3JrXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm87XG4gIH0pOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+O1xuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBwb3B1bGF0aW5nIGludGVudHNcbiAgICogYmFzZWQgb24gdGhlIHR5cGUgb2YgY29pbiAvIHNpZyBzY2hlbWUgdGhlIGNvaW4gdXNlc1xuICAgKiBAcGFyYW0ge0lCYXNlQ29pbn0gYmFzZUNvaW5cbiAgICogQHBhcmFtIHtQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnN9IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59XG4gICAqL1xuICBwb3B1bGF0ZUludGVudChiYXNlQ29pbjogSUJhc2VDb2luLCBwYXJhbXM6IFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyk6IFBvcHVsYXRlZEludGVudCB7XG4gICAgY29uc3QgY2hhaW4gPSB0aGlzLmJhc2VDb2luLmdldENoYWluKCk7XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjdXN0b21UeCcgJiYgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdzb2wnKSB7XG4gICAgICBjb25zdCBoYXNTb2xJbnN0cnVjdGlvbnMgPSBwYXJhbXMuc29sSW5zdHJ1Y3Rpb25zICYmIHBhcmFtcy5zb2xJbnN0cnVjdGlvbnMubGVuZ3RoID4gMDtcbiAgICAgIGNvbnN0IGhhc1ZlcnNpb25lZERhdGEgPVxuICAgICAgICBwYXJhbXMuc29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhICYmXG4gICAgICAgIHBhcmFtcy5zb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zICYmXG4gICAgICAgIHBhcmFtcy5zb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aCA+IDA7XG5cbiAgICAgIGFzc2VydChcbiAgICAgICAgaGFzU29sSW5zdHJ1Y3Rpb25zIHx8IGhhc1ZlcnNpb25lZERhdGEsXG4gICAgICAgIGAnc29sSW5zdHJ1Y3Rpb25zJyBvciAnc29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhJyBpcyByZXF1aXJlZCBmb3IgY3VzdG9tVHggaW50ZW50YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjdXN0b21UeCcgJiYgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdhcHQnKSB7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIHBhcmFtcy5hcHRvc0N1c3RvbVRyYW5zYWN0aW9uUGFyYW1zLFxuICAgICAgICBgJ2FwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciBjdXN0b21UeCBpbnRlbnRgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgICAgICAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgICAgICAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAgICAgICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAgICAgXS5pbmNsdWRlcyhwYXJhbXMuaW50ZW50VHlwZSkgJiZcbiAgICAgIGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnY2FudG9uJ1xuICAgICkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy50eFJlcXVlc3RJZCwgYCd0eFJlcXVlc3RJZCcgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcicpIHtcbiAgICAgIGFzc2VydChwYXJhbXMuZW5kSW52ZXN0b3JQYXJ0eUlkLCBgJ2VuZEludmVzdG9yUGFydHlJZCcgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnJlYXNvbiwgYCdyZWFzb24nIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5pbnRlbnRUeXBlID09PSAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcpIHtcbiAgICAgIGFzc2VydChwYXJhbXMub3BlcmF0b3IsIGAnb3BlcmF0b3InIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLnByb3ZpZGVyLCBgJ3Byb3ZpZGVyJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgICAgYXNzZXJ0KHBhcmFtcy5jb21wbGlhbmNlLCBgJ2NvbXBsaWFuY2UnIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLnJlZ2lzdHJhciwgYCdyZWdpc3RyYXInIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLmNsaWVudE9uYm9hcmRlciwgYCdjbGllbnRPbmJvYXJkZXInIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgWyd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJywgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3biddLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSAmJlxuICAgICAgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdjYW50b24nXG4gICAgKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnRyYW5zZmVyT2ZmZXJJZCwgYCd0cmFuc2Zlck9mZmVySWQnIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5pbnRlbnRUeXBlID09PSAnY2FudG9uQ29tbWFuZCcpIHtcbiAgICAgIGFzc2VydChiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2NhbnRvbicsIGAnY2FudG9uQ29tbWFuZCcgaW50ZW50IGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0aGUgY2FudG9uIGNvaW4gZmFtaWx5YCk7XG5cbiAgICAgIGNvbnN0IHsgY2FudG9uQ29tbWFuZFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgICAgYXNzZXJ0KGNhbnRvbkNvbW1hbmRQYXJhbXMsIGAnY2FudG9uQ29tbWFuZFBhcmFtcycgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuXG4gICAgICBjb25zdCBpc1BsYWluT2JqZWN0ID0gKHY6IHVua25vd24pOiBib29sZWFuID0+XG4gICAgICAgIHYgIT09IG51bGwgJiYgdiAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KTtcblxuICAgICAgY29uc3QgeyBjb21tYW5kLCBhY3RBcyB9ID0gY2FudG9uQ29tbWFuZFBhcmFtcztcbiAgICAgIGFzc2VydChpc1BsYWluT2JqZWN0KGNvbW1hbmQpLCBgJ2NhbnRvbkNvbW1hbmRQYXJhbXMuY29tbWFuZCcgbXVzdCBiZSBhIG5vbi1udWxsIHBsYWluIG9iamVjdGApO1xuXG4gICAgICBjb25zdCBoYXNDcmVhdGUgPSAnQ3JlYXRlQ29tbWFuZCcgaW4gY29tbWFuZCAmJiBpc1BsYWluT2JqZWN0KGNvbW1hbmRbJ0NyZWF0ZUNvbW1hbmQnXSk7XG4gICAgICBjb25zdCBoYXNFeGVyY2lzZSA9ICdFeGVyY2lzZUNvbW1hbmQnIGluIGNvbW1hbmQgJiYgaXNQbGFpbk9iamVjdChjb21tYW5kWydFeGVyY2lzZUNvbW1hbmQnXSk7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIGhhc0NyZWF0ZSAhPT0gaGFzRXhlcmNpc2UsXG4gICAgICAgIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5jb21tYW5kJyBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgb2YgQ3JlYXRlQ29tbWFuZCBvciBFeGVyY2lzZUNvbW1hbmQgYXMgYSBub24tbnVsbCBwbGFpbiBvYmplY3RgXG4gICAgICApO1xuXG4gICAgICBhc3NlcnQoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoYWN0QXMpICYmIGFjdEFzLmxlbmd0aCA+IDAgJiYgYWN0QXMuZXZlcnkoKHApID0+IHR5cGVvZiBwID09PSAnc3RyaW5nJyAmJiBwLnRyaW0oKSAhPT0gJycpLFxuICAgICAgICBgJ2NhbnRvbkNvbW1hbmRQYXJhbXMuYWN0QXMnIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygbm9uLWVtcHR5IHN0cmluZ3MgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIVtcbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgICAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICd0b2tlbkFwcHJvdmFsJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgICAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgICAgICAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgICAgICAgJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2JyaWRnZUZ1bmRzJyxcbiAgICAgICAgJ2NhbnRvbkNvbW1hbmQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXInLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICAgICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0JyxcbiAgICAgICAgJ2RlZmktYXBwcm92ZScsXG4gICAgICAgICdkZWZpLWRlcG9zaXQnLFxuICAgICAgICAnZGVmaS13aXRoZHJhdycsXG4gICAgICAgICd3cmFwQXBwcm92ZScsXG4gICAgICAgICd3cmFwJyxcbiAgICAgIF0uaW5jbHVkZXMocGFyYW1zLmludGVudFR5cGUpXG4gICAgKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnJlY2lwaWVudHMsIGAncmVjaXBpZW50cycgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cbiAgICBjb25zdCBpbnRlbnRSZWNpcGllbnRzID0gcGFyYW1zLnJlY2lwaWVudHM/Lm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRSZWNpcGllbnQ6IEludGVudFJlY2lwaWVudCA9IHtcbiAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyB9LFxuICAgICAgICBhbW91bnQ6IHsgdmFsdWU6IGAke3JlY2lwaWVudC5hbW91bnR9YCwgc3ltYm9sOiByZWNpcGllbnQudG9rZW5OYW1lID8gcmVjaXBpZW50LnRva2VuTmFtZSA6IGNoYWluIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAocmVjaXBpZW50LmRhdGEpIHtcbiAgICAgICAgZm9ybWF0dGVkUmVjaXBpZW50LmRhdGEgPSByZWNpcGllbnQuZGF0YTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyB0b2tlbkRhdGEgfSA9IHJlY2lwaWVudDtcbiAgICAgIGlmICh0b2tlbkRhdGEgJiYgKHRva2VuRGF0YS50b2tlbkNvbnRyYWN0QWRkcmVzcyB8fCB0b2tlbkRhdGEudG9rZW5OYW1lKSkge1xuICAgICAgICAvLyB0b2tlbiByZWxhdGVkIHJlY2lwaWVudCBkYXRhIGdldHMgdmFsaWRhdGVkIGluIFdQXG4gICAgICAgIGlmICghKHRva2VuRGF0YS50b2tlblR5cGUgJiYgdG9rZW5EYXRhLnRva2VuUXVhbnRpdHkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ3Rva2VuIHR5cGUgYW5kIHF1YW50aXR5IGlzIHJlcXVpcmVkIHRvIHJlcXVlc3QgYSB0cmFuc2FjdGlvbiB3aXRoIGludGVudCB0byB0cmFuc2ZlciBhIHRva2VuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5EYXRhLnRva2VuTmFtZSA9IHRoaXMuZ2V0VG9rZW5OYW1lKGJhc2VDb2luLCB0b2tlbkRhdGEpO1xuICAgICAgICBpZiAodG9rZW5EYXRhLnRva2VuTmFtZSkge1xuICAgICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5hbW91bnQuc3ltYm9sID0gdG9rZW5EYXRhLnRva2VuTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQudG9rZW5EYXRhID0gdG9rZW5EYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY2lwaWVudDtcbiAgICB9KTtcblxuICAgIGNvbnN0IGJhc2VJbnRlbnQ6IFBvcHVsYXRlZEludGVudCA9IHtcbiAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgc2VxdWVuY2VJZDogcGFyYW1zLnNlcXVlbmNlSWQsXG4gICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICByZWNpcGllbnRzOiBpbnRlbnRSZWNpcGllbnRzLFxuICAgICAgdG9rZW5OYW1lOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgaXNUZXN0VHJhbnNhY3Rpb246IHBhcmFtcy5pc1Rlc3RUcmFuc2FjdGlvbixcbiAgICB9O1xuXG4gICAgaWYgKGJhc2VDb2luLmlzRVZNKCkgJiYgYmFzZUNvaW4uc3VwcG9ydHNUc3MoKSkge1xuICAgICAgc3dpdGNoIChwYXJhbXMuaW50ZW50VHlwZSkge1xuICAgICAgICBjYXNlICdwYXltZW50JzpcbiAgICAgICAgY2FzZSAndHJhbnNmZXJUb2tlbic6XG4gICAgICAgIGNhc2UgJ2ZpbGxOb25jZSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBzZWxmU2VuZDogcGFyYW1zLnNlbGZTZW5kLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgICAgaG9wUGFyYW1zOiBwYXJhbXMuaG9wUGFyYW1zLFxuICAgICAgICAgICAgaXNUc3M6IHBhcmFtcy5pc1RzcyxcbiAgICAgICAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICAgICAgICBjdXN0b2RpYW5UcmFuc2FjdGlvbklkOiBwYXJhbXMuY3VzdG9kaWFuVHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICAgIHJlY2VpdmVBZGRyZXNzOiBwYXJhbXMucmVjZWl2ZUFkZHJlc3MsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYWNjZWxlcmF0aW9uJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHR4aWQ6IHBhcmFtcy5sb3dGZWVUeGlkLFxuICAgICAgICAgICAgcmVjZWl2ZUFkZHJlc3M6IHBhcmFtcy5yZWNlaXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICd0b2tlbkFwcHJvdmFsJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdicmlkZ2VGdW5kcyc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnZW5hYmxlVG9rZW4nOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgZW5hYmxlVG9rZW5zOiBwYXJhbXMuZW5hYmxlVG9rZW5zLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2RlZmktYXBwcm92ZSc6XG4gICAgICAgIGNhc2UgJ2RlZmktZGVwb3NpdCc6IHtcbiAgICAgICAgICBhc3NlcnQocGFyYW1zLmRlZmlQYXJhbXMsIGAnZGVmaVBhcmFtcycgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdmF1bHRJZDogcGFyYW1zLmRlZmlQYXJhbXMudmF1bHRJZCxcbiAgICAgICAgICAgIGFtb3VudDogcGFyYW1zLmRlZmlQYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgLi4uKHBhcmFtcy5kZWZpUGFyYW1zLm9wZXJhdGlvbklkICYmIHsgb3BlcmF0aW9uSWQ6IHBhcmFtcy5kZWZpUGFyYW1zLm9wZXJhdGlvbklkIH0pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZGVmaS13aXRoZHJhdyc6IHtcbiAgICAgICAgICBhc3NlcnQocGFyYW1zLmRlZmlQYXJhbXMsIGAnZGVmaVBhcmFtcycgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdmF1bHRJZDogcGFyYW1zLmRlZmlQYXJhbXMudmF1bHRJZCxcbiAgICAgICAgICAgIC8vIERlZmlXaXRoZHJhd0ludGVudCB1c2VzIHNoYXJlVG9rZW5BbW91bnQgKHZhdWx0IHNoYXJlcywgYmFzZSB1bml0cylcbiAgICAgICAgICAgIHNoYXJlVG9rZW5BbW91bnQ6IHBhcmFtcy5kZWZpUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3dyYXBBcHByb3ZlJzpcbiAgICAgICAgY2FzZSAnd3JhcCc6IHtcbiAgICAgICAgICBhc3NlcnQocGFyYW1zLndyYXBQYXJhbXMsIGAnd3JhcFBhcmFtcycgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIHR5cGVvZiBwYXJhbXMud3JhcFBhcmFtcy50b2tlbk5hbWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcy53cmFwUGFyYW1zLnRva2VuTmFtZS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgYCd3cmFwUGFyYW1zLnRva2VuTmFtZScgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICAgICApO1xuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIHR5cGVvZiBwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQgPT09ICdzdHJpbmcnICYmIC9eWzEtOV1cXGQqJC8udGVzdChwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQpLFxuICAgICAgICAgICAgYCd3cmFwUGFyYW1zLmFtb3VudCcgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc3RyaW5nIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogcGFyYW1zLndyYXBQYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgaW50ZW50IHR5cGUgJHtwYXJhbXMuaW50ZW50VHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJhc2VDb2luLnNldENvaW5TcGVjaWZpY0ZpZWxkc0luSW50ZW50KGJhc2VJbnRlbnQsIHBhcmFtcyk7XG5cbiAgICBpZiAocGFyYW1zLmZlZU9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgICB0b2tlbjogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgICAgZW5hYmxlVG9rZW5zOiBwYXJhbXMuZW5hYmxlVG9rZW5zLFxuICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICBtZW1vOiBwYXJhbXMubWVtbz8udmFsdWUsXG4gICAgICB0b2tlbjogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgfTtcbiAgfVxuXG4gIGdldFRva2VuTmFtZShiYXNlQ29pbjogSUJhc2VDb2luLCB0b2tlbkRhdGE6IFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0b2tlbkRhdGEudG9rZW5OYW1lKSB7XG4gICAgICByZXR1cm4gdG9rZW5EYXRhLnRva2VuTmFtZTtcbiAgICB9XG4gICAgY29uc3QgbmV0d29ya1ByZWZpeCA9IGJhc2VDb2luLmdldENvbmZpZygpLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCA/ICd0JyA6ICcnO1xuICAgIGNvbnN0IHRva2VuU3RhdGljc0tleSA9IGAke25ldHdvcmtQcmVmaXh9JHtiYXNlQ29pbi5nZXRGYW1pbHkoKX06JHt0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3N9YDtcbiAgICBpZiAoY29pbnMuaGFzKHRva2VuU3RhdGljc0tleSkpIHtcbiAgICAgIGNvbnN0IHRva2VuU3RhdGljcyA9IGNvaW5zLmdldCh0b2tlblN0YXRpY3NLZXkpO1xuICAgICAgdG9rZW5EYXRhLnRva2VuTmFtZSA9IHRva2VuU3RhdGljcy5uYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5EYXRhLnRva2VuTmFtZTtcbiAgfVxufVxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBSWxGLGlEQUFnRTtBQU9oRSxzREFBd0Y7QUFDeEYsNENBQW9EO0FBU3BELE1BQXNCLFFBQVE7SUFJNUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFUyxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxVQUFxQztRQUM3RixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxxQkFBVyxFQUFDO1lBQzVDLGNBQWMsRUFBRSxZQUFZO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdCQUFjLEVBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLElBQUEsaUJBQU8sRUFBQztZQUNaLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUM7UUFFUCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFUyxLQUFLLENBQUMsdUJBQXVCLENBQ3JDLFVBQXFDLEVBQ3JDLFlBQXVDLEVBQ3ZDLFlBQXlCLEVBQ3pCLGNBQTJCLEVBQzNCLE9BQWdCLEVBQ2hCLFVBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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T0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRixNQUFNLGVBQWUsR0FBRyxHQUFHLGFBQWEsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksU0FBUyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDcEcsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRCxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFqWUQsNEJBaVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZGVjcnlwdCwgcmVhZE1lc3NhZ2UsIHJlYWRQcml2YXRlS2V5LCBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUsIFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm8gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuL29wZW5ncGdVdGlscyc7XG5pbXBvcnQge1xuICBJbnRlbnRSZWNpcGllbnQsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zLFxufSBmcm9tICcuL3Rzcy9iYXNlVHlwZXMnO1xuaW1wb3J0IHsgZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZywgaXNCaXRnb01wY1B1YktleSB9IGZyb20gJy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgY29pbnMsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1wY0tleVNoYXJlIHtcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZVByb29mPzogc3RyaW5nO1xuICB2c3NQcm9vZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1wY1V0aWxzIHtcbiAgcHJvdGVjdGVkIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByb3RlY3RlZCBiYXNlQ29pbjogSUJhc2VDb2luO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlY3J5cHRQcml2YXRlU2hhcmUocHJpdmF0ZVNoYXJlOiBzdHJpbmcsIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZU1lc3NhZ2UgPSBhd2FpdCByZWFkTWVzc2FnZSh7XG4gICAgICBhcm1vcmVkTWVzc2FnZTogcHJpdmF0ZVNoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyR3BnS2V5LnByaXZhdGVLZXkgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcml2YXRlU2hhcmUgPSAoXG4gICAgICBhd2FpdCBkZWNyeXB0KHtcbiAgICAgICAgbWVzc2FnZTogcHJpdmF0ZVNoYXJlTWVzc2FnZSxcbiAgICAgICAgZGVjcnlwdGlvbktleXM6IFt1c2VyR3BnUHJpdmF0ZUtleV0sXG4gICAgICAgIGZvcm1hdDogJ3V0ZjgnLFxuICAgICAgfSlcbiAgICApLmRhdGE7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkUHJpdmF0ZVNoYXJlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW5JbldQKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgYmFja3VwR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgZW50ZXJwcmlzZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXkgPSAoYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbykpLm1wY1YxO1xuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIHB1YmxpYyBrZXkgaXMgb25lIG9mIHRoZSBleHBlY3RlZCBCaXRHbyBwdWJsaWMga2V5cyB3aGVuIGluIHRlc3Qgb3IgcHJvZC5cbiAgICAgIGFzc2VydChpc0JpdGdvTXBjUHViS2V5KGJpdGdvS2V5LmFybW9yKCksICdtcGN2MScpLCAnSW52YWxpZCBCaXRHbyBHUEcgcHVibGljIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBlbmNVc2VyVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dCh1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG4gICAgY29uc3QgZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dChiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogdXNlcktleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiB1c2VyS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYmFja3VwS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBiYWNrdXBHcGdLZXkucHVibGljS2V5LFxuICAgICAgZW50ZXJwcmlzZTogZW50ZXJwcmlzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFVzZXIsIEJhY2t1cCwgYW5kIEJpdEdvIE1QQyBLZXljaGFpbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMucGFzc3BocmFzZSAtIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNpZ25pbmcgbWF0ZXJpYWxzIGNyZWF0ZWQgZm9yIFVzZXIgYW5kIEJhY2t1cFxuICAgKiBAcGFyYW0gcGFyYW1zLmVudGVycHJpc2UgLSBvcHRpb25hbCBlbnRlcnByaXNlIGlkIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgQml0R28gS2V5Y2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgLSBvcHRpb25hbCBlbmNyeXB0aW9uIGNvZGUgdXNlZCB0byByZXNldCB0aGUgdXNlcidzIHBhc3N3b3JkLCBpZiBhYnNlbnQsIHBhc3N3b3JkIHJlY292ZXJ5IHdpbGwgbm90IHdvcmtcbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gICAgd2ViYXV0aG5JbmZvPzogV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mbztcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD47XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd291bGQgYmUgcmVzcG9uc2libGUgZm9yIHBvcHVsYXRpbmcgaW50ZW50c1xuICAgKiBiYXNlZCBvbiB0aGUgdHlwZSBvZiBjb2luIC8gc2lnIHNjaGVtZSB0aGUgY29pbiB1c2VzXG4gICAqIEBwYXJhbSB7SUJhc2VDb2lufSBiYXNlQ29pblxuICAgKiBAcGFyYW0ge1ByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9uc30gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICovXG4gIHBvcHVsYXRlSW50ZW50KGJhc2VDb2luOiBJQmFzZUNvaW4sIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogUG9wdWxhdGVkSW50ZW50IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3NvbCcpIHtcbiAgICAgIGNvbnN0IGhhc1NvbEluc3RydWN0aW9ucyA9IHBhcmFtcy5zb2xJbnN0cnVjdGlvbnMgJiYgcGFyYW1zLnNvbEluc3RydWN0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgY29uc3QgaGFzVmVyc2lvbmVkRGF0YSA9XG4gICAgICAgIHBhcmFtcy5zb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gMDtcblxuICAgICAgYXNzZXJ0KFxuICAgICAgICBoYXNTb2xJbnN0cnVjdGlvbnMgfHwgaGFzVmVyc2lvbmVkRGF0YSxcbiAgICAgICAgYCdzb2xJbnN0cnVjdGlvbnMnIG9yICdzb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEnIGlzIHJlcXVpcmVkIGZvciBjdXN0b21UeCBpbnRlbnRgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2FwdCcpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgcGFyYW1zLmFwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMsXG4gICAgICAgIGAnYXB0b3NDdXN0b21UcmFuc2FjdGlvblBhcmFtcycgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIGN1c3RvbVR4IGludGVudGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSAmJlxuICAgICAgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdjYW50b24nXG4gICAgKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnR4UmVxdWVzdElkLCBgJ3R4UmVxdWVzdElkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQsIGAnZW5kSW52ZXN0b3JQYXJ0eUlkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcpIHtcbiAgICAgIGFzc2VydChwYXJhbXMucmVhc29uLCBgJ3JlYXNvbicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0Jykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5vcGVyYXRvciwgYCdvcGVyYXRvcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucHJvdmlkZXIsIGAncHJvdmlkZXInIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLmNvbXBsaWFuY2UsIGAnY29tcGxpYW5jZScgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucmVnaXN0cmFyLCBgJ3JlZ2lzdHJhcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMuY2xpZW50T25ib2FyZGVyLCBgJ2NsaWVudE9uYm9hcmRlcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBbJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLCAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJ10uaW5jbHVkZXMocGFyYW1zLmludGVudFR5cGUpICYmXG4gICAgICBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2NhbnRvbidcbiAgICApIHtcbiAgICAgIGFzc2VydChwYXJhbXMudHJhbnNmZXJPZmZlcklkLCBgJ3RyYW5zZmVyT2ZmZXJJZCcgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25Db21tYW5kJykge1xuICAgICAgYXNzZXJ0KGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnY2FudG9uJywgYCdjYW50b25Db21tYW5kJyBpbnRlbnQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRoZSBjYW50b24gY29pbiBmYW1pbHlgKTtcblxuICAgICAgY29uc3QgeyBjYW50b25Db21tYW5kUGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgICBhc3NlcnQoY2FudG9uQ29tbWFuZFBhcmFtcywgYCdjYW50b25Db21tYW5kUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG5cbiAgICAgIGNvbnN0IGlzUGxhaW5PYmplY3QgPSAodjogdW5rbm93bik6IGJvb2xlYW4gPT5cbiAgICAgICAgdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpO1xuXG4gICAgICBjb25zdCB7IGNvbW1hbmQsIGFjdEFzIH0gPSBjYW50b25Db21tYW5kUGFyYW1zO1xuICAgICAgYXNzZXJ0KGlzUGxhaW5PYmplY3QoY29tbWFuZCksIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5jb21tYW5kJyBtdXN0IGJlIGEgbm9uLW51bGwgcGxhaW4gb2JqZWN0YCk7XG5cbiAgICAgIGNvbnN0IGhhc0NyZWF0ZSA9ICdDcmVhdGVDb21tYW5kJyBpbiBjb21tYW5kICYmIGlzUGxhaW5PYmplY3QoY29tbWFuZFsnQ3JlYXRlQ29tbWFuZCddKTtcbiAgICAgIGNvbnN0IGhhc0V4ZXJjaXNlID0gJ0V4ZXJjaXNlQ29tbWFuZCcgaW4gY29tbWFuZCAmJiBpc1BsYWluT2JqZWN0KGNvbW1hbmRbJ0V4ZXJjaXNlQ29tbWFuZCddKTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgaGFzQ3JlYXRlICE9PSBoYXNFeGVyY2lzZSxcbiAgICAgICAgYCdjYW50b25Db21tYW5kUGFyYW1zLmNvbW1hbmQnIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZiBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCBhcyBhIG5vbi1udWxsIHBsYWluIG9iamVjdGBcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydChcbiAgICAgICAgQXJyYXkuaXNBcnJheShhY3RBcykgJiYgYWN0QXMubGVuZ3RoID4gMCAmJiBhY3RBcy5ldmVyeSgocCkgPT4gdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJyksXG4gICAgICAgIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5hY3RBcycgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhW1xuICAgICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICAgJ2ZpbGxOb25jZScsXG4gICAgICAgICd0cmFuc2ZlclRva2VuJyxcbiAgICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgICAnY3VzdG9tVHgnLFxuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjb3NpZ25EZWxlZ2F0aW9uQWNjZXB0JyxcbiAgICAgICAgJ2FsbG9jYXRpb25BbGxvY2F0ZScsXG4gICAgICAgICdhbGxvY2F0aW9uT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnYnJpZGdlRnVuZHMnLFxuICAgICAgICAnY2FudG9uQ29tbWFuZCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcicsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdBY2NlcHQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nUmVqZWN0JyxcbiAgICAgICAgJ2NhbnRvblBhcnRpY2lwYW50T25ib2FyZGluZ1JlcXVlc3QnLFxuICAgICAgICAnZGVmaS1hcHByb3ZlJyxcbiAgICAgICAgJ2RlZmktZGVwb3NpdCcsXG4gICAgICAgICdkZWZpLXdpdGhkcmF3JyxcbiAgICAgICAgJ3dyYXAtbmF0aXZlJyxcbiAgICAgICAgJ3Vud3JhcC1uYXRpdmUnLFxuICAgICAgICAnd3JhcEFwcHJvdmUnLFxuICAgICAgICAnd3JhcCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKVxuICAgICkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuRGF0YS50b2tlbk5hbWUgPSB0aGlzLmdldFRva2VuTmFtZShiYXNlQ29pbiwgdG9rZW5EYXRhKTtcbiAgICAgICAgaWYgKHRva2VuRGF0YS50b2tlbk5hbWUpIHtcbiAgICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQuYW1vdW50LnN5bWJvbCA9IHRva2VuRGF0YS50b2tlbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkUmVjaXBpZW50LnRva2VuRGF0YSA9IHRva2VuRGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNpcGllbnQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBiYXNlSW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQgPSB7XG4gICAgICBpbnRlbnRUeXBlOiBwYXJhbXMuaW50ZW50VHlwZSxcbiAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyxcbiAgICAgIHRva2VuTmFtZTogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgIGlzVGVzdFRyYW5zYWN0aW9uOiBwYXJhbXMuaXNUZXN0VHJhbnNhY3Rpb24sXG4gICAgfTtcblxuICAgIGlmIChiYXNlQ29pbi5pc0VWTSgpICYmIGJhc2VDb2luLnN1cHBvcnRzVHNzKCkpIHtcbiAgICAgIHN3aXRjaCAocGFyYW1zLmludGVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAncGF5bWVudCc6XG4gICAgICAgIGNhc2UgJ3RyYW5zZmVyVG9rZW4nOlxuICAgICAgICBjYXNlICdmaWxsTm9uY2UnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgc2VsZlNlbmQ6IHBhcmFtcy5zZWxmU2VuZCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgICByZWNlaXZlQWRkcmVzczogcGFyYW1zLnJlY2VpdmVBZGRyZXNzLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2FjY2VsZXJhdGlvbic6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB0eGlkOiBwYXJhbXMubG93RmVlVHhpZCxcbiAgICAgICAgICAgIHJlY2VpdmVBZGRyZXNzOiBwYXJhbXMucmVjZWl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAndG9rZW5BcHByb3ZhbCc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYnJpZGdlRnVuZHMnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2VuYWJsZVRva2VuJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdkZWZpLWFwcHJvdmUnOlxuICAgICAgICBjYXNlICdkZWZpLWRlcG9zaXQnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHZhdWx0SWQ6IHBhcmFtcy5kZWZpUGFyYW1zLnZhdWx0SWQsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy5kZWZpUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIC4uLihwYXJhbXMuZGVmaVBhcmFtcy5vcGVyYXRpb25JZCAmJiB7IG9wZXJhdGlvbklkOiBwYXJhbXMuZGVmaVBhcmFtcy5vcGVyYXRpb25JZCB9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2RlZmktd2l0aGRyYXcnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHZhdWx0SWQ6IHBhcmFtcy5kZWZpUGFyYW1zLnZhdWx0SWQsXG4gICAgICAgICAgICAvLyBEZWZpV2l0aGRyYXdJbnRlbnQgdXNlcyBzaGFyZVRva2VuQW1vdW50ICh2YXVsdCBzaGFyZXMsIGJhc2UgdW5pdHMpXG4gICAgICAgICAgICBzaGFyZVRva2VuQW1vdW50OiBwYXJhbXMuZGVmaVBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd3cmFwLW5hdGl2ZSc6XG4gICAgICAgIGNhc2UgJ3Vud3JhcC1uYXRpdmUnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICAvLyBXcmFwTmF0aXZlSW50ZW50IC8gVW53cmFwTmF0aXZlSW50ZW50IGNhcnJ5IGEgcGxhaW4gYGFtb3VudGAgKGJhc2UgdW5pdHNcbiAgICAgICAgICAvLyBvZiB0aGUgbmF0aXZlIGNvaW4gd2hlbiB3cmFwcGluZywgb2YgdGhlIHdyYXBwZWQgdG9rZW4gd2hlbiB1bndyYXBwaW5nKSxcbiAgICAgICAgICAvLyBub3QgdGhlIGBzaGFyZVRva2VuQW1vdW50YCB0aGF0IGRlZmktd2l0aGRyYXcgdXNlcyBmb3IgdmF1bHQgc2hhcmVzLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdmF1bHRJZDogcGFyYW1zLmRlZmlQYXJhbXMudmF1bHRJZCxcbiAgICAgICAgICAgIGFtb3VudDogcGFyYW1zLmRlZmlQYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnd3JhcEFwcHJvdmUnOlxuICAgICAgICBjYXNlICd3cmFwJzoge1xuICAgICAgICAgIGFzc2VydChwYXJhbXMud3JhcFBhcmFtcywgYCd3cmFwUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy53cmFwUGFyYW1zLnRva2VuTmFtZSA9PT0gJ3N0cmluZycgJiYgcGFyYW1zLndyYXBQYXJhbXMudG9rZW5OYW1lLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBgJ3dyYXBQYXJhbXMudG9rZW5OYW1lJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCA9PT0gJ3N0cmluZycgJiYgL15bMS05XVxcZCokLy50ZXN0KHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCksXG4gICAgICAgICAgICBgJ3dyYXBQYXJhbXMuYW1vdW50JyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzdHJpbmcgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdG9rZW5OYW1lOiBwYXJhbXMud3JhcFBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBpbnRlbnQgdHlwZSAke3BhcmFtcy5pbnRlbnRUeXBlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmFzZUNvaW4uc2V0Q29pblNwZWNpZmljRmllbGRzSW5JbnRlbnQoYmFzZUludGVudCwgcGFyYW1zKTtcblxuICAgIGlmIChwYXJhbXMuZmVlT3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICBtZW1vOiBwYXJhbXMubWVtbz8udmFsdWUsXG4gICAgICAgIHRva2VuOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgIHRva2VuOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgZW5hYmxlVG9rZW5zOiBwYXJhbXMuZW5hYmxlVG9rZW5zLFxuICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0VG9rZW5OYW1lKGJhc2VDb2luOiBJQmFzZUNvaW4sIHRva2VuRGF0YTogVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRva2VuRGF0YS50b2tlbk5hbWUpIHtcbiAgICAgIHJldHVybiB0b2tlbkRhdGEudG9rZW5OYW1lO1xuICAgIH1cbiAgICBjb25zdCBuZXR3b3JrUHJlZml4ID0gYmFzZUNvaW4uZ2V0Q29uZmlnKCkubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUID8gJ3QnIDogJyc7XG4gICAgY29uc3QgdG9rZW5TdGF0aWNzS2V5ID0gYCR7bmV0d29ya1ByZWZpeH0ke2Jhc2VDb2luLmdldEZhbWlseSgpfToke3Rva2VuRGF0YS50b2tlbkNvbnRyYWN0QWRkcmVzc31gO1xuICAgIGlmIChjb2lucy5oYXModG9rZW5TdGF0aWNzS2V5KSkge1xuICAgICAgY29uc3QgdG9rZW5TdGF0aWNzID0gY29pbnMuZ2V0KHRva2VuU3RhdGljc0tleSk7XG4gICAgICB0b2tlbkRhdGEudG9rZW5OYW1lID0gdG9rZW5TdGF0aWNzLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbkRhdGEudG9rZW5OYW1lO1xuICB9XG59XG4iXX0=
|
|
@@ -368,7 +368,7 @@ export interface PrebuildTransactionWithIntentOptions extends IntentOptionsBase
|
|
|
368
368
|
feeToken?: string;
|
|
369
369
|
/** Canton-specific params for the cantonCommand intent. */
|
|
370
370
|
cantonCommandParams?: CantonCommandParams;
|
|
371
|
-
/** DeFi vault intent fields for defi-
|
|
371
|
+
/** DeFi vault intent fields for defi-* and wrap-native / unwrap-native intents. */
|
|
372
372
|
defiParams?: DefiIntentParams;
|
|
373
373
|
/** ERC-7984 wrap / wrapApprove fields flattened onto the WP intent. */
|
|
374
374
|
wrapParams?: WrapIntentParams;
|