@bitgo-beta/sdk-coin-sol 2.2.3-alpha.6 → 2.2.3-alpha.7
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/lib/constants.d.ts +12 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +16 -2
- package/dist/src/lib/iface.d.ts +2 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/lib/instructionParamsFactory.js +67 -12
- package/dist/src/lib/solInstructionFactory.js +35 -6
- package/dist/src/lib/stakingDeactivateBuilder.d.ts +22 -0
- package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingDeactivateBuilder.js +43 -1
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +15 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +5 -2
- package/dist/src/sol.d.ts.map +1 -1
- package/dist/src/sol.js +3 -13
- package/package.json +5 -5
|
@@ -13,7 +13,10 @@ export declare enum ValidInstructionTypesEnum {
|
|
|
13
13
|
Transfer = "Transfer",
|
|
14
14
|
TokenTransfer = "TokenTransfer",
|
|
15
15
|
Memo = "Memo",
|
|
16
|
-
InitializeAssociatedTokenAccount = "InitializeAssociatedTokenAccount"
|
|
16
|
+
InitializeAssociatedTokenAccount = "InitializeAssociatedTokenAccount",
|
|
17
|
+
Allocate = "Allocate",
|
|
18
|
+
Assign = "Assign",
|
|
19
|
+
Split = "Split"
|
|
17
20
|
}
|
|
18
21
|
export declare enum InstructionBuilderTypes {
|
|
19
22
|
CreateNonceAccount = "CreateNonceAccount",
|
|
@@ -45,6 +48,14 @@ export declare const stakingDeactivateInstructionsIndexes: {
|
|
|
45
48
|
readonly Deactivate: 0;
|
|
46
49
|
readonly Memo: 1;
|
|
47
50
|
};
|
|
51
|
+
/** Const to check the order of the Partial Staking Deactivate instructions when decoded */
|
|
52
|
+
export declare const stakingPartialDeactivateInstructionsIndexes: {
|
|
53
|
+
readonly Allocate: 0;
|
|
54
|
+
readonly Assign: 1;
|
|
55
|
+
readonly Split: 2;
|
|
56
|
+
readonly Deactivate: 3;
|
|
57
|
+
readonly Memo: 4;
|
|
58
|
+
};
|
|
48
59
|
/** Const to check the order of the Staking Withdraw instructions when decode */
|
|
49
60
|
export declare const stakingWithdrawInstructionsIndexes: {
|
|
50
61
|
readonly Withdraw: 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,eAAe,gDAAgD,CAAC;AAE7E,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,oBAAY,yBAAyB;IACnC,mBAAmB,wBAAwB;IAC3C,MAAM,WAAW;IACjB,sBAAsB,2BAA2B;IACjD,iBAAiB,eAAe;IAChC,eAAe,aAAa;IAC5B,iBAAiB,eAAe;IAChC,eAAe,aAAa;IAC5B,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,gCAAgC,qCAAqC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,eAAe,gDAAgD,CAAC;AAE7E,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,oBAAY,yBAAyB;IACnC,mBAAmB,wBAAwB;IAC3C,MAAM,WAAW;IACjB,sBAAsB,2BAA2B;IACjD,iBAAiB,eAAe;IAChC,eAAe,aAAa;IAC5B,iBAAiB,eAAe;IAChC,eAAe,aAAa;IAC5B,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,gCAAgC,qCAAqC;IACrE,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAGD,oBAAY,uBAAuB;IACjC,kBAAkB,uBAAuB;IACzC,eAAe,aAAa;IAC5B,iBAAiB,eAAe;IAChC,eAAe,aAAa;IAC5B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,4BAA4B,iCAAiC;IAC7D,aAAa,kBAAkB;CAChC;AAED,eAAO,MAAM,8BAA8B,EAAE,qBAAqB,EAejE,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,kCAAkC;;;;;CAKrC,CAAC;AAEX,kFAAkF;AAClF,eAAO,MAAM,oCAAoC;;;CAGvC,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,2CAA2C;;;;;;CAM9C,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,kCAAkC;;;CAGrC,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ataInitInstructionIndexes = exports.stakingWithdrawInstructionsIndexes = exports.stakingDeactivateInstructionsIndexes = exports.stakingActivateInstructionsIndexes = exports.walletInitInstructionIndexes = exports.VALID_SYSTEM_INSTRUCTION_TYPES = exports.InstructionBuilderTypes = exports.ValidInstructionTypesEnum = exports.MAX_MEMO_LENGTH = exports.SEED_LENGTH = exports.MEMO_PROGRAM_PK = void 0;
|
|
3
|
+
exports.ataInitInstructionIndexes = exports.stakingWithdrawInstructionsIndexes = exports.stakingPartialDeactivateInstructionsIndexes = exports.stakingDeactivateInstructionsIndexes = exports.stakingActivateInstructionsIndexes = exports.walletInitInstructionIndexes = exports.VALID_SYSTEM_INSTRUCTION_TYPES = exports.InstructionBuilderTypes = exports.ValidInstructionTypesEnum = exports.MAX_MEMO_LENGTH = exports.SEED_LENGTH = exports.MEMO_PROGRAM_PK = void 0;
|
|
4
4
|
exports.MEMO_PROGRAM_PK = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
5
5
|
exports.SEED_LENGTH = 32;
|
|
6
6
|
exports.MAX_MEMO_LENGTH = 100;
|
|
@@ -18,6 +18,9 @@ var ValidInstructionTypesEnum;
|
|
|
18
18
|
ValidInstructionTypesEnum["TokenTransfer"] = "TokenTransfer";
|
|
19
19
|
ValidInstructionTypesEnum["Memo"] = "Memo";
|
|
20
20
|
ValidInstructionTypesEnum["InitializeAssociatedTokenAccount"] = "InitializeAssociatedTokenAccount";
|
|
21
|
+
ValidInstructionTypesEnum["Allocate"] = "Allocate";
|
|
22
|
+
ValidInstructionTypesEnum["Assign"] = "Assign";
|
|
23
|
+
ValidInstructionTypesEnum["Split"] = "Split";
|
|
21
24
|
})(ValidInstructionTypesEnum = exports.ValidInstructionTypesEnum || (exports.ValidInstructionTypesEnum = {}));
|
|
22
25
|
// Internal instructions types
|
|
23
26
|
var InstructionBuilderTypes;
|
|
@@ -44,6 +47,9 @@ exports.VALID_SYSTEM_INSTRUCTION_TYPES = [
|
|
|
44
47
|
ValidInstructionTypesEnum.Memo,
|
|
45
48
|
ValidInstructionTypesEnum.InitializeAssociatedTokenAccount,
|
|
46
49
|
ValidInstructionTypesEnum.TokenTransfer,
|
|
50
|
+
ValidInstructionTypesEnum.Allocate,
|
|
51
|
+
ValidInstructionTypesEnum.Assign,
|
|
52
|
+
ValidInstructionTypesEnum.Split,
|
|
47
53
|
];
|
|
48
54
|
/** Const to check the order of the Wallet Init instructions when decode */
|
|
49
55
|
exports.walletInitInstructionIndexes = {
|
|
@@ -63,6 +69,14 @@ exports.stakingDeactivateInstructionsIndexes = {
|
|
|
63
69
|
Deactivate: 0,
|
|
64
70
|
Memo: 1,
|
|
65
71
|
};
|
|
72
|
+
/** Const to check the order of the Partial Staking Deactivate instructions when decoded */
|
|
73
|
+
exports.stakingPartialDeactivateInstructionsIndexes = {
|
|
74
|
+
Allocate: 0,
|
|
75
|
+
Assign: 1,
|
|
76
|
+
Split: 2,
|
|
77
|
+
Deactivate: 3,
|
|
78
|
+
Memo: 4,
|
|
79
|
+
};
|
|
66
80
|
/** Const to check the order of the Staking Withdraw instructions when decode */
|
|
67
81
|
exports.stakingWithdrawInstructionsIndexes = {
|
|
68
82
|
Withdraw: 0,
|
|
@@ -73,4 +87,4 @@ exports.ataInitInstructionIndexes = {
|
|
|
73
87
|
InitializeAssociatedTokenAccount: 0,
|
|
74
88
|
Memo: 1,
|
|
75
89
|
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxlQUFlLEdBQUcsNkNBQTZDLENBQUM7QUFFaEUsUUFBQSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRWpCLFFBQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUVuQyxtREFBbUQ7QUFDbkQsSUFBWSx5QkFlWDtBQWZELFdBQVkseUJBQXlCO0lBQ25DLHdFQUEyQyxDQUFBO0lBQzNDLDhDQUFpQixDQUFBO0lBQ2pCLDhFQUFpRCxDQUFBO0lBQ2pELDZEQUFnQyxDQUFBO0lBQ2hDLHlEQUE0QixDQUFBO0lBQzVCLDZEQUFnQyxDQUFBO0lBQ2hDLHlEQUE0QixDQUFBO0lBQzVCLGtEQUFxQixDQUFBO0lBQ3JCLDREQUErQixDQUFBO0lBQy9CLDBDQUFhLENBQUE7SUFDYixrR0FBcUUsQ0FBQTtJQUNyRSxrREFBcUIsQ0FBQTtJQUNyQiw4Q0FBaUIsQ0FBQTtJQUNqQiw0Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFmVyx5QkFBeUIsR0FBekIsaUNBQXlCLEtBQXpCLGlDQUF5QixRQWVwQztBQUVELDhCQUE4QjtBQUM5QixJQUFZLHVCQVVYO0FBVkQsV0FBWSx1QkFBdUI7SUFDakMsb0VBQXlDLENBQUE7SUFDekMsdURBQTRCLENBQUE7SUFDNUIsMkRBQWdDLENBQUE7SUFDaEMsdURBQTRCLENBQUE7SUFDNUIsZ0RBQXFCLENBQUE7SUFDckIsd0NBQWEsQ0FBQTtJQUNiLHdEQUE2QixDQUFBO0lBQzdCLHdGQUE2RCxDQUFBO0lBQzdELDBEQUErQixDQUFBO0FBQ2pDLENBQUMsRUFWVyx1QkFBdUIsR0FBdkIsK0JBQXVCLEtBQXZCLCtCQUF1QixRQVVsQztBQUVZLFFBQUEsOEJBQThCLEdBQTRCO0lBQ3JFLHlCQUF5QixDQUFDLG1CQUFtQjtJQUM3Qyx5QkFBeUIsQ0FBQyxNQUFNO0lBQ2hDLHlCQUF5QixDQUFDLGlCQUFpQjtJQUMzQyx5QkFBeUIsQ0FBQyxlQUFlO0lBQ3pDLHlCQUF5QixDQUFDLGlCQUFpQjtJQUMzQyx5QkFBeUIsQ0FBQyxlQUFlO0lBQ3pDLHlCQUF5QixDQUFDLFFBQVE7SUFDbEMseUJBQXlCLENBQUMsc0JBQXNCO0lBQ2hELHlCQUF5QixDQUFDLElBQUk7SUFDOUIseUJBQXlCLENBQUMsZ0NBQWdDO0lBQzFELHlCQUF5QixDQUFDLGFBQWE7SUFDdkMseUJBQXlCLENBQUMsUUFBUTtJQUNsQyx5QkFBeUIsQ0FBQyxNQUFNO0lBQ2hDLHlCQUF5QixDQUFDLEtBQUs7Q0FDaEMsQ0FBQztBQUVGLDJFQUEyRTtBQUM5RCxRQUFBLDRCQUE0QixHQUFHO0lBQzFDLE1BQU0sRUFBRSxDQUFDO0lBQ1Qsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQztDQUNDLENBQUM7QUFFWCxnRkFBZ0Y7QUFDbkUsUUFBQSxrQ0FBa0MsR0FBRztJQUNoRCxNQUFNLEVBQUUsQ0FBQztJQUNULFVBQVUsRUFBRSxDQUFDO0lBQ2IsUUFBUSxFQUFFLENBQUM7SUFDWCxJQUFJLEVBQUUsQ0FBQztDQUNDLENBQUM7QUFFWCxrRkFBa0Y7QUFDckUsUUFBQSxvQ0FBb0MsR0FBRztJQUNsRCxVQUFVLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxDQUFDO0NBQ0MsQ0FBQztBQUVYLDJGQUEyRjtBQUM5RSxRQUFBLDJDQUEyQyxHQUFHO0lBQ3pELFFBQVEsRUFBRSxDQUFDO0lBQ1gsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsQ0FBQztJQUNSLFVBQVUsRUFBRSxDQUFDO0lBQ2IsSUFBSSxFQUFFLENBQUM7Q0FDQyxDQUFDO0FBRVgsZ0ZBQWdGO0FBQ25FLFFBQUEsa0NBQWtDLEdBQUc7SUFDaEQsUUFBUSxFQUFFLENBQUM7SUFDWCxJQUFJLEVBQUUsQ0FBQztDQUNDLENBQUM7QUFFWCx3RUFBd0U7QUFDM0QsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ25DLElBQUksRUFBRSxDQUFDO0NBQ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlcyB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY29uc3QgTUVNT19QUk9HUkFNX1BLID0gJ01lbW9TcTRncUFCQVhLYjk2cW5IOFR5c05jV3hNeVdDcVhnRExHbWZjSHInO1xuXG5leHBvcnQgY29uc3QgU0VFRF9MRU5HVEggPSAzMjtcblxuZXhwb3J0IGNvbnN0IE1BWF9NRU1PX0xFTkdUSCA9IDEwMDtcblxuLy8gU2RrIGluc3RydWN0aW9ucywgbWFpbmx5IHRvIGNoZWNrIGRlY29kZWQgdHlwZXMuXG5leHBvcnQgZW51bSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtIHtcbiAgQWR2YW5jZU5vbmNlQWNjb3VudCA9ICdBZHZhbmNlTm9uY2VBY2NvdW50JyxcbiAgQ3JlYXRlID0gJ0NyZWF0ZScsXG4gIEluaXRpYWxpemVOb25jZUFjY291bnQgPSAnSW5pdGlhbGl6ZU5vbmNlQWNjb3VudCcsXG4gIFN0YWtpbmdJbml0aWFsaXplID0gJ0luaXRpYWxpemUnLFxuICBTdGFraW5nRGVsZWdhdGUgPSAnRGVsZWdhdGUnLFxuICBTdGFraW5nRGVhY3RpdmF0ZSA9ICdEZWFjdGl2YXRlJyxcbiAgU3Rha2luZ1dpdGhkcmF3ID0gJ1dpdGhkcmF3JyxcbiAgVHJhbnNmZXIgPSAnVHJhbnNmZXInLFxuICBUb2tlblRyYW5zZmVyID0gJ1Rva2VuVHJhbnNmZXInLFxuICBNZW1vID0gJ01lbW8nLFxuICBJbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudCA9ICdJbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudCcsXG4gIEFsbG9jYXRlID0gJ0FsbG9jYXRlJyxcbiAgQXNzaWduID0gJ0Fzc2lnbicsXG4gIFNwbGl0ID0gJ1NwbGl0Jyxcbn1cblxuLy8gSW50ZXJuYWwgaW5zdHJ1Y3Rpb25zIHR5cGVzXG5leHBvcnQgZW51bSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB7XG4gIENyZWF0ZU5vbmNlQWNjb3VudCA9ICdDcmVhdGVOb25jZUFjY291bnQnLFxuICBTdGFraW5nQWN0aXZhdGUgPSAnQWN0aXZhdGUnLFxuICBTdGFraW5nRGVhY3RpdmF0ZSA9ICdEZWFjdGl2YXRlJyxcbiAgU3Rha2luZ1dpdGhkcmF3ID0gJ1dpdGhkcmF3JyxcbiAgVHJhbnNmZXIgPSAnVHJhbnNmZXInLFxuICBNZW1vID0gJ01lbW8nLFxuICBOb25jZUFkdmFuY2UgPSAnTm9uY2VBZHZhbmNlJyxcbiAgQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCA9ICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50JyxcbiAgVG9rZW5UcmFuc2ZlciA9ICdUb2tlblRyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGNvbnN0IFZBTElEX1NZU1RFTV9JTlNUUlVDVElPTl9UWVBFUzogVmFsaWRJbnN0cnVjdGlvblR5cGVzW10gPSBbXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQWR2YW5jZU5vbmNlQWNjb3VudCxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5DcmVhdGUsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3Rha2luZ0luaXRpYWxpemUsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3Rha2luZ0RlbGVnYXRlLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdEZWFjdGl2YXRlLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdXaXRoZHJhdyxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5UcmFuc2ZlcixcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Jbml0aWFsaXplTm9uY2VBY2NvdW50LFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLk1lbW8sXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uVG9rZW5UcmFuc2ZlcixcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BbGxvY2F0ZSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Bc3NpZ24sXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3BsaXQsXG5dO1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBXYWxsZXQgSW5pdCBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzID0ge1xuICBDcmVhdGU6IDAsXG4gIEluaXRpYWxpemVOb25jZUFjY291bnQ6IDEsXG4gIE1lbW86IDIsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBTdGFraW5nIEFjdGl2YXRlIGluc3RydWN0aW9ucyB3aGVuIGRlY29kZSAqL1xuZXhwb3J0IGNvbnN0IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIENyZWF0ZTogMCxcbiAgSW5pdGlhbGl6ZTogMSxcbiAgRGVsZWdhdGU6IDIsXG4gIE1lbW86IDMsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBTdGFraW5nIERlYWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3Qgc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBEZWFjdGl2YXRlOiAwLFxuICBNZW1vOiAxLFxufSBhcyBjb25zdDtcblxuLyoqIENvbnN0IHRvIGNoZWNrIHRoZSBvcmRlciBvZiB0aGUgUGFydGlhbCBTdGFraW5nIERlYWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlZCAqL1xuZXhwb3J0IGNvbnN0IHN0YWtpbmdQYXJ0aWFsRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIEFsbG9jYXRlOiAwLFxuICBBc3NpZ246IDEsXG4gIFNwbGl0OiAyLFxuICBEZWFjdGl2YXRlOiAzLFxuICBNZW1vOiA0LFxufSBhcyBjb25zdDtcblxuLyoqIENvbnN0IHRvIGNoZWNrIHRoZSBvcmRlciBvZiB0aGUgU3Rha2luZyBXaXRoZHJhdyBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBXaXRoZHJhdzogMCxcbiAgTWVtbzogMSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIEFUQSBpbml0IGluc3RydWN0aW9ucyB3aGVuIGRlY29kZSAqL1xuZXhwb3J0IGNvbnN0IGF0YUluaXRJbnN0cnVjdGlvbkluZGV4ZXMgPSB7XG4gIEluaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OiAwLFxuICBNZW1vOiAxLFxufSBhcyBjb25zdDtcbiJdfQ==
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAG5F,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,CAAC,EAAE,oBAAoB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IAEjB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;CACvC;AAED,oBAAY,iBAAiB,GACzB,KAAK,GACL,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,uBAAuB,CAAC,YAAY,CAAC;IAC3C,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,uBAAuB,CAAC,kBAAkB,CAAC;IACjD,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC;IACvC,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,uBAAuB,CAAC,aAAa,CAAC;IAC5C,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC;IAC9C,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,uBAAuB,CAAC,iBAAiB,CAAC;IAChD,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/iface.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbG9ja2hhc2gsIFN0YWtlSW5zdHJ1Y3Rpb25UeXBlLCBTeXN0ZW1JbnN0cnVjdGlvblR5cGUsIFRyYW5zYWN0aW9uU2lnbmF0dXJlIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuLy8gVE9ETyhTVExYLTk4OTApOiBBZGQgdGhlIGludGVyZmFjZXMgZm9yIHZhbGlkaXR5V2luZG93IGFuZCBTZXF1ZW5jZUlkXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYUtleXMge1xuICBwcnY/OiBVaW50OEFycmF5IHwgc3RyaW5nO1xuICBwdWI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhYmxlTm9uY2VQYXJhbXMge1xuICB3YWxsZXROb25jZUFkZHJlc3M6IHN0cmluZztcbiAgYXV0aFdhbGxldEFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZD86IFRyYW5zYWN0aW9uU2lnbmF0dXJlO1xuICBmZWVQYXllcj86IHN0cmluZztcbiAgbGFtcG9ydHNQZXJTaWduYXR1cmU/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbG9ja2hhc2gsIFN0YWtlSW5zdHJ1Y3Rpb25UeXBlLCBTeXN0ZW1JbnN0cnVjdGlvblR5cGUsIFRyYW5zYWN0aW9uU2lnbmF0dXJlIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuLy8gVE9ETyhTVExYLTk4OTApOiBBZGQgdGhlIGludGVyZmFjZXMgZm9yIHZhbGlkaXR5V2luZG93IGFuZCBTZXF1ZW5jZUlkXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYUtleXMge1xuICBwcnY/OiBVaW50OEFycmF5IHwgc3RyaW5nO1xuICBwdWI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhYmxlTm9uY2VQYXJhbXMge1xuICB3YWxsZXROb25jZUFkZHJlc3M6IHN0cmluZztcbiAgYXV0aFdhbGxldEFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZD86IFRyYW5zYWN0aW9uU2lnbmF0dXJlO1xuICBmZWVQYXllcj86IHN0cmluZztcbiAgbGFtcG9ydHNQZXJTaWduYXR1cmU/OiBudW1iZXI7XG4gIG51bVNpZ25hdHVyZXM6IG51bWJlcjtcbiAgbm9uY2U6IEJsb2NraGFzaDtcbiAgLy8gb25seSBwb3B1bGF0ZWQgd2hlbiBub25jZSBpcyBmcm9tIGEgZHVyYWJsZSBub25jZSBhY2NvdW50XG4gIGR1cmFibGVOb25jZT86IER1cmFibGVOb25jZVBhcmFtcztcbiAgaW5zdHJ1Y3Rpb25zRGF0YTogSW5zdHJ1Y3Rpb25QYXJhbXNbXTtcbn1cblxuZXhwb3J0IHR5cGUgSW5zdHJ1Y3Rpb25QYXJhbXMgPVxuICB8IE5vbmNlXG4gIHwgTWVtb1xuICB8IFdhbGxldEluaXRcbiAgfCBUcmFuc2ZlclxuICB8IFN0YWtpbmdBY3RpdmF0ZVxuICB8IFN0YWtpbmdEZWFjdGl2YXRlXG4gIHwgU3Rha2luZ1dpdGhkcmF3XG4gIHwgQXRhSW5pdFxuICB8IFRva2VuVHJhbnNmZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVtbyB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW87XG4gIHBhcmFtczogeyBtZW1vOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb25jZSB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZTtcbiAgcGFyYW1zOiBEdXJhYmxlTm9uY2VQYXJhbXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0SW5pdCB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDtcbiAgcGFyYW1zOiB7IGZyb21BZGRyZXNzOiBzdHJpbmc7IG5vbmNlQWRkcmVzczogc3RyaW5nOyBhdXRoQWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyIHtcbiAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXI7XG4gIHBhcmFtczoge1xuICAgIGZyb21BZGRyZXNzOiBzdHJpbmc7XG4gICAgdG9BZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5UcmFuc2ZlciB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRva2VuVHJhbnNmZXI7XG4gIHBhcmFtczoge1xuICAgIGZyb21BZGRyZXNzOiBzdHJpbmc7XG4gICAgdG9BZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmc7XG4gICAgdG9rZW5OYW1lOiBzdHJpbmc7XG4gICAgc291cmNlQWRkcmVzczogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdBY3RpdmF0ZSB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZTtcbiAgcGFyYW1zOiB7IGZyb21BZGRyZXNzOiBzdHJpbmc7IHN0YWtpbmdBZGRyZXNzOiBzdHJpbmc7IGFtb3VudDogc3RyaW5nOyB2YWxpZGF0b3I6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdEZWFjdGl2YXRlIHtcbiAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlYWN0aXZhdGU7XG4gIHBhcmFtczogeyBmcm9tQWRkcmVzczogc3RyaW5nOyBzdGFraW5nQWRkcmVzczogc3RyaW5nOyBhbW91bnQ/OiBzdHJpbmc7IHVuc3Rha2luZ0FkZHJlc3M/OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFraW5nV2l0aGRyYXcge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nV2l0aGRyYXc7XG4gIHBhcmFtczogeyBmcm9tQWRkcmVzczogc3RyaW5nOyBzdGFraW5nQWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0YUluaXQge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50O1xuICBwYXJhbXM6IHsgbWludEFkZHJlc3M6IHN0cmluZzsgYXRhQWRkcmVzczogc3RyaW5nOyBvd25lckFkZHJlc3M6IHN0cmluZzsgcGF5ZXJBZGRyZXNzOiBzdHJpbmc7IHRva2VuTmFtZTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlcyA9XG4gIHwgU3lzdGVtSW5zdHJ1Y3Rpb25UeXBlXG4gIHwgU3Rha2VJbnN0cnVjdGlvblR5cGVcbiAgfCAnTWVtbydcbiAgfCAnSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQnXG4gIHwgJ1Rva2VuVHJhbnNmZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgYmxvY2toYXNoOiBCbG9ja2hhc2g7XG4gIC8vIG9ubHkgcG9wdWxhdGVkIGlmIGJsb2NraGFzaCBpcyBmcm9tIGEgbm9uY2UgYWNjb3VudFxuICBkdXJhYmxlTm9uY2U/OiBEdXJhYmxlTm9uY2VQYXJhbXM7XG4gIG1lbW8/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/instructionParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/instructionParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAEL,iBAAiB,EASlB,MAAM,SAAS,CAAC;AAKjB;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,sBAAsB,EAAE,GACrC,iBAAiB,EAAE,CAiBrB"}
|
|
@@ -188,14 +188,23 @@ function validateStakingInstructions(stakingInstructions) {
|
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
/**
|
|
191
|
-
* Parses Solana instructions to create deactivate tx instructions params
|
|
192
|
-
*
|
|
191
|
+
* Parses Solana instructions to create deactivate stake tx instructions params. Supports full stake
|
|
192
|
+
* account deactivation and partial stake account deactivation.
|
|
193
|
+
*
|
|
194
|
+
* When partially deactivating a stake account this method expects the following instructions: Allocate,
|
|
195
|
+
* to allocate a new staking account, Assign, to assign the newly created staking account to the
|
|
196
|
+
* Stake Program, Split, to split the current stake account, and StakingDeactivate to deactivate the
|
|
197
|
+
* newly created stake account.
|
|
198
|
+
*
|
|
199
|
+
* Supports Nonce, StakingDeactivate, Memo, Allocate, Assign, and Split Solana instructions.
|
|
193
200
|
*
|
|
194
201
|
* @param {TransactionInstruction[]} instructions - an array of supported Solana instructions
|
|
195
202
|
* @returns {InstructionParams[]} An array containing instruction params for staking deactivate tx
|
|
196
203
|
*/
|
|
197
204
|
function parseStakingDeactivateInstructions(instructions) {
|
|
205
|
+
var _a, _b, _c, _d, _e;
|
|
198
206
|
const instructionData = [];
|
|
207
|
+
const unstakingInstructions = {};
|
|
199
208
|
for (const instruction of instructions) {
|
|
200
209
|
const type = utils_1.getInstructionType(instruction);
|
|
201
210
|
switch (type) {
|
|
@@ -217,21 +226,67 @@ function parseStakingDeactivateInstructions(instructions) {
|
|
|
217
226
|
};
|
|
218
227
|
instructionData.push(memo);
|
|
219
228
|
break;
|
|
229
|
+
case constants_1.ValidInstructionTypesEnum.Allocate:
|
|
230
|
+
unstakingInstructions.allocate = web3_js_1.SystemInstruction.decodeAllocate(instruction);
|
|
231
|
+
break;
|
|
232
|
+
case constants_1.ValidInstructionTypesEnum.Assign:
|
|
233
|
+
unstakingInstructions.assign = web3_js_1.SystemInstruction.decodeAssign(instruction);
|
|
234
|
+
break;
|
|
235
|
+
case constants_1.ValidInstructionTypesEnum.Split:
|
|
236
|
+
unstakingInstructions.split = web3_js_1.StakeInstruction.decodeSplit(instruction);
|
|
237
|
+
break;
|
|
220
238
|
case constants_1.ValidInstructionTypesEnum.StakingDeactivate:
|
|
221
|
-
|
|
222
|
-
const stakingDeactivate = {
|
|
223
|
-
type: constants_1.InstructionBuilderTypes.StakingDeactivate,
|
|
224
|
-
params: {
|
|
225
|
-
fromAddress: deactivateInstruction.authorizedPubkey.toString(),
|
|
226
|
-
stakingAddress: deactivateInstruction.stakePubkey.toString(),
|
|
227
|
-
},
|
|
228
|
-
};
|
|
229
|
-
instructionData.push(stakingDeactivate);
|
|
239
|
+
unstakingInstructions.deactivate = web3_js_1.StakeInstruction.decodeDeactivate(instruction);
|
|
230
240
|
break;
|
|
231
241
|
}
|
|
232
242
|
}
|
|
243
|
+
validateUnstakingInstructions(unstakingInstructions);
|
|
244
|
+
const stakingDeactivate = {
|
|
245
|
+
type: constants_1.InstructionBuilderTypes.StakingDeactivate,
|
|
246
|
+
params: {
|
|
247
|
+
fromAddress: ((_a = unstakingInstructions.deactivate) === null || _a === void 0 ? void 0 : _a.authorizedPubkey.toString()) || '',
|
|
248
|
+
stakingAddress: ((_b = unstakingInstructions.split) === null || _b === void 0 ? void 0 : _b.stakePubkey.toString()) ||
|
|
249
|
+
((_c = unstakingInstructions.deactivate) === null || _c === void 0 ? void 0 : _c.stakePubkey.toString()) ||
|
|
250
|
+
'',
|
|
251
|
+
amount: (_d = unstakingInstructions.split) === null || _d === void 0 ? void 0 : _d.lamports.toString(),
|
|
252
|
+
unstakingAddress: (_e = unstakingInstructions.split) === null || _e === void 0 ? void 0 : _e.splitStakePubkey.toString(),
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
instructionData.push(stakingDeactivate);
|
|
233
256
|
return instructionData;
|
|
234
257
|
}
|
|
258
|
+
function validateUnstakingInstructions(unstakingInstructions) {
|
|
259
|
+
if (!unstakingInstructions.deactivate) {
|
|
260
|
+
throw new sdk_core_1.NotSupported('Invalid deactivate stake transaction, missing deactivate stake account instruction');
|
|
261
|
+
}
|
|
262
|
+
else if (unstakingInstructions.allocate || unstakingInstructions.assign || unstakingInstructions.split) {
|
|
263
|
+
if (!unstakingInstructions.allocate) {
|
|
264
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, missing allocate unstake account instruction');
|
|
265
|
+
}
|
|
266
|
+
else if (!unstakingInstructions.assign) {
|
|
267
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, missing assign unstake account instruction');
|
|
268
|
+
}
|
|
269
|
+
else if (!unstakingInstructions.split) {
|
|
270
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, missing split stake account instruction');
|
|
271
|
+
}
|
|
272
|
+
else if (unstakingInstructions.allocate.accountPubkey.toString() !== unstakingInstructions.assign.accountPubkey.toString()) {
|
|
273
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, must allocate and assign the same public key');
|
|
274
|
+
}
|
|
275
|
+
else if (unstakingInstructions.allocate.space !== web3_js_1.StakeProgram.space) {
|
|
276
|
+
throw new sdk_core_1.NotSupported(`Invalid partial deactivate stake transaction, unstaking account must allocate ${web3_js_1.StakeProgram.space} bytes`);
|
|
277
|
+
}
|
|
278
|
+
else if (unstakingInstructions.assign.programId.toString() !== web3_js_1.StakeProgram.programId.toString()) {
|
|
279
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, the unstake account must be assigned to the Stake Program');
|
|
280
|
+
}
|
|
281
|
+
else if (unstakingInstructions.allocate.accountPubkey.toString() !==
|
|
282
|
+
unstakingInstructions.split.splitStakePubkey.toString()) {
|
|
283
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, must allocate the unstaking account');
|
|
284
|
+
}
|
|
285
|
+
else if (unstakingInstructions.split.stakePubkey.toString() === unstakingInstructions.split.splitStakePubkey.toString()) {
|
|
286
|
+
throw new sdk_core_1.NotSupported('Invalid partial deactivate stake transaction, the unstaking account must be different from the Stake Account');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
235
290
|
/**
|
|
236
291
|
* Parses Solana instructions to create staking withdraw tx instructions params
|
|
237
292
|
* Only supports Nonce, StakingWithdraw, and Memo Solana instructions
|
|
@@ -360,4 +415,4 @@ function findTokenName(mintAddress) {
|
|
|
360
415
|
assert_1.default(token);
|
|
361
416
|
return token;
|
|
362
417
|
}
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBT3lCO0FBQ3pCLGlEQUFxRTtBQUVyRSxtREFBcUU7QUFDckUsMkNBQStHO0FBYS9HLG1DQUE2QztBQUM3QyxvREFBNEI7QUFDNUIsaURBQXFEO0FBRXJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHdCQUF3QixDQUN0QyxJQUFxQixFQUNyQixZQUFzQztJQUV0QyxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssMEJBQWUsQ0FBQyxvQkFBb0I7WUFDdkMsT0FBTywyQkFBMkIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxLQUFLLDBCQUFlLENBQUMsSUFBSTtZQUN2QixPQUFPLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO1lBQ2xDLE9BQU8sZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtZQUNwQyxPQUFPLGtDQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELEtBQUssMEJBQWUsQ0FBQyxlQUFlO1lBQ2xDLE9BQU8sZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsS0FBSywwQkFBZSxDQUFDLG9DQUFvQztZQUN2RCxPQUFPLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hEO1lBQ0UsTUFBTSxJQUFJLHVCQUFZLENBQUMsdURBQXVELEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDMUY7QUFDSCxDQUFDO0FBcEJELDREQW9CQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxZQUFzQztJQUN6RSxNQUFNLGVBQWUsR0FBNkIsRUFBRSxDQUFDO0lBQ3JELE1BQU0saUJBQWlCLEdB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SUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7d0JBQ3hGLFlBQVksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7d0JBQzVGLFlBQVksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7d0JBQzVGLFNBQVM7cUJBQ1Y7aUJBQ0YsQ0FBQztnQkFDRixlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLHVCQUFZLENBQ3BCLHVEQUF1RCxHQUFHLDBCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUMxRixDQUFDO1NBQ0w7S0FDRjtJQUNELElBQUksSUFBSSxFQUFFO1FBQ1IsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxXQUFtQjtJQUN4QyxJQUFJLEtBQXlCLENBQUM7SUFFOUIsZUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUMzQixJQUFJLEtBQUssWUFBWSxpQkFBTyxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQ2xFLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ3JlYXRlQWNjb3VudFBhcmFtcyxcbiAgRGVsZWdhdGVTdGFrZVBhcmFtcyxcbiAgSW5pdGlhbGl6ZVN0YWtlUGFyYW1zLFxuICBTdGFrZUluc3RydWN0aW9uLFxuICBTeXN0ZW1JbnN0cnVjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IGRlY29kZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIE5vdFN1cHBvcnRlZCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLCBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLCB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXRhSW5pdCxcbiAgSW5zdHJ1Y3Rpb25QYXJhbXMsXG4gIFdhbGxldEluaXQsXG4gIFRyYW5zZmVyLFxuICBOb25jZSxcbiAgTWVtbyxcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICBTdGFraW5nRGVhY3RpdmF0ZSxcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICBUb2tlblRyYW5zZmVyLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGdldEluc3RydWN0aW9uVHlwZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgY29pbnMsIFNvbENvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuLyoqXG4gKiBDb25zdHJ1Y3QgaW5zdHJ1Y3Rpb25zIHBhcmFtcyBmcm9tIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHlwZSAtIHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gaW5zdHJ1Y3Rpb25zIC0gc29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoXG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZSxcbiAgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW11cbik6IEluc3RydWN0aW9uUGFyYW1zW10ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgIHJldHVybiBwYXJzZVdhbGxldEluaXRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKTtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgcmV0dXJuIHBhcnNlU2VuZEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgIHJldHVybiBwYXJzZVN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgcmV0dXJuIHBhcnNlU3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKTtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICByZXR1cm4gcGFyc2VTdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKTtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb246XG4gICAgICByZXR1cm4gcGFyc2VBdGFJbml0SW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ0ludmFsaWQgdHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIHR5cGUpO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gV2FsbGV0IGluaXRpYWxpemF0aW9uIHR4IGluc3RydWN0aW9ucyBwYXJhbXNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gaW5zdHJ1Y3Rpb25zIC0gY29udGFpbmluZyBjcmVhdGUgYW5kIGluaXRpYWxpemUgbm9uY2Ugc29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zIGZvciBXYWxsZXQgaW5pdGlhbGl6YXRpb24gdHhcbiAqL1xuZnVuY3Rpb24gcGFyc2VXYWxsZXRJbml0SW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdKTogQXJyYXk8V2FsbGV0SW5pdCB8IE1lbW8+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxXYWxsZXRJbml0IHwgTWVtbz4gPSBbXTtcbiAgY29uc3QgY3JlYXRlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVDcmVhdGVBY2NvdW50KGluc3RydWN0aW9uc1t3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLkNyZWF0ZV0pO1xuICBjb25zdCBub25jZUluaXRJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlSW5pdGlhbGl6ZShcbiAgICBpbnN0cnVjdGlvbnNbd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcy5Jbml0aWFsaXplTm9uY2VBY2NvdW50XVxuICApO1xuXG4gIGNvbnN0IHdhbGxldEluaXQ6IFdhbGxldEluaXQgPSB7XG4gICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50LFxuICAgIHBhcmFtczoge1xuICAgICAgZnJvbUFkZHJlc3M6IGNyZWF0ZUluc3RydWN0aW9uLmZyb21QdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgIG5vbmNlQWRkcmVzczogbm9uY2VJbml0SW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgIGF1dGhBZGRyZXNzOiBub25jZUluaXRJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICBhbW91bnQ6IGNyZWF0ZUluc3RydWN0aW9uLmxhbXBvcnRzLnRvU3RyaW5nKCksXG4gICAgfSxcbiAgfTtcbiAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2god2FsbGV0SW5pdCk7XG5cbiAgY29uc3QgbWVtbyA9IGdldE1lbW8oaW5zdHJ1Y3Rpb25zLCB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzKTtcbiAgaWYgKG1lbW8pIHtcbiAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChtZW1vKTtcbiAgfVxuXG4gIHJldHVybiBpbnN0cnVjdGlvbkRhdGE7XG59XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gU2VuZCB0eCBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKiBPbmx5IHN1cHBvcnRzIE1lbW8sIFRyYW5zZmVyIGFuZCBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gaW5zdHJ1Y3Rpb25zIC0gYW4gYXJyYXkgb2Ygc3VwcG9ydGVkIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqIEByZXR1cm5zIHtJbnN0cnVjdGlvblBhcmFtc1tdfSBBbiBhcnJheSBjb250YWluaW5nIGluc3RydWN0aW9uIHBhcmFtcyBmb3IgU2VuZCB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVNlbmRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBcnJheTxOb25jZSB8IE1lbW8gfCBUcmFuc2ZlciB8IFRva2VuVHJhbnNmZXI+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxOb25jZSB8IE1lbW8gfCBUcmFuc2ZlciB8IFRva2VuVHJhbnNmZXI+ID0gW107XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgY29uc3QgdHlwZSA9IGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uTWVtbzpcbiAgICAgICAgY29uc3QgbWVtbzogTWVtbyA9IHsgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbywgcGFyYW1zOiB7IG1lbW86IGluc3RydWN0aW9uLmRhdGEudG9TdHJpbmcoKSB9IH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BZHZhbmNlTm9uY2VBY2NvdW50OlxuICAgICAgICBjb25zdCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IG5vbmNlOiBOb25jZSA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG5vbmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uVHJhbnNmZXI6XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVUcmFuc2ZlcihpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyOiBUcmFuc2ZlciA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcixcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLmZyb21QdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRvQWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi50b1B1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLmxhbXBvcnRzLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2godHJhbnNmZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Ub2tlblRyYW5zZmVyOlxuICAgICAgICBjb25zdCB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBkZWNvZGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IHRva2VuTmFtZSA9IGZpbmRUb2tlbk5hbWUodG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLmtleXMubWludC5wdWJrZXkudG9TdHJpbmcoKSk7XG4gICAgICAgIGNvbnN0IHRva2VuVHJhbnNmZXI6IFRva2VuVHJhbnNmZXIgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcixcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ua2V5cy5vd25lci5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRvQWRkcmVzczogdG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLmtleXMuZGVzdGluYXRpb24ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhbW91bnQ6IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbi5kYXRhLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgICAgc291cmNlQWRkcmVzczogdG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLmtleXMuc291cmNlLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKHRva2VuVHJhbnNmZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoXG4gICAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIGluc3RydWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbilcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluc3RydWN0aW9uRGF0YTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgU29sYW5hIGluc3RydWN0aW9ucyB0byBjcmVhdGUgc3Rha2luZyB0eCBhbmQgZGVsZWdhdGUgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICogT25seSBzdXBwb3J0cyBOb25jZSwgU3Rha2luZ0FjdGl2YXRlIGFuZCBNZW1vIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gaW5zdHJ1Y3Rpb25zIC0gYW4gYXJyYXkgb2Ygc3VwcG9ydGVkIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqIEByZXR1cm5zIHtJbnN0cnVjdGlvblBhcmFtc1tdfSBBbiBhcnJheSBjb250YWluaW5nIGluc3RydWN0aW9uIHBhcmFtcyBmb3Igc3Rha2luZyBhY3RpdmF0ZSB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9ucyhcbiAgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW11cbik6IEFycmF5PE5vbmNlIHwgU3Rha2luZ0FjdGl2YXRlIHwgTWVtbz4ge1xuICBjb25zdCBpbnN0cnVjdGlvbkRhdGE6IEFycmF5PE5vbmNlIHwgU3Rha2luZ0FjdGl2YXRlIHwgTWVtbz4gPSBbXTtcbiAgY29uc3Qgc3Rha2luZ0luc3RydWN0aW9ucyA9IHt9IGFzIFN0YWtpbmdJbnN0cnVjdGlvbnM7XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgY29uc3QgdHlwZSA9IGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQWR2YW5jZU5vbmNlQWNjb3VudDpcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBjb25zdCBub25jZTogTm9uY2UgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChub25jZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uTWVtbzpcbiAgICAgICAgY29uc3QgbWVtbzogTWVtbyA9IHsgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbywgcGFyYW1zOiB7IG1lbW86IGluc3RydWN0aW9uLmRhdGEudG9TdHJpbmcoKSB9IH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkNyZWF0ZTpcbiAgICAgICAgc3Rha2luZ0luc3RydWN0aW9ucy5jcmVhdGUgPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVDcmVhdGVBY2NvdW50KGluc3RydWN0aW9uKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TdGFraW5nSW5pdGlhbGl6ZTpcbiAgICAgICAgc3Rha2luZ0luc3RydWN0aW9ucy5pbml0aWFsaXplID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVJbml0aWFsaXplKGluc3RydWN0aW9uKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TdGFraW5nRGVsZWdhdGU6XG4gICAgICAgIHN0YWtpbmdJbnN0cnVjdGlvbnMuZGVsZWdhdGUgPSBTdGFrZUluc3RydWN0aW9uLmRlY29kZURlbGVnYXRlKGluc3RydWN0aW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVTdGFraW5nSW5zdHJ1Y3Rpb25zKHN0YWtpbmdJbnN0cnVjdGlvbnMpO1xuICBjb25zdCBzdGFraW5nQWN0aXZhdGU6IFN0YWtpbmdBY3RpdmF0ZSA9IHtcbiAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGUsXG4gICAgcGFyYW1zOiB7XG4gICAgICBmcm9tQWRkcmVzczogc3Rha2luZ0luc3RydWN0aW9ucy5jcmVhdGU/LmZyb21QdWJrZXkudG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgIHN0YWtpbmdBZGRyZXNzOiBzdGFraW5nSW5zdHJ1Y3Rpb25zLmluaXRpYWxpemU/LnN0YWtlUHVia2V5LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICBhbW91bnQ6IHN0YWtpbmdJbnN0cnVjdGlvbnMuY3JlYXRlPy5sYW1wb3J0cy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgdmFsaWRhdG9yOiBzdGFraW5nSW5zdHJ1Y3Rpb25zLmRlbGVnYXRlPy52b3RlUHVia2V5LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgfSxcbiAgfTtcbiAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2goc3Rha2luZ0FjdGl2YXRlKTtcblxuICByZXR1cm4gaW5zdHJ1Y3Rpb25EYXRhO1xufVxuXG5pbnRlcmZhY2UgU3Rha2luZ0luc3RydWN0aW9ucyB7XG4gIGNyZWF0ZT86IENyZWF0ZUFjY291bnRQYXJhbXM7XG4gIGluaXRpYWxpemU/OiBJbml0aWFsaXplU3Rha2VQYXJhbXM7XG4gIGRlbGVnYXRlPzogRGVsZWdhdGVTdGFrZVBhcmFtcztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGFraW5nSW5zdHJ1Y3Rpb25zKHN0YWtpbmdJbnN0cnVjdGlvbnM6IFN0YWtpbmdJbnN0cnVjdGlvbnMpIHtcbiAgaWYgKCFzdGFraW5nSW5zdHJ1Y3Rpb25zLmNyZWF0ZSkge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ0ludmFsaWQgc3Rha2luZyBhY3RpdmF0ZSB0cmFuc2FjdGlvbiwgbWlzc2luZyBjcmVhdGUgc3Rha2UgYWNjb3VudCBpbnN0cnVjdGlvbicpO1xuICB9IGVsc2UgaWYgKCFzdGFraW5nSW5zdHJ1Y3Rpb25zLmluaXRpYWxpemUpIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHN0YWtpbmcgYWN0aXZhdGUgdHJhbnNhY3Rpb24sIG1pc3NpbmcgaW5pdGlhbGl6ZSBzdGFrZSBhY2NvdW50IGluc3RydWN0aW9uJyk7XG4gIH0gZWxzZSBpZiAoIXN0YWtpbmdJbnN0cnVjdGlvbnMuZGVsZWdhdGUpIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHN0YWtpbmcgYWN0aXZhdGUgdHJhbnNhY3Rpb24sIG1pc3NpbmcgZGVsZWdhdGUgaW5zdHJ1Y3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBTb2xhbmEgaW5zdHJ1Y3Rpb25zIHRvIGNyZWF0ZSBkZWFjdGl2YXRlIHR4IGluc3RydWN0aW9ucyBwYXJhbXNcbiAqIE9ubHkgc3VwcG9ydHMgTm9uY2UsIFN0YWtpbmdEZWFjdGl2YXRlLCBhbmQgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIGFuIGFycmF5IG9mIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXMgZm9yIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXVxuKTogQXJyYXk8Tm9uY2UgfCBTdGFraW5nRGVhY3RpdmF0ZSB8IE1lbW8+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxOb25jZSB8IFN0YWtpbmdEZWFjdGl2YXRlIHwgTWVtbz4gPSBbXTtcbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BZHZhbmNlTm9uY2VBY2NvdW50OlxuICAgICAgICBjb25zdCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IG5vbmNlOiBOb25jZSA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG5vbmNlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5NZW1vOlxuICAgICAgICBjb25zdCBtZW1vOiBNZW1vID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sXG4gICAgICAgICAgcGFyYW1zOiB7IG1lbW86IGluc3RydWN0aW9uLmRhdGEudG9TdHJpbmcoKSB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChtZW1vKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgY29uc3QgZGVhY3RpdmF0ZUluc3RydWN0aW9uID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVEZWFjdGl2YXRlKGluc3RydWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc3Rha2luZ0RlYWN0aXZhdGU6IFN0YWtpbmdEZWFjdGl2YXRlID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWFjdGl2YXRlLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZnJvbUFkZHJlc3M6IGRlYWN0aXZhdGVJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzdGFraW5nQWRkcmVzczogZGVhY3RpdmF0ZUluc3RydWN0aW9uLnN0YWtlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2goc3Rha2luZ0RlYWN0aXZhdGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluc3RydWN0aW9uRGF0YTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgU29sYW5hIGluc3RydWN0aW9ucyB0byBjcmVhdGUgc3Rha2luZyAgd2l0aGRyYXcgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICogT25seSBzdXBwb3J0cyBOb25jZSwgU3Rha2luZ1dpdGhkcmF3LCBhbmQgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIGFuIGFycmF5IG9mIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXMgZm9yIHN0YWtpbmcgd2l0aGRyYXcgdHhcbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnMoXG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdXG4pOiBBcnJheTxOb25jZSB8IFN0YWtpbmdXaXRoZHJhdyB8IE1lbW8+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxOb25jZSB8IFN0YWtpbmdXaXRoZHJhdyB8IE1lbW8+ID0gW107XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgY29uc3QgdHlwZSA9IGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQWR2YW5jZU5vbmNlQWNjb3VudDpcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBjb25zdCBub25jZTogTm9uY2UgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChub25jZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uTWVtbzpcbiAgICAgICAgY29uc3QgbWVtbzogTWVtbyA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICAgIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCkgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobWVtbyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBjb25zdCB3aXRoZHJhd0luc3RydWN0aW9uID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVXaXRoZHJhdyhpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IHN0YWtpbmdXaXRoZHJhdzogU3Rha2luZ1dpdGhkcmF3ID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdXaXRoZHJhdyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3aXRoZHJhd0luc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiB3aXRoZHJhd0luc3RydWN0aW9uLnN0YWtlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhbW91bnQ6IHdpdGhkcmF3SW5zdHJ1Y3Rpb24ubGFtcG9ydHMudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChzdGFraW5nV2l0aGRyYXcpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5zdHJ1Y3Rpb25EYXRhO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWVtbyBvYmplY3QgZnJvbSBpbnN0cnVjdGlvbnMgaWYgaXQgZXhpc3RzXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIHRoZSBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9ucyB0byBiZSBwYXJzZWRcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gaW5zdHJ1Y3Rpb25JbmRleGVzIC0gdGhlIGluc3RydWN0aW9ucyBpbmRleGVzIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gKiBAcmV0dXJucyB7TWVtbyB8IHVuZGVmaW5lZH0gLSBtZW1vIG9iamVjdCBvciB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZ2V0TWVtbyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSwgaW5zdHJ1Y3Rpb25JbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KTogTWVtbyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGluc3RydWN0aW9uc0xlbmd0aCA9IE9iamVjdC5rZXlzKGluc3RydWN0aW9uSW5kZXhlcykubGVuZ3RoO1xuICBpZiAoaW5zdHJ1Y3Rpb25zLmxlbmd0aCA9PT0gaW5zdHJ1Y3Rpb25zTGVuZ3RoICYmIGluc3RydWN0aW9uc1tpbnN0cnVjdGlvbkluZGV4ZXMuTWVtb10pIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbnNbaW5zdHJ1Y3Rpb25JbmRleGVzLk1lbW9dLmRhdGEudG9TdHJpbmcoKSB9LFxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgYXRhSW5pdEluc3RydWN0aW9uS2V5c0luZGV4ZXMgPSB7XG4gIFBheWVyQWRkcmVzczogMCxcbiAgQVRBQWRkcmVzczogMSxcbiAgT3duZXJBZGRyZXNzOiAyLFxuICBNaW50QWRkcmVzczogMyxcbn07XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gaW5pdGlhbGl6ZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBhbiBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zIGZvciBTZW5kIHR4XG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXRhSW5pdEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IEFycmF5PEF0YUluaXQgfCBNZW1vIHwgTm9uY2U+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxBdGFJbml0IHwgTWVtbyB8IE5vbmNlPiA9IFtdO1xuICBsZXQgbWVtbzogTWVtbyB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLk1lbW86XG4gICAgICAgIG1lbW8gPSB7IHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCkgfSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BZHZhbmNlTm9uY2VBY2NvdW50OlxuICAgICAgICBjb25zdCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IG5vbmNlOiBOb25jZSA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG5vbmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5NaW50QWRkcmVzc10ucHVia2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHRva2VuTmFtZSA9IGZpbmRUb2tlbk5hbWUobWludEFkZHJlc3MpO1xuXG4gICAgICAgIGNvbnN0IGF0YUluaXQ6IEF0YUluaXQgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgICAgICAgYXRhQWRkcmVzczogaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5BVEFBZGRyZXNzXS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG93bmVyQWRkcmVzczogaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5Pd25lckFkZHJlc3NdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgcGF5ZXJBZGRyZXNzOiBpbnN0cnVjdGlvbi5rZXlzW2F0YUluaXRJbnN0cnVjdGlvbktleXNJbmRleGVzLlBheWVyQWRkcmVzc10ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2goYXRhSW5pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAobWVtbykge1xuICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICB9XG4gIHJldHVybiBpbnN0cnVjdGlvbkRhdGE7XG59XG5cbmZ1bmN0aW9uIGZpbmRUb2tlbk5hbWUobWludEFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvaW5zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTb2xDb2luICYmIHZhbHVlLnRva2VuQWRkcmVzcyA9PT0gbWludEFkZHJlc3MpIHtcbiAgICAgIHRva2VuID0gdmFsdWUubmFtZTtcbiAgICB9XG4gIH0pO1xuXG4gIGFzc2VydCh0b2tlbik7XG5cbiAgcmV0dXJuIHRva2VuO1xufVxuIl19
|
|
418
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBWXlCO0FBQ3pCLGlEQUFxRTtBQUVyRSxtREFBcUU7QUFDckUsMkNBQStHO0FBYS9HLG1DQUE2QztBQUM3QyxvREFBNEI7QUFDNUIsaURBQXFEO0FBRXJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHdCQUF3QixDQUN0QyxJQUFxQixFQUNyQixZQUFzQztJQUV0QyxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssMEJBQWUsQ0FBQyxvQkFBb0I7WUFDdkMsT0FBTywyQkFBMkIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxLQUFLLDBCQUFlLENBQUMsSUFBSTtZQUN2QixPQUFPLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO1lBQ2xDLE9BQU8sZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtZQUNwQyxPQUFPLGtDQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELEtBQUssMEJBQWUsQ0FBQyxlQUFlO1lBQ2xDLE9BQU8sZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsS0FBSywwQkFBZSxDQUFDLG9DQUFvQztZQUN2RCxPQUFPLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hEO1lBQ0UsTUFBTSxJQUFJLHVCQUFZLENBQUMsdURBQXVELEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDMUY7QUFDSCxDQUFDO0FBcEJELDREQW9CQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxZQUFzQztJQUN6RSxNQUFNLGVBQWUsR0FBNkIsRUFBRSxDQUFDO0lBQ3JELE1BQU0saUJBQWlCLEdB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Z25QYXJhbXMsXG4gIENyZWF0ZUFjY291bnRQYXJhbXMsXG4gIERlYWN0aXZhdGVTdGFrZVBhcmFtcyxcbiAgRGVsZWdhdGVTdGFrZVBhcmFtcyxcbiAgSW5pdGlhbGl6ZVN0YWtlUGFyYW1zLFxuICBTcGxpdFN0YWtlUGFyYW1zLFxuICBTdGFrZUluc3RydWN0aW9uLFxuICBTdGFrZVByb2dyYW0sXG4gIFN5c3RlbUluc3RydWN0aW9uLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgZGVjb2RlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24gfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgTm90U3VwcG9ydGVkIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMsIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0sIHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBBdGFJbml0LFxuICBJbnN0cnVjdGlvblBhcmFtcyxcbiAgV2FsbGV0SW5pdCxcbiAgVHJhbnNmZXIsXG4gIE5vbmNlLFxuICBNZW1vLFxuICBTdGFraW5nQWN0aXZhdGUsXG4gIFN0YWtpbmdEZWFjdGl2YXRlLFxuICBTdGFraW5nV2l0aGRyYXcsXG4gIFRva2VuVHJhbnNmZXIsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZ2V0SW5zdHJ1Y3Rpb25UeXBlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBjb2lucywgU29sQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG4vKipcbiAqIENvbnN0cnVjdCBpbnN0cnVjdGlvbnMgcGFyYW1zIGZyb20gU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eXBlIC0gdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBzb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXVxuKTogSW5zdHJ1Y3Rpb25QYXJhbXNbXSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgcmV0dXJuIHBhcnNlV2FsbGV0SW5pdEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICByZXR1cm4gcGFyc2VTZW5kSW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucyk7XG4gICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgcmV0dXJuIHBhcnNlU3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucyk7XG4gICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICByZXR1cm4gcGFyc2VTdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgIHJldHVybiBwYXJzZVN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjpcbiAgICAgIHJldHVybiBwYXJzZUF0YUluaXRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCB0cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgdHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgU29sYW5hIGluc3RydWN0aW9ucyB0byBXYWxsZXQgaW5pdGlhbGl6YXRpb24gdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBjb250YWluaW5nIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBub25jZSBzb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXMgZm9yIFdhbGxldCBpbml0aWFsaXphdGlvbiB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVdhbGxldEluaXRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBcnJheTxXYWxsZXRJbml0IHwgTWVtbz4ge1xuICBjb25zdCBpbnN0cnVjdGlvbkRhdGE6IEFycmF5PFdhbGxldEluaXQgfCBNZW1vPiA9IFtdO1xuICBjb25zdCBjcmVhdGVJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZUNyZWF0ZUFjY291bnQoaW5zdHJ1Y3Rpb25zW3dhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMuQ3JlYXRlXSk7XG4gIGNvbnN0IG5vbmNlSW5pdEluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlTm9uY2VJbml0aWFsaXplKFxuICAgIGluc3RydWN0aW9uc1t3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLkluaXRpYWxpemVOb25jZUFjY291bnRdXG4gICk7XG5cbiAgY29uc3Qgd2FsbGV0SW5pdDogV2FsbGV0SW5pdCA9IHtcbiAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVOb25jZUFjY291bnQsXG4gICAgcGFyYW1zOiB7XG4gICAgICBmcm9tQWRkcmVzczogY3JlYXRlSW5zdHJ1Y3Rpb24uZnJvbVB1YmtleS50b1N0cmluZygpLFxuICAgICAgbm9uY2VBZGRyZXNzOiBub25jZUluaXRJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgYXV0aEFkZHJlc3M6IG5vbmNlSW5pdEluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgIGFtb3VudDogY3JlYXRlSW5zdHJ1Y3Rpb24ubGFtcG9ydHMudG9TdHJpbmcoKSxcbiAgICB9LFxuICB9O1xuICBpbnN0cnVjdGlvbkRhdGEucHVzaCh3YWxsZXRJbml0KTtcblxuICBjb25zdCBtZW1vID0gZ2V0TWVtbyhpbnN0cnVjdGlvbnMsIHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMpO1xuICBpZiAobWVtbykge1xuICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICB9XG5cbiAgcmV0dXJuIGluc3RydWN0aW9uRGF0YTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgU29sYW5hIGluc3RydWN0aW9ucyB0byBTZW5kIHR4IGluc3RydWN0aW9ucyBwYXJhbXNcbiAqIE9ubHkgc3VwcG9ydHMgTWVtbywgVHJhbnNmZXIgYW5kIEFkdmFuY2UgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBhbiBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zIGZvciBTZW5kIHR4XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU2VuZEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IEFycmF5PE5vbmNlIHwgTWVtbyB8IFRyYW5zZmVyIHwgVG9rZW5UcmFuc2Zlcj4ge1xuICBjb25zdCBpbnN0cnVjdGlvbkRhdGE6IEFycmF5PE5vbmNlIHwgTWVtbyB8IFRyYW5zZmVyIHwgVG9rZW5UcmFuc2Zlcj4gPSBbXTtcbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5NZW1vOlxuICAgICAgICBjb25zdCBtZW1vOiBNZW1vID0geyB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLCBwYXJhbXM6IHsgbWVtbzogaW5zdHJ1Y3Rpb24uZGF0YS50b1N0cmluZygpIH0gfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobWVtbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFkdmFuY2VOb25jZUFjY291bnQ6XG4gICAgICAgIGNvbnN0IGFkdmFuY2VOb25jZUluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlTm9uY2VBZHZhbmNlKGluc3RydWN0aW9uKTtcbiAgICAgICAgY29uc3Qgbm9uY2U6IE5vbmNlID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobm9uY2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5UcmFuc2ZlcjpcbiAgICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZVRyYW5zZmVyKGluc3RydWN0aW9uKTtcbiAgICAgICAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZnJvbUFkZHJlc3M6IHRyYW5zZmVySW5zdHJ1Y3Rpb24uZnJvbVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgdG9BZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLnRvUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhbW91bnQ6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ubGFtcG9ydHMudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaCh0cmFuc2Zlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlRva2VuVHJhbnNmZXI6XG4gICAgICAgIGNvbnN0IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbiA9IGRlY29kZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICAgICAgY29uc3QgdG9rZW5OYW1lID0gZmluZFRva2VuTmFtZSh0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ua2V5cy5taW50LnB1YmtleS50b1N0cmluZygpKTtcbiAgICAgICAgY29uc3QgdG9rZW5UcmFuc2ZlcjogVG9rZW5UcmFuc2ZlciA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZnJvbUFkZHJlc3M6IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbi5rZXlzLm93bmVyLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgdG9BZGRyZXNzOiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ua2V5cy5kZXN0aW5hdGlvbi5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGFtb3VudDogdG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLmRhdGEuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgICBzb3VyY2VBZGRyZXNzOiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ua2V5cy5zb3VyY2UucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2godG9rZW5UcmFuc2Zlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5zdHJ1Y3Rpb25EYXRhO1xufVxuXG4vKipcbiAqIFBhcnNlcyBTb2xhbmEgaW5zdHJ1Y3Rpb25zIHRvIGNyZWF0ZSBzdGFraW5nIHR4IGFuZCBkZWxlZ2F0ZSB0eCBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKiBPbmx5IHN1cHBvcnRzIE5vbmNlLCBTdGFraW5nQWN0aXZhdGUgYW5kIE1lbW8gU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBhbiBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zIGZvciBzdGFraW5nIGFjdGl2YXRlIHR4XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXVxuKTogQXJyYXk8Tm9uY2UgfCBTdGFraW5nQWN0aXZhdGUgfCBNZW1vPiB7XG4gIGNvbnN0IGluc3RydWN0aW9uRGF0YTogQXJyYXk8Tm9uY2UgfCBTdGFraW5nQWN0aXZhdGUgfCBNZW1vPiA9IFtdO1xuICBjb25zdCBzdGFraW5nSW5zdHJ1Y3Rpb25zID0ge30gYXMgU3Rha2luZ0luc3RydWN0aW9ucztcbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BZHZhbmNlTm9uY2VBY2NvdW50OlxuICAgICAgICBjb25zdCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IG5vbmNlOiBOb25jZSA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG5vbmNlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5NZW1vOlxuICAgICAgICBjb25zdCBtZW1vOiBNZW1vID0geyB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLCBwYXJhbXM6IHsgbWVtbzogaW5zdHJ1Y3Rpb24uZGF0YS50b1N0cmluZygpIH0gfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobWVtbyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQ3JlYXRlOlxuICAgICAgICBzdGFraW5nSW5zdHJ1Y3Rpb25zLmNyZWF0ZSA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZUNyZWF0ZUFjY291bnQoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdJbml0aWFsaXplOlxuICAgICAgICBzdGFraW5nSW5zdHJ1Y3Rpb25zLmluaXRpYWxpemUgPSBTdGFrZUluc3RydWN0aW9uLmRlY29kZUluaXRpYWxpemUoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdEZWxlZ2F0ZTpcbiAgICAgICAgc3Rha2luZ0luc3RydWN0aW9ucy5kZWxlZ2F0ZSA9IFN0YWtlSW5zdHJ1Y3Rpb24uZGVjb2RlRGVsZWdhdGUoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVN0YWtpbmdJbnN0cnVjdGlvbnMoc3Rha2luZ0luc3RydWN0aW9ucyk7XG4gIGNvbnN0IHN0YWtpbmdBY3RpdmF0ZTogU3Rha2luZ0FjdGl2YXRlID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGZyb21BZGRyZXNzOiBzdGFraW5nSW5zdHJ1Y3Rpb25zLmNyZWF0ZT8uZnJvbVB1YmtleS50b1N0cmluZygpIHx8ICcnLFxuICAgICAgc3Rha2luZ0FkZHJlc3M6IHN0YWtpbmdJbnN0cnVjdGlvbnMuaW5pdGlhbGl6ZT8uc3Rha2VQdWJrZXkudG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgIGFtb3VudDogc3Rha2luZ0luc3RydWN0aW9ucy5jcmVhdGU/LmxhbXBvcnRzLnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICB2YWxpZGF0b3I6IHN0YWtpbmdJbnN0cnVjdGlvbnMuZGVsZWdhdGU/LnZvdGVQdWJrZXkudG9TdHJpbmcoKSB8fCAnJyxcbiAgICB9LFxuICB9O1xuICBpbnN0cnVjdGlvbkRhdGEucHVzaChzdGFraW5nQWN0aXZhdGUpO1xuXG4gIHJldHVybiBpbnN0cnVjdGlvbkRhdGE7XG59XG5cbmludGVyZmFjZSBTdGFraW5nSW5zdHJ1Y3Rpb25zIHtcbiAgY3JlYXRlPzogQ3JlYXRlQWNjb3VudFBhcmFtcztcbiAgaW5pdGlhbGl6ZT86IEluaXRpYWxpemVTdGFrZVBhcmFtcztcbiAgZGVsZWdhdGU/OiBEZWxlZ2F0ZVN0YWtlUGFyYW1zO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YWtpbmdJbnN0cnVjdGlvbnMoc3Rha2luZ0luc3RydWN0aW9uczogU3Rha2luZ0luc3RydWN0aW9ucykge1xuICBpZiAoIXN0YWtpbmdJbnN0cnVjdGlvbnMuY3JlYXRlKSB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCBzdGFraW5nIGFjdGl2YXRlIHRyYW5zYWN0aW9uLCBtaXNzaW5nIGNyZWF0ZSBzdGFrZSBhY2NvdW50IGluc3RydWN0aW9uJyk7XG4gIH0gZWxzZSBpZiAoIXN0YWtpbmdJbnN0cnVjdGlvbnMuaW5pdGlhbGl6ZSkge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ0ludmFsaWQgc3Rha2luZyBhY3RpdmF0ZSB0cmFuc2FjdGlvbiwgbWlzc2luZyBpbml0aWFsaXplIHN0YWtlIGFjY291bnQgaW5zdHJ1Y3Rpb24nKTtcbiAgfSBlbHNlIGlmICghc3Rha2luZ0luc3RydWN0aW9ucy5kZWxlZ2F0ZSkge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ0ludmFsaWQgc3Rha2luZyBhY3RpdmF0ZSB0cmFuc2FjdGlvbiwgbWlzc2luZyBkZWxlZ2F0ZSBpbnN0cnVjdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gY3JlYXRlIGRlYWN0aXZhdGUgc3Rha2UgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtcy4gU3VwcG9ydHMgZnVsbCBzdGFrZVxuICogYWNjb3VudCBkZWFjdGl2YXRpb24gYW5kIHBhcnRpYWwgc3Rha2UgYWNjb3VudCBkZWFjdGl2YXRpb24uXG4gKlxuICogV2hlbiBwYXJ0aWFsbHkgZGVhY3RpdmF0aW5nIGEgc3Rha2UgYWNjb3VudCB0aGlzIG1ldGhvZCBleHBlY3RzIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zOiBBbGxvY2F0ZSxcbiAqIHRvIGFsbG9jYXRlIGEgbmV3IHN0YWtpbmcgYWNjb3VudCwgQXNzaWduLCB0byBhc3NpZ24gdGhlIG5ld2x5IGNyZWF0ZWQgc3Rha2luZyBhY2NvdW50IHRvIHRoZVxuICogU3Rha2UgUHJvZ3JhbSwgU3BsaXQsIHRvIHNwbGl0IHRoZSBjdXJyZW50IHN0YWtlIGFjY291bnQsIGFuZCBTdGFraW5nRGVhY3RpdmF0ZSB0byBkZWFjdGl2YXRlIHRoZVxuICogbmV3bHkgY3JlYXRlZCBzdGFrZSBhY2NvdW50LlxuICpcbiAqIFN1cHBvcnRzIE5vbmNlLCBTdGFraW5nRGVhY3RpdmF0ZSwgTWVtbywgQWxsb2NhdGUsIEFzc2lnbiwgYW5kIFNwbGl0IFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIGFuIGFycmF5IG9mIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXMgZm9yIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXVxuKTogQXJyYXk8Tm9uY2UgfCBTdGFraW5nRGVhY3RpdmF0ZSB8IE1lbW8+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxOb25jZSB8IFN0YWtpbmdEZWFjdGl2YXRlIHwgTWVtbz4gPSBbXTtcbiAgY29uc3QgdW5zdGFraW5nSW5zdHJ1Y3Rpb25zID0ge30gYXMgVW5zdGFraW5nSW5zdHJ1Y3Rpb25zO1xuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFkdmFuY2VOb25jZUFjY291bnQ6XG4gICAgICAgIGNvbnN0IGFkdmFuY2VOb25jZUluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlTm9uY2VBZHZhbmNlKGluc3RydWN0aW9uKTtcbiAgICAgICAgY29uc3Qgbm9uY2U6IE5vbmNlID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobm9uY2UpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLk1lbW86XG4gICAgICAgIGNvbnN0IG1lbW86IE1lbW8gPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgICAgICBwYXJhbXM6IHsgbWVtbzogaW5zdHJ1Y3Rpb24uZGF0YS50b1N0cmluZygpIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFsbG9jYXRlOlxuICAgICAgICB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuYWxsb2NhdGUgPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVBbGxvY2F0ZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQXNzaWduOlxuICAgICAgICB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuYXNzaWduID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlQXNzaWduKGluc3RydWN0aW9uKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TcGxpdDpcbiAgICAgICAgdW5zdGFraW5nSW5zdHJ1Y3Rpb25zLnNwbGl0ID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVTcGxpdChpbnN0cnVjdGlvbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIHVuc3Rha2luZ0luc3RydWN0aW9ucy5kZWFjdGl2YXRlID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVEZWFjdGl2YXRlKGluc3RydWN0aW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVVbnN0YWtpbmdJbnN0cnVjdGlvbnModW5zdGFraW5nSW5zdHJ1Y3Rpb25zKTtcbiAgY29uc3Qgc3Rha2luZ0RlYWN0aXZhdGU6IFN0YWtpbmdEZWFjdGl2YXRlID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWFjdGl2YXRlLFxuICAgIHBhcmFtczoge1xuICAgICAgZnJvbUFkZHJlc3M6IHVuc3Rha2luZ0luc3RydWN0aW9ucy5kZWFjdGl2YXRlPy5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICBzdGFraW5nQWRkcmVzczpcbiAgICAgICAgdW5zdGFraW5nSW5zdHJ1Y3Rpb25zLnNwbGl0Py5zdGFrZVB1YmtleS50b1N0cmluZygpIHx8XG4gICAgICAgIHVuc3Rha2luZ0luc3RydWN0aW9ucy5kZWFjdGl2YXRlPy5zdGFrZVB1YmtleS50b1N0cmluZygpIHx8XG4gICAgICAgICcnLFxuICAgICAgYW1vdW50OiB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuc3BsaXQ/LmxhbXBvcnRzLnRvU3RyaW5nKCksXG4gICAgICB1bnN0YWtpbmdBZGRyZXNzOiB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuc3BsaXQ/LnNwbGl0U3Rha2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICB9LFxuICB9O1xuICBpbnN0cnVjdGlvbkRhdGEucHVzaChzdGFraW5nRGVhY3RpdmF0ZSk7XG5cbiAgcmV0dXJuIGluc3RydWN0aW9uRGF0YTtcbn1cblxuaW50ZXJmYWNlIFVuc3Rha2luZ0luc3RydWN0aW9ucyB7XG4gIGFsbG9jYXRlPzogQWxsb2NhdGVQYXJhbXM7XG4gIGFzc2lnbj86IEFzc2lnblBhcmFtcztcbiAgc3BsaXQ/OiBTcGxpdFN0YWtlUGFyYW1zO1xuICBkZWFjdGl2YXRlPzogRGVhY3RpdmF0ZVN0YWtlUGFyYW1zO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVVuc3Rha2luZ0luc3RydWN0aW9ucyh1bnN0YWtpbmdJbnN0cnVjdGlvbnM6IFVuc3Rha2luZ0luc3RydWN0aW9ucykge1xuICBpZiAoIXVuc3Rha2luZ0luc3RydWN0aW9ucy5kZWFjdGl2YXRlKSB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCBkZWFjdGl2YXRlIHN0YWtlIHRyYW5zYWN0aW9uLCBtaXNzaW5nIGRlYWN0aXZhdGUgc3Rha2UgYWNjb3VudCBpbnN0cnVjdGlvbicpO1xuICB9IGVsc2UgaWYgKHVuc3Rha2luZ0luc3RydWN0aW9ucy5hbGxvY2F0ZSB8fCB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuYXNzaWduIHx8IHVuc3Rha2luZ0luc3RydWN0aW9ucy5zcGxpdCkge1xuICAgIGlmICghdW5zdGFraW5nSW5zdHJ1Y3Rpb25zLmFsbG9jYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAnSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIG1pc3NpbmcgYWxsb2NhdGUgdW5zdGFrZSBhY2NvdW50IGluc3RydWN0aW9uJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCF1bnN0YWtpbmdJbnN0cnVjdGlvbnMuYXNzaWduKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAnSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIG1pc3NpbmcgYXNzaWduIHVuc3Rha2UgYWNjb3VudCBpbnN0cnVjdGlvbidcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghdW5zdGFraW5nSW5zdHJ1Y3Rpb25zLnNwbGl0KSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHBhcnRpYWwgZGVhY3RpdmF0ZSBzdGFrZSB0cmFuc2FjdGlvbiwgbWlzc2luZyBzcGxpdCBzdGFrZSBhY2NvdW50IGluc3RydWN0aW9uJyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHVuc3Rha2luZ0luc3RydWN0aW9ucy5hbGxvY2F0ZS5hY2NvdW50UHVia2V5LnRvU3RyaW5nKCkgIT09IHVuc3Rha2luZ0luc3RydWN0aW9ucy5hc3NpZ24uYWNjb3VudFB1YmtleS50b1N0cmluZygpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAnSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIG11c3QgYWxsb2NhdGUgYW5kIGFzc2lnbiB0aGUgc2FtZSBwdWJsaWMga2V5J1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHVuc3Rha2luZ0luc3RydWN0aW9ucy5hbGxvY2F0ZS5zcGFjZSAhPT0gU3Rha2VQcm9ncmFtLnNwYWNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICBgSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIHVuc3Rha2luZyBhY2NvdW50IG11c3QgYWxsb2NhdGUgJHtTdGFrZVByb2dyYW0uc3BhY2V9IGJ5dGVzYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHVuc3Rha2luZ0luc3RydWN0aW9ucy5hc3NpZ24ucHJvZ3JhbUlkLnRvU3RyaW5nKCkgIT09IFN0YWtlUHJvZ3JhbS5wcm9ncmFtSWQudG9TdHJpbmcoKSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgJ0ludmFsaWQgcGFydGlhbCBkZWFjdGl2YXRlIHN0YWtlIHRyYW5zYWN0aW9uLCB0aGUgdW5zdGFrZSBhY2NvdW50IG11c3QgYmUgYXNzaWduZWQgdG8gdGhlIFN0YWtlIFByb2dyYW0nXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuYWxsb2NhdGUuYWNjb3VudFB1YmtleS50b1N0cmluZygpICE9PVxuICAgICAgdW5zdGFraW5nSW5zdHJ1Y3Rpb25zLnNwbGl0LnNwbGl0U3Rha2VQdWJrZXkudG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIG11c3QgYWxsb2NhdGUgdGhlIHVuc3Rha2luZyBhY2NvdW50Jyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHVuc3Rha2luZ0luc3RydWN0aW9ucy5zcGxpdC5zdGFrZVB1YmtleS50b1N0cmluZygpID09PSB1bnN0YWtpbmdJbnN0cnVjdGlvbnMuc3BsaXQuc3BsaXRTdGFrZVB1YmtleS50b1N0cmluZygpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAnSW52YWxpZCBwYXJ0aWFsIGRlYWN0aXZhdGUgc3Rha2UgdHJhbnNhY3Rpb24sIHRoZSB1bnN0YWtpbmcgYWNjb3VudCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBTdGFrZSBBY2NvdW50J1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgU29sYW5hIGluc3RydWN0aW9ucyB0byBjcmVhdGUgc3Rha2luZyAgd2l0aGRyYXcgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICogT25seSBzdXBwb3J0cyBOb25jZSwgU3Rha2luZ1dpdGhkcmF3LCBhbmQgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIGFuIGFycmF5IG9mIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXMgZm9yIHN0YWtpbmcgd2l0aGRyYXcgdHhcbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnMoXG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdXG4pOiBBcnJheTxOb25jZSB8IFN0YWtpbmdXaXRoZHJhdyB8IE1lbW8+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxOb25jZSB8IFN0YWtpbmdXaXRoZHJhdyB8IE1lbW8+ID0gW107XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgY29uc3QgdHlwZSA9IGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQWR2YW5jZU5vbmNlQWNjb3VudDpcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBjb25zdCBub25jZTogTm9uY2UgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChub25jZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uTWVtbzpcbiAgICAgICAgY29uc3QgbWVtbzogTWVtbyA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICAgIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCkgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2gobWVtbyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBjb25zdCB3aXRoZHJhd0luc3RydWN0aW9uID0gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVXaXRoZHJhdyhpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IHN0YWtpbmdXaXRoZHJhdzogU3Rha2luZ1dpdGhkcmF3ID0ge1xuICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdXaXRoZHJhdyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3aXRoZHJhd0luc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiB3aXRoZHJhd0luc3RydWN0aW9uLnN0YWtlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhbW91bnQ6IHdpdGhkcmF3SW5zdHJ1Y3Rpb24ubGFtcG9ydHMudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChzdGFraW5nV2l0aGRyYXcpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5zdHJ1Y3Rpb25EYXRhO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWVtbyBvYmplY3QgZnJvbSBpbnN0cnVjdGlvbnMgaWYgaXQgZXhpc3RzXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIHRoZSBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9ucyB0byBiZSBwYXJzZWRcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gaW5zdHJ1Y3Rpb25JbmRleGVzIC0gdGhlIGluc3RydWN0aW9ucyBpbmRleGVzIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gKiBAcmV0dXJucyB7TWVtbyB8IHVuZGVmaW5lZH0gLSBtZW1vIG9iamVjdCBvciB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZ2V0TWVtbyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSwgaW5zdHJ1Y3Rpb25JbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KTogTWVtbyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGluc3RydWN0aW9uc0xlbmd0aCA9IE9iamVjdC5rZXlzKGluc3RydWN0aW9uSW5kZXhlcykubGVuZ3RoO1xuICBpZiAoaW5zdHJ1Y3Rpb25zLmxlbmd0aCA9PT0gaW5zdHJ1Y3Rpb25zTGVuZ3RoICYmIGluc3RydWN0aW9uc1tpbnN0cnVjdGlvbkluZGV4ZXMuTWVtb10pIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbnNbaW5zdHJ1Y3Rpb25JbmRleGVzLk1lbW9dLmRhdGEudG9TdHJpbmcoKSB9LFxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgYXRhSW5pdEluc3RydWN0aW9uS2V5c0luZGV4ZXMgPSB7XG4gIFBheWVyQWRkcmVzczogMCxcbiAgQVRBQWRkcmVzczogMSxcbiAgT3duZXJBZGRyZXNzOiAyLFxuICBNaW50QWRkcmVzczogMyxcbn07XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gaW5pdGlhbGl6ZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgdHggaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBhbiBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICogQHJldHVybnMge0luc3RydWN0aW9uUGFyYW1zW119IEFuIGFycmF5IGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24gcGFyYW1zIGZvciBTZW5kIHR4XG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXRhSW5pdEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IEFycmF5PEF0YUluaXQgfCBNZW1vIHwgTm9uY2U+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhOiBBcnJheTxBdGFJbml0IHwgTWVtbyB8IE5vbmNlPiA9IFtdO1xuICBsZXQgbWVtbzogTWVtbyB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLk1lbW86XG4gICAgICAgIG1lbW8gPSB7IHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCkgfSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BZHZhbmNlTm9uY2VBY2NvdW50OlxuICAgICAgICBjb25zdCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbik7XG4gICAgICAgIGNvbnN0IG5vbmNlOiBOb25jZSA9IHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG5vbmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5NaW50QWRkcmVzc10ucHVia2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHRva2VuTmFtZSA9IGZpbmRUb2tlbk5hbWUobWludEFkZHJlc3MpO1xuXG4gICAgICAgIGNvbnN0IGF0YUluaXQ6IEF0YUluaXQgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgICAgICAgYXRhQWRkcmVzczogaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5BVEFBZGRyZXNzXS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG93bmVyQWRkcmVzczogaW5zdHJ1Y3Rpb24ua2V5c1thdGFJbml0SW5zdHJ1Y3Rpb25LZXlzSW5kZXhlcy5Pd25lckFkZHJlc3NdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgcGF5ZXJBZGRyZXNzOiBpbnN0cnVjdGlvbi5rZXlzW2F0YUluaXRJbnN0cnVjdGlvbktleXNJbmRleGVzLlBheWVyQWRkcmVzc10ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLnB1c2goYXRhSW5pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAobWVtbykge1xuICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKG1lbW8pO1xuICB9XG4gIHJldHVybiBpbnN0cnVjdGlvbkRhdGE7XG59XG5cbmZ1bmN0aW9uIGZpbmRUb2tlbk5hbWUobWludEFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvaW5zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTb2xDb2luICYmIHZhbHVlLnRva2VuQWRkcmVzcyA9PT0gbWludEFkZHJlc3MpIHtcbiAgICAgIHRva2VuID0gdmFsdWUubmFtZTtcbiAgICB9XG4gIH0pO1xuXG4gIGFzc2VydCh0b2tlbik7XG5cbiAgcmV0dXJuIHRva2VuO1xufVxuIl19
|
|
@@ -170,11 +170,40 @@ function stakingDeactivateInstruction(data) {
|
|
|
170
170
|
const { params: { fromAddress, stakingAddress }, } = data;
|
|
171
171
|
assert_1.default(fromAddress, 'Missing fromAddress param');
|
|
172
172
|
assert_1.default(stakingAddress, 'Missing stakingAddress param');
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
if (data.params.amount && data.params.unstakingAddress) {
|
|
174
|
+
const tx = new web3_js_1.Transaction();
|
|
175
|
+
const unstakingAddress = new web3_js_1.PublicKey(data.params.unstakingAddress);
|
|
176
|
+
const allocateAccount = web3_js_1.SystemProgram.allocate({
|
|
177
|
+
accountPubkey: unstakingAddress,
|
|
178
|
+
space: web3_js_1.StakeProgram.space,
|
|
179
|
+
});
|
|
180
|
+
tx.add(allocateAccount);
|
|
181
|
+
const assignAccount = web3_js_1.SystemProgram.assign({
|
|
182
|
+
accountPubkey: unstakingAddress,
|
|
183
|
+
programId: web3_js_1.StakeProgram.programId,
|
|
184
|
+
});
|
|
185
|
+
tx.add(assignAccount);
|
|
186
|
+
const splitStake = web3_js_1.StakeProgram.split({
|
|
187
|
+
stakePubkey: new web3_js_1.PublicKey(stakingAddress),
|
|
188
|
+
authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
189
|
+
splitStakePubkey: unstakingAddress,
|
|
190
|
+
lamports: new bignumber_js_1.default(data.params.amount).toNumber(),
|
|
191
|
+
});
|
|
192
|
+
tx.add(splitStake.instructions[1]);
|
|
193
|
+
const deactivateStaking = web3_js_1.StakeProgram.deactivate({
|
|
194
|
+
stakePubkey: unstakingAddress,
|
|
195
|
+
authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
196
|
+
});
|
|
197
|
+
tx.add(deactivateStaking);
|
|
198
|
+
return tx.instructions;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const deactivateStaking = web3_js_1.StakeProgram.deactivate({
|
|
202
|
+
stakePubkey: new web3_js_1.PublicKey(stakingAddress),
|
|
203
|
+
authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
204
|
+
});
|
|
205
|
+
return deactivateStaking.instructions;
|
|
206
|
+
}
|
|
178
207
|
}
|
|
179
208
|
/**
|
|
180
209
|
* Construct Staking Withdraw Solana instructions
|
|
@@ -210,4 +239,4 @@ function createATAInstruction(data) {
|
|
|
210
239
|
const associatedTokenAccountInstruction = spl_token_1.createAssociatedTokenAccountInstruction(new web3_js_1.PublicKey(payerAddress), new web3_js_1.PublicKey(ataAddress), new web3_js_1.PublicKey(ownerAddress), new web3_js_1.PublicKey(mintAddress));
|
|
211
240
|
return [associatedTokenAccountInstruction];
|
|
212
241
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zb2xJbnN0cnVjdGlvbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBUXlCO0FBQ3pCLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsMkNBQXVFO0FBYXZFLGlEQUFxRDtBQUNyRCxpREFBOEc7QUFFOUc7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxrQkFBcUM7SUFDekUsUUFBUSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsS0FBSyxtQ0FBdUIsQ0FBQyxZQUFZO1lBQ3ZDLE9BQU8sdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxLQUFLLG1DQUF1QixDQUFDLElBQUk7WUFDL0IsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxLQUFLLG1DQUF1QixDQUFDLFFBQVE7WUFDbkMsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELEtBQUssbUNBQXVCLENBQUMsYUFBYTtZQUN4QyxPQUFPLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsS0FBSyxtQ0FBdUIsQ0FBQyxrQkFBa0I7WUFDN0MsT0FBTyw2QkFBNkIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUQsS0FBSyxtQ0FBdUIsQ0FBQyxpQkFBaUI7WUFDNUMsT0FBTyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEI7WUFDdkQsT0FBTyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xEO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0tBQ2hFO0FBQ0gsQ0FBQztBQXZCRCxzREF1QkM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsdUJBQXVCLENBQUMsSUFBVztJQUMxQyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsR0FDbEQsR0FBRyxJQUFJLENBQUM7SUFDVCxnQkFBTSxDQUFDLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDN0QsZ0JBQU0sQ0FBQyxrQkFBa0IsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsdUJBQWEsQ0FBQyxZQUFZLENBQUM7UUFDbEQsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5QyxnQkFBZ0IsRUFBRSxJQUFJLG1CQUFTLENBQUMsaUJBQWlCLENBQUM7S0FDbkQsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBVTtJQUNqQyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQ2pCLEdBQUcsSUFBSSxDQUFDO0lBQ1QsZ0JBQU0sQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNuQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGdDQUFzQixDQUFDO1FBQ2pELElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLElBQUksbUJBQVMsQ0FBQywyQkFBZSxDQUFDO1FBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUN4QixDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFjO0lBQ3pDLE1BQU0sRUFDSixNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUMzQyxHQUFHLElBQUksQ0FBQztJQUNULGdCQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDakQsZ0JBQU0sQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxnQkFBTSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sbUJBQW1CLEdBQUcsdUJBQWEsQ0FBQyxRQUFRLENBQUM7UUFDakQsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDdEMsUUFBUSxFQUFFLElBQUksbUJBQVMsQ0FBQyxTQUFTLENBQUM7UUFDbEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0tBQy9CLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsd0JBQXdCLENBQUMsSUFBbUI7SUFDbkQsTUFBTSxFQUNKLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FDckUsR0FBRyxJQUFJLENBQUM7SUFDVCxnQkFBTSxDQUFDLFdBQVcsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3pELGdCQUFNLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN2QyxnQkFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hDLGdCQUFNLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLGdCQUFNLENBQUMsS0FBSyxZQUFZLGlCQUFPLENBQUMsQ0FBQztJQUNqQyxNQUFNLG1CQUFtQixHQUFHLDRDQUFnQyxDQUMxRCxJQUFJLG1CQUFTLENBQUMsYUFBYSxDQUFDLEVBQzVCLElBQUksbUJBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQ2pDLElBQUksbUJBQVMsQ0FBQyxTQUFTLENBQUMsRUFDeEIsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQyxFQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ2QsS0FBSyxDQUFDLGFBQWEsQ0FDcEIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsNkJBQTZCLENBQUMsSUFBZ0I7SUFDckQsTUFBTSxFQUNKLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUMzRCxHQUFHLElBQUksQ0FBQztJQUNULGdCQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDakQsZ0JBQU0sQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztJQUNuRCxnQkFBTSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pELGdCQUFNLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkMsTUFBTSx1QkFBdUIsR0FBRyx1QkFBYSxDQUFDLGtCQUFrQixDQUFDO1FBQy9ELFVBQVUsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDO1FBQ3hDLGdCQUFnQixFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDNUMsUUFBUSxFQUFFLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDM0MsQ0FBQyxDQUFDO0lBQ0gsT0FBTyx1QkFBdUIsQ0FBQyxZQUFZLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FBQyxJQUFxQjtJQUN6RCxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQzNELEdBQUcsSUFBSSxDQUFDO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLGNBQWMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELGdCQUFNLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkMsZ0JBQU0sQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUU3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxtQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sRUFBRSxHQUFHLElBQUkscUJBQVcsRUFBRSxDQUFDO0lBRTdCLE1BQU0saUJBQWlCLEdBQUcsc0JBQVksQ0FBQyxhQUFhLENBQUM7UUFDbkQsVUFBVTtRQUNWLFdBQVc7UUFDWCxVQUFVLEVBQUUsSUFBSSxvQkFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFDbEQsTUFBTSxFQUFFLElBQUksZ0JBQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUNwQyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUMzQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUIsTUFBTSxlQUFlLEdBQUcsc0JBQVksQ0FBQyxRQUFRLENBQUM7UUFDNUMsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxjQUFjLENBQUM7UUFDMUMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxVQUFVLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFNBQVMsQ0FBQztLQUNyQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXhCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDRCQUE0QixDQUFDLElBQXVCO0lBQzNELE1BQU0sRUFDSixNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQ3hDLEdBQUcsSUFBSSxDQUFDO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLGNBQWMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO0lBRXZELE1BQU0saUJBQWlCLEdBQUcsc0JBQVksQ0FBQyxVQUFVLENBQUM7UUFDaEQsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxjQUFjLENBQUM7UUFDMUMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQztLQUM3QyxDQUFDLENBQUM7SUFFSCxPQUFPLGlCQUFpQixDQUFDLFlBQVksQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDBCQUEwQixDQUFDLElBQXFCO0lBQ3ZELE1BQU0sRUFDSixNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxHQUNoRCxHQUFHLElBQUksQ0FBQztJQUNULGdCQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDakQsZ0JBQU0sQ0FBQyxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxnQkFBTSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sZUFBZSxHQUFHLHNCQUFZLENBQUMsUUFBUSxDQUFDO1FBQzVDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsY0FBYyxDQUFDO1FBQzFDLGdCQUFnQixFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDNUMsUUFBUSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDcEMsUUFBUSxFQUFFLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDM0MsQ0FBQyxDQUFDO0lBRUgsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQUMsSUFBYTtJQUN6QyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEdBQ2hFLEdBQUcsSUFBSSxDQUFDO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQy9DLGdCQUFNLENBQUMsWUFBWSxFQUFFLDRCQUE0QixDQUFDLENBQUM7SUFDbkQsZ0JBQU0sQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztJQUVuRCxNQUFNLGlDQUFpQyxHQUFHLG1EQUF1QyxDQUMvRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDLEVBQzNCLElBQUksbUJBQVMsQ0FBQyxVQUFVLENBQUMsRUFDekIsSUFBSSxtQkFBUyxDQUFDLFlBQVksQ0FBQyxFQUMzQixJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDLENBQzNCLENBQUM7SUFDRixPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXV0aG9yaXplZCxcbiAgTG9ja3VwLFxuICBQdWJsaWNLZXksXG4gIFN0YWtlUHJvZ3JhbSxcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgTUVNT19QUk9HUkFNX1BLIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXRhSW5pdCxcbiAgSW5zdHJ1Y3Rpb25QYXJhbXMsXG4gIE1lbW8sXG4gIE5vbmNlLFxuICBTdGFraW5nQWN0aXZhdGUsXG4gIFN0YWtpbmdEZWFjdGl2YXRlLFxuICBTdGFraW5nV2l0aGRyYXcsXG4gIFRva2VuVHJhbnNmZXIsXG4gIFRyYW5zZmVyLFxuICBXYWxsZXRJbml0LFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGNvaW5zLCBTb2xDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbiwgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgaW5zdHJ1Y3Rpb25zIGZyb20gaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7SW5zdHJ1Y3Rpb25QYXJhbXN9IGluc3RydWN0aW9uVG9CdWlsZCAtIHRoZSBkYXRhIGNvbnRhaW5pbmcgdGhlIGluc3RydWN0aW9uIHBhcmFtc1xuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uVG9CdWlsZDogSW5zdHJ1Y3Rpb25QYXJhbXMpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBzd2l0Y2ggKGluc3RydWN0aW9uVG9CdWlsZC50eXBlKSB7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U6XG4gICAgICByZXR1cm4gYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW86XG4gICAgICByZXR1cm4gbWVtb0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgIHJldHVybiB0cmFuc2Zlckluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyOlxuICAgICAgcmV0dXJuIHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0luaXRpYWxpemVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgcmV0dXJuIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZUFUQUluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnN0cnVjdGlvbiB0eXBlIG9yIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge05vbmNlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIEFkdmFuY2UgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGFkdmFuY2VOb25jZUluc3RydWN0aW9uKGRhdGE6IE5vbmNlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBhdXRoV2FsbGV0QWRkcmVzcywgd2FsbGV0Tm9uY2VBZGRyZXNzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoYXV0aFdhbGxldEFkZHJlc3MsICdNaXNzaW5nIGF1dGhXYWxsZXRBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydCh3YWxsZXROb25jZUFkZHJlc3MsICdNaXNzaW5nIHdhbGxldE5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBjb25zdCBub25jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoV2FsbGV0QWRkcmVzcyksXG4gIH0pO1xuICByZXR1cm4gW25vbmNlSW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBNZW1vIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge01lbW99IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gbWVtb0luc3RydWN0aW9uKGRhdGE6IE1lbW8pOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChtZW1vLCAnTWlzc2luZyBtZW1vIHBhcmFtJyk7XG4gIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICBrZXlzOiBbXSxcbiAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgfSk7XG4gIHJldHVybiBbbWVtb0luc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNmZXJ9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVHJhbnNmZXIpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCB0b0FkZHJlc3MsIGFtb3VudCB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgdG9BZGRyZXNzIHBhcmFtJyk7XG4gIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBwYXJzZUludChhbW91bnQsIDEwKSxcbiAgfSk7XG4gIHJldHVybiBbdHJhbnNmZXJJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zZmVyfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVG9rZW5UcmFuc2Zlcik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHRvQWRkcmVzcywgYW1vdW50LCB0b2tlbk5hbWUsIHNvdXJjZUFkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgKG93bmVyKSBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGFzc2VydCh0b2tlbk5hbWUsICdNaXNzaW5nIHRva2VuIG5hbWUnKTtcbiAgYXNzZXJ0KHNvdXJjZUFkZHJlc3MsICdNaXNzaW5nIGF0YSBhZGRyZXNzJyk7XG4gIGNvbnN0IHRva2VuID0gY29pbnMuZ2V0KGRhdGEucGFyYW1zLnRva2VuTmFtZSk7XG4gIGFzc2VydCh0b2tlbiBpbnN0YW5jZW9mIFNvbENvaW4pO1xuICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24oXG4gICAgbmV3IFB1YmxpY0tleShzb3VyY2VBZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KHRva2VuLnRva2VuQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIEJpZ0ludChhbW91bnQpLFxuICAgIHRva2VuLmRlY2ltYWxQbGFjZXNcbiAgKTtcbiAgcmV0dXJuIFt0cmFuc2Zlckluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1dhbGxldEluaXR9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVOb25jZUFjY291bnRJbnN0cnVjdGlvbihkYXRhOiBXYWxsZXRJbml0KTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgbm9uY2VBZGRyZXNzLCBhdXRoQWRkcmVzcywgYW1vdW50IH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChub25jZUFkZHJlc3MsICdNaXNzaW5nIG5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXV0aEFkZHJlc3MsICdNaXNzaW5nIGF1dGhBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhbW91bnQsICdNaXNzaW5nIGFtb3VudCBwYXJhbScpO1xuICBjb25zdCBub25jZUFjY291bnRJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0uY3JlYXRlTm9uY2VBY2NvdW50KHtcbiAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGFtb3VudCkudG9OdW1iZXIoKSxcbiAgfSk7XG4gIHJldHVybiBub25jZUFjY291bnRJbnN0cnVjdGlvbi5pbnN0cnVjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IENyZWF0ZSBTdGFraW5nIEFjY291bnQgYW5kIERlbGVnYXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdBY3RpdmF0ZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgU3Rha2luZyBBY2NvdW50IGFuZCBEZWxlZ2F0ZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmZ1bmN0aW9uIHN0YWtpbmdJbml0aWFsaXplSW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ0FjdGl2YXRlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgc3Rha2luZ0FkZHJlc3MsIGFtb3VudCwgdmFsaWRhdG9yIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChzdGFraW5nQWRkcmVzcywgJ01pc3Npbmcgc3Rha2luZ0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGFzc2VydCh2YWxpZGF0b3IsICdNaXNzaW5nIHZhbGlkYXRvciBwYXJhbScpO1xuXG4gIGNvbnN0IGZyb21QdWJrZXkgPSBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKTtcbiAgY29uc3Qgc3Rha2VQdWJrZXkgPSBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKTtcblxuICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbigpO1xuXG4gIGNvbnN0IHdhbGxldEluaXRTdGFraW5nID0gU3Rha2VQcm9ncmFtLmNyZWF0ZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXksXG4gICAgc3Rha2VQdWJrZXksXG4gICAgYXV0aG9yaXplZDogbmV3IEF1dGhvcml6ZWQoZnJvbVB1YmtleSwgZnJvbVB1YmtleSksIC8vIHN0YWtlciBhbmQgd2l0aGRyYXdlclxuICAgIGxvY2t1cDogbmV3IExvY2t1cCgwLCAwLCBmcm9tUHVia2V5KSwgLy8gTG9va3VwIHNldHMgdGhlIG1pbmltdW0gZXBvY2ggdG8gd2l0aGRyYXcsIGJ5IGRlZmF1bHQgaXMgMCwwIHdoaWNoIG1lYW5zIHRoZXJlJ3Mgbm8gbWluaW11bSBsaW1pdFxuICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGFtb3VudCkudG9OdW1iZXIoKSxcbiAgfSk7XG4gIHR4LmFkZCh3YWxsZXRJbml0U3Rha2luZyk7XG5cbiAgY29uc3QgZGVsZWdhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlbGVnYXRlKHtcbiAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgdm90ZVB1YmtleTogbmV3IFB1YmxpY0tleSh2YWxpZGF0b3IpLFxuICB9KTtcbiAgdHguYWRkKGRlbGVnYXRlU3Rha2luZyk7XG5cbiAgcmV0dXJuIHR4Lmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3Qgc3Rha2luZyBkZWFjdGl2YXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdEZWFjdGl2YXRlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIHN0YWtpbmcgZGVhY3RpdmF0ZSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBzdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uKGRhdGE6IFN0YWtpbmdEZWFjdGl2YXRlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgc3Rha2luZ0FkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuXG4gIGNvbnN0IGRlYWN0aXZhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlYWN0aXZhdGUoe1xuICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgfSk7XG5cbiAgcmV0dXJuIGRlYWN0aXZhdGVTdGFraW5nLmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgU3Rha2luZyBXaXRoZHJhdyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtTdGFraW5nV2l0aGRyYXd9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgU3Rha2luZyBXaXRoZHJhdyAgU29sYW5hIGluc3RydWN0aW9uc1xuICovXG5mdW5jdGlvbiBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbihkYXRhOiBTdGFraW5nV2l0aGRyYXcpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBzdGFraW5nQWRkcmVzcywgYW1vdW50IH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChzdGFraW5nQWRkcmVzcywgJ01pc3Npbmcgc3Rha2luZ0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG5cbiAgY29uc3Qgd2l0aGRyYXdTdGFraW5nID0gU3Rha2VQcm9ncmFtLndpdGhkcmF3KHtcbiAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGFtb3VudCkudG9OdW1iZXIoKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHdpdGhkcmF3U3Rha2luZy5pbnN0cnVjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IENyZWF0ZSBhbmQgSW5pdGlhbGl6ZSBOb25jZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtXYWxsZXRJbml0fSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIENyZWF0ZSBhbmQgSW5pdGlhbGl6ZSBOb25jZSBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQVRBSW5zdHJ1Y3Rpb24oZGF0YTogQXRhSW5pdCk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgbWludEFkZHJlc3MsIGF0YUFkZHJlc3MsIG93bmVyQWRkcmVzcywgcGF5ZXJBZGRyZXNzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQobWludEFkZHJlc3MsICdNaXNzaW5nIG1pbnRBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhdGFBZGRyZXNzLCAnTWlzc2luZyBhdGFBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChvd25lckFkZHJlc3MsICdNaXNzaW5nIG93bmVyQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQocGF5ZXJBZGRyZXNzLCAnTWlzc2luZyBwYXllckFkZHJlc3MgcGFyYW0nKTtcblxuICBjb25zdCBhc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24gPSBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24oXG4gICAgbmV3IFB1YmxpY0tleShwYXllckFkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkoYXRhQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleShvd25lckFkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpXG4gICk7XG4gIHJldHVybiBbYXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uXTtcbn1cbiJdfQ==
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zb2xJbnN0cnVjdGlvbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBUXlCO0FBQ3pCLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsMkNBQXVFO0FBYXZFLGlEQUFxRDtBQUNyRCxpREFBOEc7QUFFOUc7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxrQkFBcUM7SUFDekUsUUFBUSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsS0FBSyxtQ0FBdUIsQ0FBQyxZQUFZO1lBQ3ZDLE9BQU8sdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxLQUFLLG1DQUF1QixDQUFDLElBQUk7WUFDL0IsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxLQUFLLG1DQUF1QixDQUFDLFFBQVE7WUFDbkMsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELEtBQUssbUNBQXVCLENBQUMsYUFBYTtZQUN4QyxPQUFPLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsS0FBSyxtQ0FBdUIsQ0FBQyxrQkFBa0I7WUFDN0MsT0FBTyw2QkFBNkIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUQsS0FBSyxtQ0FBdUIsQ0FBQyxpQkFBaUI7WUFDNUMsT0FBTyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEI7WUFDdkQsT0FBTyxvQkFBb0IsQ0FB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USxDQUFDO1FBQzVDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsY0FBYyxDQUFDO1FBQzFDLGdCQUFnQixFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDNUMsUUFBUSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDcEMsUUFBUSxFQUFFLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDM0MsQ0FBQyxDQUFDO0lBRUgsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQUMsSUFBYTtJQUN6QyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEdBQ2hFLEdBQUcsSUFBSSxDQUFDO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQy9DLGdCQUFNLENBQUMsWUFBWSxFQUFFLDRCQUE0QixDQUFDLENBQUM7SUFDbkQsZ0JBQU0sQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztJQUVuRCxNQUFNLGlDQUFpQyxHQUFHLG1EQUF1QyxDQUMvRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDLEVBQzNCLElBQUksbUJBQVMsQ0FBQyxVQUFVLENBQUMsRUFDekIsSUFBSSxtQkFBUyxDQUFDLFlBQVksQ0FBQyxFQUMzQixJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDLENBQzNCLENBQUM7SUFDRixPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXV0aG9yaXplZCxcbiAgTG9ja3VwLFxuICBQdWJsaWNLZXksXG4gIFN0YWtlUHJvZ3JhbSxcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgTUVNT19QUk9HUkFNX1BLIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXRhSW5pdCxcbiAgSW5zdHJ1Y3Rpb25QYXJhbXMsXG4gIE1lbW8sXG4gIE5vbmNlLFxuICBTdGFraW5nQWN0aXZhdGUsXG4gIFN0YWtpbmdEZWFjdGl2YXRlLFxuICBTdGFraW5nV2l0aGRyYXcsXG4gIFRva2VuVHJhbnNmZXIsXG4gIFRyYW5zZmVyLFxuICBXYWxsZXRJbml0LFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGNvaW5zLCBTb2xDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbiwgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgaW5zdHJ1Y3Rpb25zIGZyb20gaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7SW5zdHJ1Y3Rpb25QYXJhbXN9IGluc3RydWN0aW9uVG9CdWlsZCAtIHRoZSBkYXRhIGNvbnRhaW5pbmcgdGhlIGluc3RydWN0aW9uIHBhcmFtc1xuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uVG9CdWlsZDogSW5zdHJ1Y3Rpb25QYXJhbXMpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBzd2l0Y2ggKGluc3RydWN0aW9uVG9CdWlsZC50eXBlKSB7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U6XG4gICAgICByZXR1cm4gYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW86XG4gICAgICByZXR1cm4gbWVtb0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgIHJldHVybiB0cmFuc2Zlckluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyOlxuICAgICAgcmV0dXJuIHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0luaXRpYWxpemVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgcmV0dXJuIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZUFUQUluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnN0cnVjdGlvbiB0eXBlIG9yIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge05vbmNlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIEFkdmFuY2UgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGFkdmFuY2VOb25jZUluc3RydWN0aW9uKGRhdGE6IE5vbmNlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBhdXRoV2FsbGV0QWRkcmVzcywgd2FsbGV0Tm9uY2VBZGRyZXNzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoYXV0aFdhbGxldEFkZHJlc3MsICdNaXNzaW5nIGF1dGhXYWxsZXRBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydCh3YWxsZXROb25jZUFkZHJlc3MsICdNaXNzaW5nIHdhbGxldE5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBjb25zdCBub25jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoV2FsbGV0QWRkcmVzcyksXG4gIH0pO1xuICByZXR1cm4gW25vbmNlSW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBNZW1vIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge01lbW99IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gbWVtb0luc3RydWN0aW9uKGRhdGE6IE1lbW8pOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChtZW1vLCAnTWlzc2luZyBtZW1vIHBhcmFtJyk7XG4gIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICBrZXlzOiBbXSxcbiAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgfSk7XG4gIHJldHVybiBbbWVtb0luc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNmZXJ9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVHJhbnNmZXIpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCB0b0FkZHJlc3MsIGFtb3VudCB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgdG9BZGRyZXNzIHBhcmFtJyk7XG4gIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBwYXJzZUludChhbW91bnQsIDEwKSxcbiAgfSk7XG4gIHJldHVybiBbdHJhbnNmZXJJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zZmVyfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVG9rZW5UcmFuc2Zlcik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHRvQWRkcmVzcywgYW1vdW50LCB0b2tlbk5hbWUsIHNvdXJjZUFkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgKG93bmVyKSBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGFzc2VydCh0b2tlbk5hbWUsICdNaXNzaW5nIHRva2VuIG5hbWUnKTtcbiAgYXNzZXJ0KHNvdXJjZUFkZHJlc3MsICdNaXNzaW5nIGF0YSBhZGRyZXNzJyk7XG4gIGNvbnN0IHRva2VuID0gY29pbnMuZ2V0KGRhdGEucGFyYW1zLnRva2VuTmFtZSk7XG4gIGFzc2VydCh0b2tlbiBpbnN0YW5jZW9mIFNvbENvaW4pO1xuICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24oXG4gICAgbmV3IFB1YmxpY0tleShzb3VyY2VBZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KHRva2VuLnRva2VuQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIEJpZ0ludChhbW91bnQpLFxuICAgIHRva2VuLmRlY2ltYWxQbGFjZXNcbiAgKTtcbiAgcmV0dXJuIFt0cmFuc2Zlckluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1dhbGxldEluaXR9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVOb25jZUFjY291bnRJbnN0cnVjdGlvbihkYXRhOiBXYWxsZXRJbml0KTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgbm9uY2VBZGRyZXNzLCBhdXRoQWRkcmVzcywgYW1vdW50IH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChub25jZUFkZHJlc3MsICdNaXNzaW5nIG5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXV0aEFkZHJlc3MsICdNaXNzaW5nIGF1dGhBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhbW91bnQsICdNaXNzaW5nIGFtb3VudCBwYXJhbScpO1xuICBjb25zdCBub25jZUFjY291bnRJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0uY3JlYXRlTm9uY2VBY2NvdW50KHtcbiAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGFtb3VudCkudG9OdW1iZXIoKSxcbiAgfSk7XG4gIHJldHVybiBub25jZUFjY291bnRJbnN0cnVjdGlvbi5pbnN0cnVjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IENyZWF0ZSBTdGFraW5nIEFjY291bnQgYW5kIERlbGVnYXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdBY3RpdmF0ZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgU3Rha2luZyBBY2NvdW50IGFuZCBEZWxlZ2F0ZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmZ1bmN0aW9uIHN0YWtpbmdJbml0aWFsaXplSW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ0FjdGl2YXRlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgc3Rha2luZ0FkZHJlc3MsIGFtb3VudCwgdmFsaWRhdG9yIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChzdGFraW5nQWRkcmVzcywgJ01pc3Npbmcgc3Rha2luZ0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGFzc2VydCh2YWxpZGF0b3IsICdNaXNzaW5nIHZhbGlkYXRvciBwYXJhbScpO1xuXG4gIGNvbnN0IGZyb21QdWJrZXkgPSBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKTtcbiAgY29uc3Qgc3Rha2VQdWJrZXkgPSBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKTtcblxuICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbigpO1xuXG4gIGNvbnN0IHdhbGxldEluaXRTdGFraW5nID0gU3Rha2VQcm9ncmFtLmNyZWF0ZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXksXG4gICAgc3Rha2VQdWJrZXksXG4gICAgYXV0aG9yaXplZDogbmV3IEF1dGhvcml6ZWQoZnJvbVB1YmtleSwgZnJvbVB1YmtleSksIC8vIHN0YWtlciBhbmQgd2l0aGRyYXdlclxuICAgIGxvY2t1cDogbmV3IExvY2t1cCgwLCAwLCBmcm9tUHVia2V5KSwgLy8gTG9va3VwIHNldHMgdGhlIG1pbmltdW0gZXBvY2ggdG8gd2l0aGRyYXcsIGJ5IGRlZmF1bHQgaXMgMCwwIHdoaWNoIG1lYW5zIHRoZXJlJ3Mgbm8gbWluaW11bSBsaW1pdFxuICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGFtb3VudCkudG9OdW1iZXIoKSxcbiAgfSk7XG4gIHR4LmFkZCh3YWxsZXRJbml0U3Rha2luZyk7XG5cbiAgY29uc3QgZGVsZWdhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlbGVnYXRlKHtcbiAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgdm90ZVB1YmtleTogbmV3IFB1YmxpY0tleSh2YWxpZGF0b3IpLFxuICB9KTtcbiAgdHguYWRkKGRlbGVnYXRlU3Rha2luZyk7XG5cbiAgcmV0dXJuIHR4Lmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3Qgc3Rha2luZyBkZWFjdGl2YXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdEZWFjdGl2YXRlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIHN0YWtpbmcgZGVhY3RpdmF0ZSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBzdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uKGRhdGE6IFN0YWtpbmdEZWFjdGl2YXRlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgc3Rha2luZ0FkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuXG4gIGlmIChkYXRhLnBhcmFtcy5hbW91bnQgJiYgZGF0YS5wYXJhbXMudW5zdGFraW5nQWRkcmVzcykge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKCk7XG5cbiAgICBjb25zdCB1bnN0YWtpbmdBZGRyZXNzID0gbmV3IFB1YmxpY0tleShkYXRhLnBhcmFtcy51bnN0YWtpbmdBZGRyZXNzKTtcbiAgICBjb25zdCBhbGxvY2F0ZUFjY291bnQgPSBTeXN0ZW1Qcm9ncmFtLmFsbG9jYXRlKHtcbiAgICAgIGFjY291bnRQdWJrZXk6IHVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICBzcGFjZTogU3Rha2VQcm9ncmFtLnNwYWNlLFxuICAgIH0pO1xuICAgIHR4LmFkZChhbGxvY2F0ZUFjY291bnQpO1xuXG4gICAgY29uc3QgYXNzaWduQWNjb3VudCA9IFN5c3RlbVByb2dyYW0uYXNzaWduKHtcbiAgICAgIGFjY291bnRQdWJrZXk6IHVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICBwcm9ncmFtSWQ6IFN0YWtlUHJvZ3JhbS5wcm9ncmFtSWQsXG4gICAgfSk7XG4gICAgdHguYWRkKGFzc2lnbkFjY291bnQpO1xuXG4gICAgY29uc3Qgc3BsaXRTdGFrZSA9IFN0YWtlUHJvZ3JhbS5zcGxpdCh7XG4gICAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICAgIHNwbGl0U3Rha2VQdWJrZXk6IHVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihkYXRhLnBhcmFtcy5hbW91bnQpLnRvTnVtYmVyKCksXG4gICAgfSk7XG4gICAgdHguYWRkKHNwbGl0U3Rha2UuaW5zdHJ1Y3Rpb25zWzFdKTtcblxuICAgIGNvbnN0IGRlYWN0aXZhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlYWN0aXZhdGUoe1xuICAgICAgc3Rha2VQdWJrZXk6IHVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB9KTtcbiAgICB0eC5hZGQoZGVhY3RpdmF0ZVN0YWtpbmcpO1xuXG4gICAgcmV0dXJuIHR4Lmluc3RydWN0aW9ucztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZWFjdGl2YXRlU3Rha2luZyA9IFN0YWtlUHJvZ3JhbS5kZWFjdGl2YXRlKHtcbiAgICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlYWN0aXZhdGVTdGFraW5nLmluc3RydWN0aW9ucztcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBTdGFraW5nIFdpdGhkcmF3IFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdXaXRoZHJhd30gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBTdGFraW5nIFdpdGhkcmF3ICBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmZ1bmN0aW9uIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uKGRhdGE6IFN0YWtpbmdXaXRoZHJhdyk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHN0YWtpbmdBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcblxuICBjb25zdCB3aXRoZHJhd1N0YWtpbmcgPSBTdGFrZVByb2dyYW0ud2l0aGRyYXcoe1xuICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcblxuICByZXR1cm4gd2l0aGRyYXdTdGFraW5nLmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1dhbGxldEluaXR9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVBVEFJbnN0cnVjdGlvbihkYXRhOiBBdGFJbml0KTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBtaW50QWRkcmVzcywgYXRhQWRkcmVzcywgb3duZXJBZGRyZXNzLCBwYXllckFkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChtaW50QWRkcmVzcywgJ01pc3NpbmcgbWludEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGF0YUFkZHJlc3MsICdNaXNzaW5nIGF0YUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KG93bmVyQWRkcmVzcywgJ01pc3Npbmcgb3duZXJBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChwYXllckFkZHJlc3MsICdNaXNzaW5nIHBheWVyQWRkcmVzcyBwYXJhbScpO1xuXG4gIGNvbnN0IGFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbiA9IGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICBuZXcgUHVibGljS2V5KHBheWVyQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleShhdGFBZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KG93bmVyQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcylcbiAgKTtcbiAgcmV0dXJuIFthc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb25dO1xufVxuIl19
|