@bitgo-beta/sdk-coin-apt 1.0.1-beta.142 → 1.0.1-beta.1421
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/apt.d.ts +17 -3
- package/dist/src/apt.d.ts.map +1 -1
- package/dist/src/apt.js +47 -14
- package/dist/src/aptNFTCollection.d.ts +18 -0
- package/dist/src/aptNFTCollection.d.ts.map +1 -0
- package/dist/src/aptNFTCollection.js +52 -0
- package/dist/src/aptToken.d.ts +1 -1
- package/dist/src/aptToken.d.ts.map +1 -1
- package/dist/src/aptToken.js +3 -3
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +9 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +11 -2
- package/dist/src/lib/iface.d.ts +95 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +15 -5
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +30 -10
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts +21 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.js +61 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts +13 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.js +23 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.js +39 -0
- package/dist/src/lib/transaction/customTransaction.d.ts +89 -0
- package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/customTransaction.js +278 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.js +48 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.js +24 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.js +43 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts +5 -4
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts.map +1 -1
- package/dist/src/lib/transaction/digitalAssetTransfer.js +20 -33
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts +7 -4
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts.map +1 -1
- package/dist/src/lib/transaction/fungibleAssetTransfer.js +52 -38
- package/dist/src/lib/transaction/transaction.d.ts +22 -4
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +46 -24
- package/dist/src/lib/transaction/transferTransaction.d.ts +7 -4
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transferTransaction.js +43 -37
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts +64 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.js +127 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +3 -2
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +1 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +14 -13
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +6 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -5
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/transferBuilder.js +13 -11
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -7
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +48 -11
- package/dist/src/lib/utils/validation.d.ts +32 -0
- package/dist/src/lib/utils/validation.d.ts.map +1 -0
- package/dist/src/lib/utils/validation.js +99 -0
- package/dist/src/lib/utils.d.ts +22 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +91 -2
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources/apt.d.ts +56 -0
- package/dist/test/resources/apt.d.ts.map +1 -0
- package/dist/test/resources/apt.js +115 -0
- package/dist/test/unit/apt.d.ts +2 -0
- package/dist/test/unit/apt.d.ts.map +1 -0
- package/dist/test/unit/apt.js +360 -0
- package/dist/test/unit/aptToken.d.ts +2 -0
- package/dist/test/unit/aptToken.d.ts.map +1 -0
- package/dist/test/unit/aptToken.js +92 -0
- package/dist/test/unit/customTransaction.test.d.ts +2 -0
- package/dist/test/unit/customTransaction.test.d.ts.map +1 -0
- package/dist/test/unit/customTransaction.test.js +264 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +71 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +743 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +148 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.js +276 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.js +449 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +529 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +108 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +15 -11
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -114
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELEGATION_POOL_WITHDRAW_TX_HEX_SIGNABLE_PAYLOAD = exports.DELEGATION_POOL_UNLOCK_TX_HEX_SIGNABLE_PAYLOAD = exports.DELEGATION_POOL_ADD_STAKE_TX_HEX_SIGNABLE_PAYLOAD = exports.DELEGATION_POOL_WITHDRAW_TX_HEX = exports.DELEGATION_POOL_UNLOCK_TX_HEX = exports.DELEGATION_POOL_ADD_STAKE_TX_HEX = exports.FUNGIBLE_BATCH_SIGNABLE_PAYLOAD = exports.FUNGIBLE_BATCH_RAW_TX_HEX = exports.FUNGIBLE_SERIALIZED_TX_HEX = exports.LEGACY_COIN = exports.digitalAssetAddress = exports.fungibleTokenAddress = exports.INVALID_TRANSFER = exports.COIN_BATCH_TRANSFER = exports.DIGITAL_ASSET_TRANSFER = exports.FUNGIBLE_BATCH_TRANSFER = exports.FUNGIBLE_TOKEN_TRANSFER = exports.TRANSACTION_USING_TRANSFER_COINS = exports.TRANSFER = exports.invalidRecipients = exports.delegationPoolData = exports.digitalTokenRecipients = exports.batchFungibleRecipients = exports.fungibleTokenRecipients = exports.batchRecipients = exports.recipients = exports.feePayer = exports.fungibleSender = exports.sender2 = exports.sender = exports.addresses = exports.FUNGIBLE_TOKEN_AMOUNT = exports.AMOUNT = void 0;
|
|
4
|
+
exports.AMOUNT = 1000;
|
|
5
|
+
exports.FUNGIBLE_TOKEN_AMOUNT = 1;
|
|
6
|
+
exports.addresses = {
|
|
7
|
+
validAddresses: [
|
|
8
|
+
'0xf7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9',
|
|
9
|
+
'0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449',
|
|
10
|
+
],
|
|
11
|
+
invalidAddresses: [
|
|
12
|
+
'randomString',
|
|
13
|
+
'0xc4173a804406a365e69dfb297ddfgsdcvf',
|
|
14
|
+
'5ne7phA48Jrvpn39AtupB8ZkCCAy8gLTfpGihZPuDqen',
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
exports.sender = {
|
|
18
|
+
address: '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449',
|
|
19
|
+
privateKey: '0x54e1a88eb2b881fe6c222985d0fabc9ba3aca35743dd1d19db18a9a355acbaaa',
|
|
20
|
+
publicKey: '0xf73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f66146442',
|
|
21
|
+
};
|
|
22
|
+
exports.sender2 = {
|
|
23
|
+
address: '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449',
|
|
24
|
+
publicKey: '0xf73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f66146442',
|
|
25
|
+
};
|
|
26
|
+
exports.fungibleSender = {
|
|
27
|
+
address: '0xd171f03aa2c3f37d7838b76cdd83da045ecc3f080a1c190f7e412d79485809a0',
|
|
28
|
+
};
|
|
29
|
+
exports.feePayer = {
|
|
30
|
+
address: '0xdbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2',
|
|
31
|
+
privateKey: '0x51a9507d9127841a1465189188d93065cb26bad3bec05d3c8f28e9c1fc35bda0',
|
|
32
|
+
publicKey: '0x5223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff',
|
|
33
|
+
};
|
|
34
|
+
exports.recipients = [
|
|
35
|
+
{
|
|
36
|
+
address: exports.addresses.validAddresses[0],
|
|
37
|
+
amount: exports.AMOUNT.toString(),
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
exports.batchRecipients = [
|
|
41
|
+
{
|
|
42
|
+
address: '0xdd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b849',
|
|
43
|
+
amount: '1000',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
address: '0x2a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf6932',
|
|
47
|
+
amount: '1000',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
exports.fungibleTokenRecipients = [
|
|
51
|
+
{
|
|
52
|
+
address: exports.addresses.validAddresses[0],
|
|
53
|
+
amount: exports.FUNGIBLE_TOKEN_AMOUNT.toString(),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
address: '0xba7af528be58094057170e365a6b5fa836868152a505b2733355dff1d183171e',
|
|
57
|
+
amount: '1',
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
exports.batchFungibleRecipients = [
|
|
61
|
+
{
|
|
62
|
+
address: '0xdd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b849',
|
|
63
|
+
amount: '1',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
address: '0x2a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf6932',
|
|
67
|
+
amount: '1',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
exports.digitalTokenRecipients = [
|
|
71
|
+
{
|
|
72
|
+
address: exports.addresses.validAddresses[0],
|
|
73
|
+
amount: '1',
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
exports.delegationPoolData = {
|
|
77
|
+
validatorAddress: exports.addresses.validAddresses[0],
|
|
78
|
+
amount: exports.AMOUNT.toString(),
|
|
79
|
+
};
|
|
80
|
+
exports.invalidRecipients = [
|
|
81
|
+
{
|
|
82
|
+
address: exports.addresses.invalidAddresses[0],
|
|
83
|
+
amount: exports.AMOUNT.toString(),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
address: exports.addresses.validAddresses[0],
|
|
87
|
+
amount: '-919191',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
address: exports.addresses.validAddresses[0],
|
|
91
|
+
amount: 'invalidAmount',
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
exports.TRANSFER = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a37244992000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e740e7472616e736665725f636f696e73010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d0300000000006400000000000000979390670000000002030020f73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f6614644240caeb90efd4b7ecd922c97bb3163e6a9de1fbb2ee0fc0d56af484f4af9b0015c5831341550af29b3686713b6657c821d894635fe13c7933f06ee043728f040b090000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff4013e7e8a1325ee5f656c93baa3d0206a1d9bd6da5abdc6f5d9b8bbbb0926ddac68f3e57a915dd217d2d43e776a6cc01af72f895ea712acc836d30349f29a3c606';
|
|
95
|
+
exports.TRANSACTION_USING_TRANSFER_COINS = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a37244992000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e740e7472616e736665725f636f696e73010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d0300000000006400000000000000979390670000000002030020f73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f6614644240caeb90efd4b7ecd922c97bb3163e6a9de1fbb2ee0fc0d56af484f4af9b0015c5831341550af29b3686713b6657c821d894635fe13c7933f06ee043728f040b090000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff4013e7e8a1325ee5f656c93baa3d0206a1d9bd6da5abdc6f5d9b8bbbb0926ddac68f3e57a915dd217d2d43e776a6cc01af72f895ea712acc836d30349f29a3c606';
|
|
96
|
+
exports.FUNGIBLE_TOKEN_TRANSFER = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449a700000000000000020000000000000000000000000000000000000000000000000000000000000001167072696d6172795f66756e6769626c655f73746f7265087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f6173736574084d65746164617461000320d5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e3819205020f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9080100000000000000400d0300000000006400000000000000e42696670000000002030020f73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f661464424029665cd4c94658a0d83907bbed7e761794b25bccc03fc87e6dd63a543accdddfd7a6f1e7a15e8681547ca437ff99b58c92f816e35a0f333d7f1fd1330c21ad0a0000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff40de7b0bb86ca346031942e9cf21ff9604c7c08c2c662e38a0afe3dd640512c0441396c0697cd8bbbcf39694d6f88e35f6bed9fb34bd209b0479b5e8bd0cf3eb0b';
|
|
97
|
+
exports.FUNGIBLE_BATCH_TRANSFER = '0xc8f02d25aa698b3e9fbd8a08e8da4c8ee261832a25a4cde8731b5ec356537d0951000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e741e62617463685f7472616e736665725f66756e6769626c655f617373657473000320d5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e381920504102dd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b8492a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf6932110201000000000000000100000000000000400d030000000000640000000000000000255a3ab3010000020300202121dcd098069ae535697dd019cfd8677ca7aba0adac1d1959cbce6dc54b125940d3e7448bafd11924a5d18985310b99a539a7b903961d5c296fdcb314950b4a247fad77bad797a644e59fb76767cf796c207a40ebc3d22fc5c847172ebf09570f0000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff40e242d59712e8e8a213cb6b24ab117854cf12275660dedcb49eb5b22f543bada83f87ca51d5da06a23ac5d4dc6bbfc7745cb44d22467be613565f41b3ba875108';
|
|
98
|
+
exports.DIGITAL_ASSET_TRANSFER = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449ab00000000000000020000000000000000000000000000000000000000000000000000000000000001066f626a656374087472616e736665720107000000000000000000000000000000000000000000000000000000000000000405746f6b656e05546f6b656e0002202e356062777469d39ca5d9b72512ce2d5713d7938ed6ca9193d4fc2016a819fd20f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9400d0300000000006400000000000000526798670000000002030020f73836f42257240e43d439552471fc9dbcc3f1af5bd0b4ed83f44b5f66146442400c2c31eae495d22d1d31031b9756e8238a3df6e760515aa3e1108d93b3aec6aeb91684307e8365ad9dc44c0b5957e95a21a6f47d8d4a6e0eb3b145fb3d517f030000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff40dd6c064e44642819dec2f63d32d6daa4f889d62d06025ad99b42562c4c6cdef8b1437739115d7f38050078829efb9dd05528f53309bcab5b89fadb283423100d';
|
|
99
|
+
exports.COIN_BATCH_TRANSFER = '0xc8f02d25aa698b3e9fbd8a08e8da4c8ee261832a25a4cde8731b5ec356537d0951000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e741462617463685f7472616e736665725f636f696e73010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e00024102dd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b8492a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf69321102e803000000000000e803000000000000400d030000000000640000000000000009d4ea6700000000020300202121dcd098069ae535697dd019cfd8677ca7aba0adac1d1959cbce6dc54b12594047602d08426ce035971e86d57d57fc33a7e9d29da56a87a2e6e9d12ae3b39e25892298fa8b080111c609c9a451264b320236a06a45eab870765f90ffc4a42a030000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f200205223396c531f13e031a9f0cb26d459d799a52e51be9a1cb9e871afb4c31f91ff401d817a641b915727057babb0ddfe6876583ac5c8d4b86b4c91385dc94f071f8e12a4908786a417b2721fa9838dd1bee6e153ca02f78de43161a9810407ea0b0f';
|
|
100
|
+
exports.INVALID_TRANSFER = 'AAAAAAAAAAAAA6e7361637469bc4a58e500b9e64cb6547ee9b403000000000000002064ba1fb2f2fbd2938a350015d601f4db89cd7e8e2370d0dd9ae3ac4f635c1581111b8a49f67370bc4a58e500b9e64cb6462e39b802000000000000002064ba1fb2f2fbd2938a350015d601f4db89cd7e8e2370d0dd9ae3ac47aa1ff81f01c4173a804406a365e69dfb297d4eaaf002546ebd016400000000000000cba4a48bb0f8b586c167e5dcefaa1c5e96ab3f0836d6ca08f2081732944d1e5b6b406a4a462e39b8030000000000000020b9490ede63215262c434e03f606d9799f3ba704523ceda184b386d47aa1ff81f01000000000000006400000000000000';
|
|
101
|
+
exports.fungibleTokenAddress = {
|
|
102
|
+
usdt: '0xd5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e38192050',
|
|
103
|
+
};
|
|
104
|
+
exports.digitalAssetAddress = '0x2e356062777469d39ca5d9b72512ce2d5713d7938ed6ca9193d4fc2016a819fd';
|
|
105
|
+
exports.LEGACY_COIN = '0x4fb379c10c763a13e724064ecfb7d946690bea519ba982c81b518d1c11dd23fe::fa_test::Coinz';
|
|
106
|
+
exports.FUNGIBLE_SERIALIZED_TX_HEX = '0xd171f03aa2c3f37d7838b76cdd83da045ecc3f080a1c190f7e412d79485809a00000000000000000020000000000000000000000000000000000000000000000000000000000000001167072696d6172795f66756e6769626c655f73746f7265087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f6173736574084d65746164617461000320d5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e3819205020ba7af528be58094057170e365a6b5fa836868152a505b2733355dff1d183171e080100000000000000400d0300000000006400000000000000fcaabe670000000002030020000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c14e0894f3334dcd4008447628f3f7e3b5c5200eee399b72c0e63f8e5d09f09600209b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb074000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
107
|
+
exports.FUNGIBLE_BATCH_RAW_TX_HEX = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e741e62617463685f7472616e736665725f66756e6769626c655f617373657473000320d5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e381920504102dd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b8492a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf6932110201000000000000000100000000000000400d03000000000064000000000000008b037d670000000002030020000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2002000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
108
|
+
exports.FUNGIBLE_BATCH_SIGNABLE_PAYLOAD = '5efa3c4f02f83a0f4b2d69fc95c607cc02825cc4e7be536ef0992df050d9e67c011aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e741e62617463685f7472616e736665725f66756e6769626c655f617373657473000320d5d0d561493ea2b9410f67da804653ae44e793c2423707d4f11edb2e381920504102dd52c0b72a73696b867d6571a308c413e43bff8f44956a5991abc4d50db0b8492a81760d52db9a96df2609860218214b6d1012e77e84a3fed5145a9a65bf6932110201000000000000000100000000000000400d03000000000064000000000000008b037d67000000000200dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2';
|
|
109
|
+
exports.DELEGATION_POOL_ADD_STAKE_TX_HEX = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c096164645f7374616b65000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d670000000002030020000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2002000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
110
|
+
exports.DELEGATION_POOL_UNLOCK_TX_HEX = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c06756e6c6f636b000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d670000000002030020000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2002000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
111
|
+
exports.DELEGATION_POOL_WITHDRAW_TX_HEX = '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c087769746864726177000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d670000000002030020000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2002000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
112
|
+
exports.DELEGATION_POOL_ADD_STAKE_TX_HEX_SIGNABLE_PAYLOAD = '5efa3c4f02f83a0f4b2d69fc95c607cc02825cc4e7be536ef0992df050d9e67c011aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c096164645f7374616b65000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d67000000000200dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2';
|
|
113
|
+
exports.DELEGATION_POOL_UNLOCK_TX_HEX_SIGNABLE_PAYLOAD = '5efa3c4f02f83a0f4b2d69fc95c607cc02825cc4e7be536ef0992df050d9e67c011aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c06756e6c6f636b000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d67000000000200dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2';
|
|
114
|
+
exports.DELEGATION_POOL_WITHDRAW_TX_HEX_SIGNABLE_PAYLOAD = '5efa3c4f02f83a0f4b2d69fc95c607cc02825cc4e7be536ef0992df050d9e67c011aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a3724490e000000000000000200000000000000000000000000000000000000000000000000000000000000010f64656c65676174696f6e5f706f6f6c087769746864726177000220f7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad908e803000000000000400d03000000000064000000000000008b037d67000000000200dbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2';
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9yZXNvdXJjZXMvYXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVhLFFBQUEsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNkLFFBQUEscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLGNBQWMsRUFBRTtRQUNkLG9FQUFvRTtRQUNwRSxvRUFBb0U7S0FDckU7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixjQUFjO1FBQ2Qsc0NBQXNDO1FBQ3RDLDhDQUE4QztLQUMvQztDQUNGLENBQUM7QUFFVyxRQUFBLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQUUsb0VBQW9FO0lBQzdFLFVBQVUsRUFBRSxvRUFBb0U7SUFDaEYsU0FBUyxFQUFFLG9FQUFvRTtDQUNoRixDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUc7SUFDckIsT0FBTyxFQUFFLG9FQUFvRTtJQUM3RSxTQUFTLEVBQUUsb0VBQW9FO0NBQ2hGLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRztJQUM1QixPQUFPLEVBQUUsb0VBQW9FO0NBQzlFLENBQUM7QUFFVyxRQUFBLFFBQVEsR0FBRztJQUN0QixPQUFPLEVBQUUsb0VBQW9FO0lBQzdFLFVBQVUsRUFBRSxvRUFBb0U7SUFDaEYsU0FBUyxFQUFFLG9FQUFvRTtDQUNoRixDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQWdCO0lBQ3JDO1FBQ0UsT0FBTyxFQUFFLGlCQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEVBQUUsY0FBTSxDQUFDLFFBQVEsRUFBRTtLQUMxQjtDQUNGLENBQUM7QUFFVyxRQUFBLGVBQWUsR0FBZ0I7SUFDMUM7UUFDRSxPQUFPLEVBQUUsb0VBQW9FO1FBQzdFLE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxvRUFBb0U7UUFDN0UsTUFBTSxFQUFFLE1BQU07S0FDZjtDQUNGLENBQUM7QUFFVyxRQUFBLHVCQUF1QixHQUFnQjtJQUNsRDtRQUNFLE9BQU8sRUFBRSxpQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxFQUFFLDZCQUFxQixDQUFDLFFBQVEsRUFBRTtLQUN6QztJQUNEO1FBQ0UsT0FBTyxFQUFFLG9FQUFvRTtRQUM3RSxNQUFNLEVBQUUsR0FBRztLQUNaO0NBQ0YsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQWdCO0lBQ2xEO1FBQ0UsT0FBTyxFQUFFLG9FQUFvRTtRQUM3RSxNQUFNLEVBQUUsR0FBRztLQUNaO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsb0VBQW9FO1FBQzdFLE1BQU0sRUFBRSxHQUFHO0tBQ1o7Q0FDRixDQUFDO0FBRVcsUUFBQSxzQkFBc0IsR0FBZ0I7SUFDakQ7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxHQUFHO0tBQ1o7Q0FDRixDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxnQkFBZ0IsRUFBRSxpQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLGNBQU0sQ0FBQyxRQUFRLEVBQUU7Q0FDMUIsQ0FBQztBQUVXLFFBQUEsaUJBQWlCLEdBQWdCO0lBQzVDO1FBQ0UsT0FBTyxFQUFFLGlCQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxjQUFNLENBQUMsUUFBUSxFQUFFO0tBQzFCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxTQUFTO0tBQ2xCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxlQUFlO0tBQ3hCO0NBQ0YsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUNuQiwwNUJBQTA1QixDQUFDO0FBRWg1QixRQUFBLGdDQUFnQyxHQUMzQywwNUJBQTA1QixDQUFDO0FBRWg1QixRQUFBLHVCQUF1QixHQUNsQyx3K0JBQXcrQixDQUFDO0FBRTk5QixRQUFBLHVCQUF1QixHQUNsQyxrK0JBQWsrQixDQUFDO0FBRXg5QixRQUFBLHNCQUFzQixHQUNqQyw4NUJBQTg1QixDQUFDO0FBRXA1QixRQUFBLG1CQUFtQixHQUM5QiwwL0JBQTAvQixDQUFDO0FBRWgvQixRQUFBLGdCQUFnQixHQUMzQiwrZkFBK2YsQ0FBQztBQUVyZixRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRSxvRUFBb0U7Q0FDM0UsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFM0YsUUFBQSxXQUFXLEdBQUcsb0ZBQW9GLENBQUM7QUFFbkcsUUFBQSwwQkFBMEIsR0FDckMsdytCQUF3K0IsQ0FBQztBQUU5OUIsUUFBQSx5QkFBeUIsR0FDcEMsaytCQUFrK0IsQ0FBQztBQUV4OUIsUUFBQSwrQkFBK0IsR0FDMUMsa3BCQUFrcEIsQ0FBQztBQUV4b0IsUUFBQSxnQ0FBZ0MsR0FDM0Msc3lCQUFzeUIsQ0FBQztBQUU1eEIsUUFBQSw2QkFBNkIsR0FDeEMsZ3lCQUFneUIsQ0FBQztBQUV0eEIsUUFBQSwrQkFBK0IsR0FDMUMsb3lCQUFveUIsQ0FBQztBQUUxeEIsUUFBQSxpREFBaUQsR0FDNUQsc2RBQXNkLENBQUM7QUFFNWMsUUFBQSw4Q0FBOEMsR0FDekQsZ2RBQWdkLENBQUM7QUFFdGMsUUFBQSxnREFBZ0QsR0FDM0Qsb2RBQW9kLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBTU9VTlQgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IEZVTkdJQkxFX1RPS0VOX0FNT1VOVCA9IDE7XG5cbmV4cG9ydCBjb25zdCBhZGRyZXNzZXMgPSB7XG4gIHZhbGlkQWRkcmVzc2VzOiBbXG4gICAgJzB4Zjc0MDVjMjhhMDJjZjViYWI0ZWE0NDk4MjQwYmIzNTc5ZGI0NTk1MTc5NGViMWM4NDNiZWYwNTM0YzA5M2FkOScsXG4gICAgJzB4MWFlZDgwODkxNmFiOWIxYjMwYjA3YWJiNTM1NjFhZmQ0Njg0NzI4NWNlMjg2NTEyMjFkNDA2MTczYTM3MjQ0OScsXG4gIF0sXG4gIGludmFsaWRBZGRyZXNzZXM6IFtcbiAgICAncmFuZG9tU3RyaW5nJyxcbiAgICAnMHhjNDE3M2E4MDQ0MDZhMzY1ZTY5ZGZiMjk3ZGRmZ3NkY3ZmJyxcbiAgICAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICBdLFxufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRlciA9IHtcbiAgYWRkcmVzczogJzB4MWFlZDgwODkxNmFiOWIxYjMwYjA3YWJiNTM1NjFhZmQ0Njg0NzI4NWNlMjg2NTEyMjFkNDA2MTczYTM3MjQ0OScsXG4gIHByaXZhdGVLZXk6ICcweDU0ZTFhODhlYjJiODgxZmU2YzIyMjk4NWQwZmFiYzliYTNhY2EzNTc0M2RkMWQxOWRiMThhOWEzNTVhY2JhYWEnLFxuICBwdWJsaWNLZXk6ICcweGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDInLFxufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRlcjIgPSB7XG4gIGFkZHJlc3M6ICcweDFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDknLFxuICBwdWJsaWNLZXk6ICcweGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDInLFxufTtcblxuZXhwb3J0IGNvbnN0IGZ1bmdpYmxlU2VuZGVyID0ge1xuICBhZGRyZXNzOiAnMHhkMTcxZjAzYWEyYzNmMzdkNzgzOGI3NmNkZDgzZGEwNDVlY2MzZjA4MGExYzE5MGY3ZTQxMmQ3OTQ4NTgwOWEwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBmZWVQYXllciA9IHtcbiAgYWRkcmVzczogJzB4ZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMicsXG4gIHByaXZhdGVLZXk6ICcweDUxYTk1MDdkOTEyNzg0MWExNDY1MTg5MTg4ZDkzMDY1Y2IyNmJhZDNiZWMwNWQzYzhmMjhlOWMxZmMzNWJkYTAnLFxuICBwdWJsaWNLZXk6ICcweDUyMjMzOTZjNTMxZjEzZTAzMWE5ZjBjYjI2ZDQ1OWQ3OTlhNTJlNTFiZTlhMWNiOWU4NzFhZmI0YzMxZjkxZmYnLFxufTtcblxuZXhwb3J0IGNvbnN0IHJlY2lwaWVudHM6IFJlY2lwaWVudFtdID0gW1xuICB7XG4gICAgYWRkcmVzczogYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgIGFtb3VudDogQU1PVU5ULnRvU3RyaW5nKCksXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgYmF0Y2hSZWNpcGllbnRzOiBSZWNpcGllbnRbXSA9IFtcbiAge1xuICAgIGFkZHJlc3M6ICcweGRkNTJjMGI3MmE3MzY5NmI4NjdkNjU3MWEzMDhjNDEzZTQzYmZmOGY0NDk1NmE1OTkxYWJjNGQ1MGRiMGI4NDknLFxuICAgIGFtb3VudDogJzEwMDAnLFxuICB9LFxuICB7XG4gICAgYWRkcmVzczogJzB4MmE4MTc2MGQ1MmRiOWE5NmRmMjYwOTg2MDIxODIxNGI2ZDEwMTJlNzdlODRhM2ZlZDUxNDVhOWE2NWJmNjkzMicsXG4gICAgYW1vdW50OiAnMTAwMCcsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgZnVuZ2libGVUb2tlblJlY2lwaWVudHM6IFJlY2lwaWVudFtdID0gW1xuICB7XG4gICAgYWRkcmVzczogYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgIGFtb3VudDogRlVOR0lCTEVfVE9LRU5fQU1PVU5ULnRvU3RyaW5nKCksXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiAnMHhiYTdhZjUyOGJlNTgwOTQwNTcxNzBlMzY1YTZiNWZhODM2ODY4MTUyYTUwNWIyNzMzMzU1ZGZmMWQxODMxNzFlJyxcbiAgICBhbW91bnQ6ICcxJyxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBiYXRjaEZ1bmdpYmxlUmVjaXBpZW50czogUmVjaXBpZW50W10gPSBbXG4gIHtcbiAgICBhZGRyZXNzOiAnMHhkZDUyYzBiNzJhNzM2OTZiODY3ZDY1NzFhMzA4YzQxM2U0M2JmZjhmNDQ5NTZhNTk5MWFiYzRkNTBkYjBiODQ5JyxcbiAgICBhbW91bnQ6ICcxJyxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6ICcweDJhODE3NjBkNTJkYjlhOTZkZjI2MDk4NjAyMTgyMTRiNmQxMDEyZTc3ZTg0YTNmZWQ1MTQ1YTlhNjViZjY5MzInLFxuICAgIGFtb3VudDogJzEnLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGRpZ2l0YWxUb2tlblJlY2lwaWVudHM6IFJlY2lwaWVudFtdID0gW1xuICB7XG4gICAgYWRkcmVzczogYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgIGFtb3VudDogJzEnLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRpb25Qb29sRGF0YSA9IHtcbiAgdmFsaWRhdG9yQWRkcmVzczogYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICBhbW91bnQ6IEFNT1VOVC50b1N0cmluZygpLFxufTtcblxuZXhwb3J0IGNvbnN0IGludmFsaWRSZWNpcGllbnRzOiBSZWNpcGllbnRbXSA9IFtcbiAge1xuICAgIGFkZHJlc3M6IGFkZHJlc3Nlcy5pbnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgIGFtb3VudDogQU1PVU5ULnRvU3RyaW5nKCksXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiBhZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgYW1vdW50OiAnLTkxOTE5MScsXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiBhZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgYW1vdW50OiAnaW52YWxpZEFtb3VudCcsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgVFJBTlNGRVIgPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5OTIwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBkNjE3MDc0NmY3MzVmNjE2MzYzNmY3NTZlNzQwZTc0NzI2MTZlNzM2NjY1NzI1ZjYzNmY2OTZlNzMwMTA3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBhNjE3MDc0NmY3MzVmNjM2ZjY5NmUwOTQxNzA3NDZmNzM0MzZmNjk2ZTAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDk3OTM5MDY3MDAwMDAwMDAwMjAzMDAyMGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDI0MGNhZWI5MGVmZDRiN2VjZDkyMmM5N2JiMzE2M2U2YTlkZTFmYmIyZWUwZmMwZDU2YWY0ODRmNGFmOWIwMDE1YzU4MzEzNDE1NTBhZjI5YjM2ODY3MTNiNjY1N2M4MjFkODk0NjM1ZmUxM2M3OTMzZjA2ZWUwNDM3MjhmMDQwYjA5MDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwNTIyMzM5NmM1MzFmMTNlMDMxYTlmMGNiMjZkNDU5ZDc5OWE1MmU1MWJlOWExY2I5ZTg3MWFmYjRjMzFmOTFmZjQwMTNlN2U4YTEzMjVlZTVmNjU2YzkzYmFhM2QwMjA2YTFkOWJkNmRhNWFiZGM2ZjVkOWI4YmJiYjA5MjZkZGFjNjhmM2U1N2E5MTVkZDIxN2QyZDQzZTc3NmE2Y2MwMWFmNzJmODk1ZWE3MTJhY2M4MzZkMzAzNDlmMjlhM2M2MDYnO1xuXG5leHBvcnQgY29uc3QgVFJBTlNBQ1RJT05fVVNJTkdfVFJBTlNGRVJfQ09JTlMgPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5OTIwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBkNjE3MDc0NmY3MzVmNjE2MzYzNmY3NTZlNzQwZTc0NzI2MTZlNzM2NjY1NzI1ZjYzNmY2OTZlNzMwMTA3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBhNjE3MDc0NmY3MzVmNjM2ZjY5NmUwOTQxNzA3NDZmNzM0MzZmNjk2ZTAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDk3OTM5MDY3MDAwMDAwMDAwMjAzMDAyMGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDI0MGNhZWI5MGVmZDRiN2VjZDkyMmM5N2JiMzE2M2U2YTlkZTFmYmIyZWUwZmMwZDU2YWY0ODRmNGFmOWIwMDE1YzU4MzEzNDE1NTBhZjI5YjM2ODY3MTNiNjY1N2M4MjFkODk0NjM1ZmUxM2M3OTMzZjA2ZWUwNDM3MjhmMDQwYjA5MDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwNTIyMzM5NmM1MzFmMTNlMDMxYTlmMGNiMjZkNDU5ZDc5OWE1MmU1MWJlOWExY2I5ZTg3MWFmYjRjMzFmOTFmZjQwMTNlN2U4YTEzMjVlZTVmNjU2YzkzYmFhM2QwMjA2YTFkOWJkNmRhNWFiZGM2ZjVkOWI4YmJiYjA5MjZkZGFjNjhmM2U1N2E5MTVkZDIxN2QyZDQzZTc3NmE2Y2MwMWFmNzJmODk1ZWE3MTJhY2M4MzZkMzAzNDlmMjlhM2M2MDYnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfVE9LRU5fVFJBTlNGRVIgPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5YTcwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTE2NzA3MjY5NmQ2MTcyNzk1ZjY2NzU2ZTY3Njk2MjZjNjU1ZjczNzQ2ZjcyNjUwODc0NzI2MTZlNzM2NjY1NzIwMTA3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBlNjY3NTZlNjc2OTYyNmM2NTVmNjE3MzczNjU3NDA4NGQ2NTc0NjE2NDYxNzQ2MTAwMDMyMGQ1ZDBkNTYxNDkzZWEyYjk0MTBmNjdkYTgwNDY1M2FlNDRlNzkzYzI0MjM3MDdkNGYxMWVkYjJlMzgxOTIwNTAyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwODAxMDAwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMGU0MjY5NjY3MDAwMDAwMDAwMjAzMDAyMGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDI0MDI5NjY1Y2Q0Yzk0NjU4YTBkODM5MDdiYmVkN2U3NjE3OTRiMjViY2NjMDNmYzg3ZTZkZDYzYTU0M2FjY2RkZGZkN2E2ZjFlN2ExNWU4NjgxNTQ3Y2E0MzdmZjk5YjU4YzkyZjgxNmUzNWEwZjMzM2Q3ZjFmZDEzMzBjMjFhZDBhMDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwNTIyMzM5NmM1MzFmMTNlMDMxYTlmMGNiMjZkNDU5ZDc5OWE1MmU1MWJlOWExY2I5ZTg3MWFmYjRjMzFmOTFmZjQwZGU3YjBiYjg2Y2EzNDYwMzE5NDJlOWNmMjFmZjk2MDRjN2MwOGMyYzY2MmUzOGEwYWZlM2RkNjQwNTEyYzA0NDEzOTZjMDY5N2NkOGJiYmNmMzk2OTRkNmY4OGUzNWY2YmVkOWZiMzRiZDIwOWIwNDc5YjVlOGJkMGNmM2ViMGInO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfQkFUQ0hfVFJBTlNGRVIgPVxuICAnMHhjOGYwMmQyNWFhNjk4YjNlOWZiZDhhMDhlOGRhNGM4ZWUyNjE4MzJhMjVhNGNkZTg3MzFiNWVjMzU2NTM3ZDA5NTEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBkNjE3MDc0NmY3MzVmNjE2MzYzNmY3NTZlNzQxZTYyNjE3NDYzNjg1Zjc0NzI2MTZlNzM2NjY1NzI1ZjY2NzU2ZTY3Njk2MjZjNjU1ZjYxNzM3MzY1NzQ3MzAwMDMyMGQ1ZDBkNTYxNDkzZWEyYjk0MTBmNjdkYTgwNDY1M2FlNDRlNzkzYzI0MjM3MDdkNGYxMWVkYjJlMzgxOTIwNTA0MTAyZGQ1MmMwYjcyYTczNjk2Yjg2N2Q2NTcxYTMwOGM0MTNlNDNiZmY4ZjQ0OTU2YTU5OTFhYmM0ZDUwZGIwYjg0OTJhODE3NjBkNTJkYjlhOTZkZjI2MDk4NjAyMTgyMTRiNmQxMDEyZTc3ZTg0YTNmZWQ1MTQ1YTlhNjViZjY5MzIxMTAyMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDAwMjU1YTNhYjMwMTAwMDAwMjAzMDAyMDIxMjFkY2QwOTgwNjlhZTUzNTY5N2RkMDE5Y2ZkODY3N2NhN2FiYTBhZGFjMWQxOTU5Y2JjZTZkYzU0YjEyNTk0MGQzZTc0NDhiYWZkMTE5MjRhNWQxODk4NTMxMGI5OWE1MzlhN2I5MDM5NjFkNWMyOTZmZGNiMzE0OTUwYjRhMjQ3ZmFkNzdiYWQ3OTdhNjQ0ZTU5ZmI3Njc2N2NmNzk2YzIwN2E0MGViYzNkMjJmYzVjODQ3MTcyZWJmMDk1NzBmMDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwNTIyMzM5NmM1MzFmMTNlMDMxYTlmMGNiMjZkNDU5ZDc5OWE1MmU1MWJlOWExY2I5ZTg3MWFmYjRjMzFmOTFmZjQwZTI0MmQ1OTcxMmU4ZThhMjEzY2I2YjI0YWIxMTc4NTRjZjEyMjc1NjYwZGVkY2I0OWViNWIyMmY1NDNiYWRhODNmODdjYTUxZDVkYTA2YTIzYWM1ZDRkYzZiYmZjNzc0NWNiNDRkMjI0NjdiZTYxMzU2NWY0MWIzYmE4NzUxMDgnO1xuXG5leHBvcnQgY29uc3QgRElHSVRBTF9BU1NFVF9UUkFOU0ZFUiA9XG4gICcweDFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDlhYjAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDY2ZjYyNmE2NTYzNzQwODc0NzI2MTZlNzM2NjY1NzIwMTA3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA1NzQ2ZjZiNjU2ZTA1NTQ2ZjZiNjU2ZTAwMDIyMDJlMzU2MDYyNzc3NDY5ZDM5Y2E1ZDliNzI1MTJjZTJkNTcxM2Q3OTM4ZWQ2Y2E5MTkzZDRmYzIwMTZhODE5ZmQyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDk0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDUyNjc5ODY3MDAwMDAwMDAwMjAzMDAyMGY3MzgzNmY0MjI1NzI0MGU0M2Q0Mzk1NTI0NzFmYzlkYmNjM2YxYWY1YmQwYjRlZDgzZjQ0YjVmNjYxNDY0NDI0MDBjMmMzMWVhZTQ5NWQyMmQxZDMxMDMxYjk3NTZlODIzOGEzZGY2ZTc2MDUxNWFhM2UxMTA4ZDkzYjNhZWM2YWViOTE2ODQzMDdlODM2NWFkOWRjNDRjMGI1OTU3ZTk1YTIxYTZmNDdkOGQ0YTZlMGViM2IxNDVmYjNkNTE3ZjAzMDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwNTIyMzM5NmM1MzFmMTNlMDMxYTlmMGNiMjZkNDU5ZDc5OWE1MmU1MWJlOWExY2I5ZTg3MWFmYjRjMzFmOTFmZjQwZGQ2YzA2NGU0NDY0MjgxOWRlYzJmNjNkMzJkNmRhYTRmODg5ZDYyZDA2MDI1YWQ5OWI0MjU2MmM0YzZjZGVmOGIxNDM3NzM5MTE1ZDdmMzgwNTAwNzg4MjllZmI5ZGQwNTUyOGY1MzMwOWJjYWI1Yjg5ZmFkYjI4MzQyMzEwMGQnO1xuXG5leHBvcnQgY29uc3QgQ09JTl9CQVRDSF9UUkFOU0ZFUiA9XG4gICcweGM4ZjAyZDI1YWE2OThiM2U5ZmJkOGEwOGU4ZGE0YzhlZTI2MTgzMmEyNWE0Y2RlODczMWI1ZWMzNTY1MzdkMDk1MTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMGQ2MTcwNzQ2ZjczNWY2MTYzNjM2Zjc1NmU3NDE0NjI2MTc0NjM2ODVmNzQ3MjYxNmU3MzY2NjU3MjVmNjM2ZjY5NmU3MzAxMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMGE2MTcwNzQ2ZjczNWY2MzZmNjk2ZTA5NDE3MDc0NmY3MzQzNmY2OTZlMDAwMjQxMDJkZDUyYzBiNzJhNzM2OTZiODY3ZDY1NzFhMzA4YzQxM2U0M2JmZjhmNDQ5NTZhNTk5MWFiYzRkNTBkYjBiODQ5MmE4MTc2MGQ1MmRiOWE5NmRmMjYwOTg2MDIxODIxNGI2ZDEwMTJlNzdlODRhM2ZlZDUxNDVhOWE2NWJmNjkzMjExMDJlODAzMDAwMDAwMDAwMDAwZTgwMzAwMDAwMDAwMDAwMDQwMGQwMzAwMDAwMDAwMDA2NDAwMDAwMDAwMDAwMDAwMDlkNGVhNjcwMDAwMDAwMDAyMDMwMDIwMjEyMWRjZDA5ODA2OWFlNTM1Njk3ZGQwMTljZmQ4Njc3Y2E3YWJhMGFkYWMxZDE5NTljYmNlNmRjNTRiMTI1OTQwNDc2MDJkMDg0MjZjZTAzNTk3MWU4NmQ1N2Q1N2ZjMzNhN2U5ZDI5ZGE1NmE4N2EyZTZlOWQxMmFlM2IzOWUyNTg5MjI5OGZhOGIwODAxMTFjNjA5YzlhNDUxMjY0YjMyMDIzNmEwNmE0NWVhYjg3MDc2NWY5MGZmYzRhNDJhMDMwMDAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMjAwMjA1MjIzMzk2YzUzMWYxM2UwMzFhOWYwY2IyNmQ0NTlkNzk5YTUyZTUxYmU5YTFjYjllODcxYWZiNGMzMWY5MWZmNDAxZDgxN2E2NDFiOTE1NzI3MDU3YmFiYjBkZGZlNjg3NjU4M2FjNWM4ZDRiODZiNGM5MTM4NWRjOTRmMDcxZjhlMTJhNDkwODc4NmE0MTdiMjcyMWZhOTgzOGRkMWJlZTZlMTUzY2EwMmY3OGRlNDMxNjFhOTgxMDQwN2VhMGIwZic7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX1RSQU5TRkVSID1cbiAgJ0FBQUFBQUFBQUFBQUE2ZTczNjE2Mzc0NjliYzRhNThlNTAwYjllNjRjYjY1NDdlZTliNDAzMDAwMDAwMDAwMDAwMDAyMDY0YmExZmIyZjJmYmQyOTM4YTM1MDAxNWQ2MDFmNGRiODljZDdlOGUyMzcwZDBkZDlhZTNhYzRmNjM1YzE1ODExMTFiOGE0OWY2NzM3MGJjNGE1OGU1MDBiOWU2NGNiNjQ2MmUzOWI4MDIwMDAwMDAwMDAwMDAwMDIwNjRiYTFmYjJmMmZiZDI5MzhhMzUwMDE1ZDYwMWY0ZGI4OWNkN2U4ZTIzNzBkMGRkOWFlM2FjNDdhYTFmZjgxZjAxYzQxNzNhODA0NDA2YTM2NWU2OWRmYjI5N2Q0ZWFhZjAwMjU0NmViZDAxNjQwMDAwMDAwMDAwMDAwMGNiYTRhNDhiYjBmOGI1ODZjMTY3ZTVkY2VmYWExYzVlOTZhYjNmMDgzNmQ2Y2EwOGYyMDgxNzMyOTQ0ZDFlNWI2YjQwNmE0YTQ2MmUzOWI4MDMwMDAwMDAwMDAwMDAwMDIwYjk0OTBlZGU2MzIxNTI2MmM0MzRlMDNmNjA2ZDk3OTlmM2JhNzA0NTIzY2VkYTE4NGIzODZkNDdhYTFmZjgxZjAxMDAwMDAwMDAwMDAwMDA2NDAwMDAwMDAwMDAwMDAwJztcblxuZXhwb3J0IGNvbnN0IGZ1bmdpYmxlVG9rZW5BZGRyZXNzID0ge1xuICB1c2R0OiAnMHhkNWQwZDU2MTQ5M2VhMmI5NDEwZjY3ZGE4MDQ2NTNhZTQ0ZTc5M2MyNDIzNzA3ZDRmMTFlZGIyZTM4MTkyMDUwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBkaWdpdGFsQXNzZXRBZGRyZXNzID0gJzB4MmUzNTYwNjI3Nzc0NjlkMzljYTVkOWI3MjUxMmNlMmQ1NzEzZDc5MzhlZDZjYTkxOTNkNGZjMjAxNmE4MTlmZCc7XG5cbmV4cG9ydCBjb25zdCBMRUdBQ1lfQ09JTiA9ICcweDRmYjM3OWMxMGM3NjNhMTNlNzI0MDY0ZWNmYjdkOTQ2NjkwYmVhNTE5YmE5ODJjODFiNTE4ZDFjMTFkZDIzZmU6OmZhX3Rlc3Q6OkNvaW56JztcblxuZXhwb3J0IGNvbnN0IEZVTkdJQkxFX1NFUklBTElaRURfVFhfSEVYID1cbiAgJzB4ZDE3MWYwM2FhMmMzZjM3ZDc4MzhiNzZjZGQ4M2RhMDQ1ZWNjM2YwODBhMWMxOTBmN2U0MTJkNzk0ODU4MDlhMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExNjcwNzI2OTZkNjE3Mjc5NWY2Njc1NmU2NzY5NjI2YzY1NWY3Mzc0NmY3MjY1MDg3NDcyNjE2ZTczNjY2NTcyMDEwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwZTY2NzU2ZTY3Njk2MjZjNjU1ZjYxNzM3MzY1NzQwODRkNjU3NDYxNjQ2MTc0NjEwMDAzMjBkNWQwZDU2MTQ5M2VhMmI5NDEwZjY3ZGE4MDQ2NTNhZTQ0ZTc5M2MyNDIzNzA3ZDRmMTFlZGIyZTM4MTkyMDUwMjBiYTdhZjUyOGJlNTgwOTQwNTcxNzBlMzY1YTZiNWZhODM2ODY4MTUyYTUwNWIyNzMzMzU1ZGZmMWQxODMxNzFlMDgwMTAwMDAwMDAwMDAwMDAwNDAwZDAzMDAwMDAwMDAwMDY0MDAwMDAwMDAwMDAwMDBmY2FhYmU2NzAwMDAwMDAwMDIwMzAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMTRlMDg5NGYzMzM0ZGNkNDAwODQ0NzYyOGYzZjdlM2I1YzUyMDBlZWUzOTliNzJjMGU2M2Y4ZTVkMDlmMDk2MDAyMDliNGU5NjA4NmQxMTE1MDAyNTlmOWIzODY4MGIwNTA5YTQwNWMxOTA0ZGExODk3NjQ1NWEyMGM2OTFkM2JiMDc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuZXhwb3J0IGNvbnN0IEZVTkdJQkxFX0JBVENIX1JBV19UWF9IRVggPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5MGUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBkNjE3MDc0NmY3MzVmNjE2MzYzNmY3NTZlNzQxZTYyNjE3NDYzNjg1Zjc0NzI2MTZlNzM2NjY1NzI1ZjY2NzU2ZTY3Njk2MjZjNjU1ZjYxNzM3MzY1NzQ3MzAwMDMyMGQ1ZDBkNTYxNDkzZWEyYjk0MTBmNjdkYTgwNDY1M2FlNDRlNzkzYzI0MjM3MDdkNGYxMWVkYjJlMzgxOTIwNTA0MTAyZGQ1MmMwYjcyYTczNjk2Yjg2N2Q2NTcxYTMwOGM0MTNlNDNiZmY4ZjQ0OTU2YTU5OTFhYmM0ZDUwZGIwYjg0OTJhODE3NjBkNTJkYjlhOTZkZjI2MDk4NjAyMTgyMTRiNmQxMDEyZTc3ZTg0YTNmZWQ1MTQ1YTlhNjViZjY5MzIxMTAyMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAzMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfQkFUQ0hfU0lHTkFCTEVfUEFZTE9BRCA9XG4gICc1ZWZhM2M0ZjAyZjgzYTBmNGIyZDY5ZmM5NWM2MDdjYzAyODI1Y2M0ZTdiZTUzNmVmMDk5MmRmMDUwZDllNjdjMDExYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5MGUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBkNjE3MDc0NmY3MzVmNjE2MzYzNmY3NTZlNzQxZTYyNjE3NDYzNjg1Zjc0NzI2MTZlNzM2NjY1NzI1ZjY2NzU2ZTY3Njk2MjZjNjU1ZjYxNzM3MzY1NzQ3MzAwMDMyMGQ1ZDBkNTYxNDkzZWEyYjk0MTBmNjdkYTgwNDY1M2FlNDRlNzkzYzI0MjM3MDdkNGYxMWVkYjJlMzgxOTIwNTA0MTAyZGQ1MmMwYjcyYTczNjk2Yjg2N2Q2NTcxYTMwOGM0MTNlNDNiZmY4ZjQ0OTU2YTU5OTFhYmM0ZDUwZGIwYjg0OTJhODE3NjBkNTJkYjlhOTZkZjI2MDk4NjAyMTgyMTRiNmQxMDEyZTc3ZTg0YTNmZWQ1MTQ1YTlhNjViZjY5MzIxMTAyMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMic7XG5cbmV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1BPT0xfQUREX1NUQUtFX1RYX0hFWCA9XG4gICcweDFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDkwZTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMGY2NDY1NmM2NTY3NjE3NDY5NmY2ZTVmNzA2ZjZmNmMwOTYxNjQ2NDVmNzM3NDYxNmI2NTAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAzMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjIwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuXG5leHBvcnQgY29uc3QgREVMRUdBVElPTl9QT09MX1VOTE9DS19UWF9IRVggPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5MGUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBmNjQ2NTZjNjU2NzYxNzQ2OTZmNmU1ZjcwNmY2ZjZjMDY3NTZlNmM2ZjYzNmIwMDAyMjBmNzQwNWMyOGEwMmNmNWJhYjRlYTQ0OTgyNDBiYjM1NzlkYjQ1OTUxNzk0ZWIxYzg0M2JlZjA1MzRjMDkzYWQ5MDhlODAzMDAwMDAwMDAwMDAwNDAwZDAzMDAwMDAwMDAwMDY0MDAwMDAwMDAwMDAwMDA4YjAzN2Q2NzAwMDAwMDAwMDIwMzAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkYmM4N2ExYzgxNmQ5YmNkMDZiNjgzYzM3ZTgwYzcxNjJlNGQ0OGRhNzgxMjE5OGI4MzBlNGQ1ZDhlMDYyOWYyMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuZXhwb3J0IGNvbnN0IERFTEVHQVRJT05fUE9PTF9XSVRIRFJBV19UWF9IRVggPVxuICAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5MGUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBmNjQ2NTZjNjU2NzYxNzQ2OTZmNmU1ZjcwNmY2ZjZjMDg3NzY5NzQ2ODY0NzI2MTc3MDAwMjIwZjc0MDVjMjhhMDJjZjViYWI0ZWE0NDk4MjQwYmIzNTc5ZGI0NTk1MTc5NGViMWM4NDNiZWYwNTM0YzA5M2FkOTA4ZTgwMzAwMDAwMDAwMDAwMDQwMGQwMzAwMDAwMDAwMDA2NDAwMDAwMDAwMDAwMDAwOGIwMzdkNjcwMDAwMDAwMDAyMDMwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMjAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbmV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1BPT0xfQUREX1NUQUtFX1RYX0hFWF9TSUdOQUJMRV9QQVlMT0FEID1cbiAgJzVlZmEzYzRmMDJmODNhMGY0YjJkNjlmYzk1YzYwN2NjMDI4MjVjYzRlN2JlNTM2ZWYwOTkyZGYwNTBkOWU2N2MwMTFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDkwZTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMGY2NDY1NmM2NTY3NjE3NDY5NmY2ZTVmNzA2ZjZmNmMwOTYxNjQ2NDVmNzM3NDYxNmI2NTAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMic7XG5cbmV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1BPT0xfVU5MT0NLX1RYX0hFWF9TSUdOQUJMRV9QQVlMT0FEID1cbiAgJzVlZmEzYzRmMDJmODNhMGY0YjJkNjlmYzk1YzYwN2NjMDI4MjVjYzRlN2JlNTM2ZWYwOTkyZGYwNTBkOWU2N2MwMTFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDkwZTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMGY2NDY1NmM2NTY3NjE3NDY5NmY2ZTVmNzA2ZjZmNmMwNjc1NmU2YzZmNjM2YjAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMic7XG5cbmV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1BPT0xfV0lUSERSQVdfVFhfSEVYX1NJR05BQkxFX1BBWUxPQUQgPVxuICAnNWVmYTNjNGYwMmY4M2EwZjRiMmQ2OWZjOTVjNjA3Y2MwMjgyNWNjNGU3YmU1MzZlZjA5OTJkZjA1MGQ5ZTY3YzAxMWFlZDgwODkxNmFiOWIxYjMwYjA3YWJiNTM1NjFhZmQ0Njg0NzI4NWNlMjg2NTEyMjFkNDA2MTczYTM3MjQ0OTBlMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwZjY0NjU2YzY1Njc2MTc0Njk2ZjZlNWY3MDZmNmY2YzA4Nzc2OTc0Njg2NDcyNjE3NzAwMDIyMGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDkwOGU4MDMwMDAwMDAwMDAwMDA0MDBkMDMwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDhiMDM3ZDY3MDAwMDAwMDAwMjAwZGJjODdhMWM4MTZkOWJjZDA2YjY4M2MzN2U4MGM3MTYyZTRkNDhkYTc4MTIxOThiODMwZTRkNWQ4ZTA2MjlmMic7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apt.d.ts","sourceRoot":"","sources":["../../../test/unit/apt.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
require("should");
|
|
40
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
41
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
42
|
+
const src_1 = require("../../src");
|
|
43
|
+
const testData = __importStar(require("../resources/apt"));
|
|
44
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
45
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
46
|
+
const assert_1 = __importDefault(require("assert"));
|
|
47
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
48
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
49
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
50
|
+
const delegationPoolAddStakeTransaction_1 = require("../../src/lib/transaction/delegationPoolAddStakeTransaction");
|
|
51
|
+
describe('APT:', function () {
|
|
52
|
+
let bitgo;
|
|
53
|
+
let basecoin;
|
|
54
|
+
let newTxPrebuild;
|
|
55
|
+
let newTxParams;
|
|
56
|
+
const txPreBuild = {
|
|
57
|
+
txHex: testData.TRANSACTION_USING_TRANSFER_COINS,
|
|
58
|
+
txInfo: {},
|
|
59
|
+
};
|
|
60
|
+
const txParams = {
|
|
61
|
+
recipients: testData.recipients,
|
|
62
|
+
};
|
|
63
|
+
const batchFungibleTxPrebuild = {
|
|
64
|
+
txHex: testData.FUNGIBLE_BATCH_RAW_TX_HEX,
|
|
65
|
+
txInfo: {},
|
|
66
|
+
};
|
|
67
|
+
const batchFungibleTxParams = {
|
|
68
|
+
recipients: testData.batchFungibleRecipients,
|
|
69
|
+
type: 'transfer',
|
|
70
|
+
};
|
|
71
|
+
before(function () {
|
|
72
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
73
|
+
bitgo.safeRegister('apt', src_1.Apt.createInstance);
|
|
74
|
+
bitgo.safeRegister('tapt', src_1.Tapt.createInstance);
|
|
75
|
+
bitgo.safeRegister('apt:usdt', src_1.AptToken.createInstance);
|
|
76
|
+
bitgo.initializeTestVars();
|
|
77
|
+
basecoin = bitgo.coin('tapt');
|
|
78
|
+
newTxPrebuild = () => {
|
|
79
|
+
return lodash_1.default.cloneDeep(txPreBuild);
|
|
80
|
+
};
|
|
81
|
+
newTxParams = () => {
|
|
82
|
+
return lodash_1.default.cloneDeep(txParams);
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
it('should return the right info', function () {
|
|
86
|
+
const apt = bitgo.coin('apt');
|
|
87
|
+
const tapt = bitgo.coin('tapt');
|
|
88
|
+
const aptUsdt = bitgo.coin('apt:usdt');
|
|
89
|
+
const aptStatics = statics_1.coins.get('apt');
|
|
90
|
+
const taptStatics = statics_1.coins.get('tapt');
|
|
91
|
+
apt.getChain().should.equal('apt');
|
|
92
|
+
apt.getFamily().should.equal('apt');
|
|
93
|
+
apt.getFullName().should.equal('Aptos');
|
|
94
|
+
apt.getBaseFactor().should.equal(1e8);
|
|
95
|
+
tapt.getChain().should.equal('tapt');
|
|
96
|
+
tapt.getFamily().should.equal('apt');
|
|
97
|
+
tapt.getFullName().should.equal('Testnet Aptos');
|
|
98
|
+
tapt.getBaseFactor().should.equal(1e8);
|
|
99
|
+
aptStatics.gasTankLowBalanceAlertFactor.should.equal(80);
|
|
100
|
+
taptStatics.gasTankLowBalanceAlertFactor.should.equal(80);
|
|
101
|
+
aptStatics.gasTankMinBalanceRecommendationFactor.should.equal(200);
|
|
102
|
+
taptStatics.gasTankMinBalanceRecommendationFactor.should.equal(200);
|
|
103
|
+
aptUsdt.getFamily().should.equal('apt');
|
|
104
|
+
aptUsdt.getChain().should.equal('apt');
|
|
105
|
+
const aptUsdtStatics = aptUsdt.getConfig();
|
|
106
|
+
aptUsdtStatics.fullName.should.equal('USD Tether');
|
|
107
|
+
aptUsdtStatics.assetId.should.equal('0x357b0b74bc833e95a115ad22604854d6b0fca151cecd94111770e5d6ffc9dc2b');
|
|
108
|
+
aptUsdtStatics.decimalPlaces.should.equal(6);
|
|
109
|
+
});
|
|
110
|
+
it('is valid pub', function () {
|
|
111
|
+
// with 0x prefix
|
|
112
|
+
basecoin.isValidPub('0x9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07').should.equal(false);
|
|
113
|
+
// without 0x prefix
|
|
114
|
+
basecoin.isValidPub('9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07').should.equal(true);
|
|
115
|
+
});
|
|
116
|
+
describe('Verify transaction: ', () => {
|
|
117
|
+
it('should succeed to verify transaction', async function () {
|
|
118
|
+
const txPrebuild = newTxPrebuild();
|
|
119
|
+
const txParams = newTxParams();
|
|
120
|
+
const verification = {};
|
|
121
|
+
const isTransactionVerified = await basecoin.verifyTransaction({ txParams, txPrebuild, verification });
|
|
122
|
+
isTransactionVerified.should.equal(true);
|
|
123
|
+
});
|
|
124
|
+
it('should succeed to verify fungible transaction', async function () {
|
|
125
|
+
const verification = {};
|
|
126
|
+
const isTransactionVerified = await basecoin.verifyTransaction({
|
|
127
|
+
txPrebuild: batchFungibleTxPrebuild,
|
|
128
|
+
txParams: batchFungibleTxParams,
|
|
129
|
+
verification,
|
|
130
|
+
});
|
|
131
|
+
isTransactionVerified.should.equal(true);
|
|
132
|
+
});
|
|
133
|
+
it('should succeed to verify transaction when recipients amount are numbers', async function () {
|
|
134
|
+
const txPrebuild = newTxPrebuild();
|
|
135
|
+
const txParamsWithNumberAmounts = newTxParams();
|
|
136
|
+
txParamsWithNumberAmounts.recipients = txParamsWithNumberAmounts.recipients.map(({ address, amount }) => {
|
|
137
|
+
return { address, amount: Number(amount) };
|
|
138
|
+
});
|
|
139
|
+
const verification = {};
|
|
140
|
+
const isTransactionVerified = await basecoin.verifyTransaction({
|
|
141
|
+
txParams: txParamsWithNumberAmounts,
|
|
142
|
+
txPrebuild,
|
|
143
|
+
verification,
|
|
144
|
+
});
|
|
145
|
+
isTransactionVerified.should.equal(true);
|
|
146
|
+
});
|
|
147
|
+
it('should fail to verify transaction with invalid param', async function () {
|
|
148
|
+
const txPrebuild = {};
|
|
149
|
+
const txParams = newTxParams();
|
|
150
|
+
txParams.recipients = undefined;
|
|
151
|
+
await basecoin
|
|
152
|
+
.verifyTransaction({
|
|
153
|
+
txParams,
|
|
154
|
+
txPrebuild,
|
|
155
|
+
})
|
|
156
|
+
.should.rejectedWith('missing required tx prebuild property txHex');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('Parse and Explain Transactions: ', () => {
|
|
160
|
+
const transferInputsResponse = [
|
|
161
|
+
{
|
|
162
|
+
address: testData.sender2.address,
|
|
163
|
+
amount: testData.AMOUNT.toString(),
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
const transferOutputsResponse = [
|
|
167
|
+
{
|
|
168
|
+
address: testData.recipients[0].address,
|
|
169
|
+
amount: testData.recipients[0].amount,
|
|
170
|
+
},
|
|
171
|
+
];
|
|
172
|
+
const transferFungibleInputResponse = [
|
|
173
|
+
{
|
|
174
|
+
address: testData.fungibleSender.address,
|
|
175
|
+
amount: testData.FUNGIBLE_TOKEN_AMOUNT.toString(),
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
const tranferFungibleOutputResponse = [
|
|
179
|
+
{
|
|
180
|
+
address: testData.fungibleTokenRecipients[1].address,
|
|
181
|
+
amount: testData.fungibleTokenRecipients[1].amount,
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
it('should parse a transfer transaction', async function () {
|
|
185
|
+
const parsedTransaction = await basecoin.parseTransaction({
|
|
186
|
+
txHex: testData.TRANSACTION_USING_TRANSFER_COINS,
|
|
187
|
+
});
|
|
188
|
+
parsedTransaction.should.deepEqual({
|
|
189
|
+
inputs: transferInputsResponse,
|
|
190
|
+
outputs: transferOutputsResponse,
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
it('should parse signed fungible transaction, only work if amount parsing correctly done from payload', async function () {
|
|
194
|
+
const parsedTransaction = await basecoin.parseTransaction({
|
|
195
|
+
txHex: testData.FUNGIBLE_SERIALIZED_TX_HEX,
|
|
196
|
+
});
|
|
197
|
+
parsedTransaction.should.deepEqual({
|
|
198
|
+
inputs: transferFungibleInputResponse,
|
|
199
|
+
outputs: tranferFungibleOutputResponse,
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
it('should explain a transfer transaction', async function () {
|
|
203
|
+
const rawTx = newTxPrebuild().txHex;
|
|
204
|
+
const transaction = new src_1.TransferTransaction(statics_1.coins.get('tapt'));
|
|
205
|
+
transaction.fromRawTransaction(rawTx);
|
|
206
|
+
const explainedTx = transaction.explainTransaction();
|
|
207
|
+
console.log(explainedTx);
|
|
208
|
+
explainedTx.should.deepEqual({
|
|
209
|
+
displayOrder: [
|
|
210
|
+
'id',
|
|
211
|
+
'outputs',
|
|
212
|
+
'outputAmount',
|
|
213
|
+
'changeOutputs',
|
|
214
|
+
'changeAmount',
|
|
215
|
+
'fee',
|
|
216
|
+
'withdrawAmount',
|
|
217
|
+
'sender',
|
|
218
|
+
'type',
|
|
219
|
+
],
|
|
220
|
+
id: '0x249289a8178e4b9cdb89fad6e8e436ccc435753e4ea3c9d50e0c8b525582e90d',
|
|
221
|
+
outputs: [
|
|
222
|
+
{
|
|
223
|
+
address: '0xf7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9',
|
|
224
|
+
amount: '1000',
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
outputAmount: '1000',
|
|
228
|
+
changeOutputs: [],
|
|
229
|
+
changeAmount: '0',
|
|
230
|
+
fee: { fee: '0' },
|
|
231
|
+
sender: '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449',
|
|
232
|
+
type: 0,
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
it('should explain a staking delegate transaction', async function () {
|
|
236
|
+
const rawTx = testData.DELEGATION_POOL_ADD_STAKE_TX_HEX;
|
|
237
|
+
const transaction = new delegationPoolAddStakeTransaction_1.DelegationPoolAddStakeTransaction(statics_1.coins.get('tapt'));
|
|
238
|
+
transaction.fromRawTransaction(rawTx);
|
|
239
|
+
const explainedTx = transaction.explainTransaction();
|
|
240
|
+
explainedTx.should.deepEqual({
|
|
241
|
+
displayOrder: [
|
|
242
|
+
'id',
|
|
243
|
+
'outputs',
|
|
244
|
+
'outputAmount',
|
|
245
|
+
'changeOutputs',
|
|
246
|
+
'changeAmount',
|
|
247
|
+
'fee',
|
|
248
|
+
'withdrawAmount',
|
|
249
|
+
'sender',
|
|
250
|
+
'type',
|
|
251
|
+
],
|
|
252
|
+
id: '0xc5b960d1bec149c77896344774352c61441307af564eaa8c84f857208e411bf3',
|
|
253
|
+
outputs: [
|
|
254
|
+
{
|
|
255
|
+
address: '0xf7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9',
|
|
256
|
+
amount: '1000',
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
outputAmount: '1000',
|
|
260
|
+
changeOutputs: [],
|
|
261
|
+
changeAmount: '0',
|
|
262
|
+
fee: { fee: '0' },
|
|
263
|
+
sender: '0x1aed808916ab9b1b30b07abb53561afd46847285ce28651221d406173a372449',
|
|
264
|
+
type: 30,
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
it('should fail to explain a invalid raw transaction', async function () {
|
|
268
|
+
const rawTx = 'invalidRawTransaction';
|
|
269
|
+
const transaction = new src_1.TransferTransaction(statics_1.coins.get('tapt'));
|
|
270
|
+
await assert_1.default.rejects(async () => transaction.fromRawTransaction(rawTx), {
|
|
271
|
+
message: 'invalid raw transaction',
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
it('should fail to parse a transfer transaction when explainTransaction response is undefined', async function () {
|
|
275
|
+
const stub = sinon_1.default.stub(src_1.Apt.prototype, 'explainTransaction');
|
|
276
|
+
stub.resolves(undefined);
|
|
277
|
+
await basecoin.parseTransaction({ txHex: testData.TRANSFER }).should.be.rejectedWith('Invalid transaction');
|
|
278
|
+
stub.restore();
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
describe('Address Validation', () => {
|
|
282
|
+
const testData = {
|
|
283
|
+
commonKeychain: '6a724c11eafea4209704c35e6ee3e1fba80d2a40860d873bbe5981de636c9cf6ade77e6fdd4388889ee93d7eaa737ab584edb57cc0cc15b2899380348d6e482c',
|
|
284
|
+
rootAddress: '0x0598b31aa77176dbaba25306404aa8131218068df58bf0b7eec13f57053fd5a7',
|
|
285
|
+
receiveAddress: '0xdc169725dd6d9a07ee255b17087b4079e8a80850c895c65b62c0ef6de740d37a',
|
|
286
|
+
receiveAddressIndex: 1,
|
|
287
|
+
};
|
|
288
|
+
const keychains = [
|
|
289
|
+
{ commonKeychain: testData.commonKeychain },
|
|
290
|
+
{ commonKeychain: testData.commonKeychain },
|
|
291
|
+
{ commonKeychain: testData.commonKeychain },
|
|
292
|
+
];
|
|
293
|
+
it('should return true when validating a well formatted address prefixed with 0x', async function () {
|
|
294
|
+
const address = '0xf941ae3cbe5645dccc15da8346b533f7f91f202089a5521653c062b2ff10b304';
|
|
295
|
+
basecoin.isValidAddress(address).should.equal(true);
|
|
296
|
+
});
|
|
297
|
+
it('should return false when validating an old address', async function () {
|
|
298
|
+
const address = '0x2959bfc3fdb7dc23fed8deba2fafb70f3e606a59';
|
|
299
|
+
basecoin.isValidAddress(address).should.equal(false);
|
|
300
|
+
});
|
|
301
|
+
it('should return false when validating an incorrectly formatted', async function () {
|
|
302
|
+
const address = 'wrongaddress';
|
|
303
|
+
basecoin.isValidAddress(address).should.equal(false);
|
|
304
|
+
});
|
|
305
|
+
it('should verify a valid receive address', async function () {
|
|
306
|
+
const params = {
|
|
307
|
+
address: testData.receiveAddress,
|
|
308
|
+
rootAddress: testData.rootAddress,
|
|
309
|
+
keychains,
|
|
310
|
+
index: testData.receiveAddressIndex,
|
|
311
|
+
};
|
|
312
|
+
const result = await basecoin.isWalletAddress(params);
|
|
313
|
+
result.should.equal(true);
|
|
314
|
+
});
|
|
315
|
+
it('should throw error for isWalletAddress when keychains is missing', async function () {
|
|
316
|
+
const address = '0x2959bfc3fdb7dc23fed8deba2fafb70f3e606a59';
|
|
317
|
+
const index = 0;
|
|
318
|
+
const params = { commonKeychain: testData.commonKeychain, address, index };
|
|
319
|
+
await assert_1.default.rejects(async () => basecoin.isWalletAddress(params));
|
|
320
|
+
});
|
|
321
|
+
it('should throw error for isWalletAddress when new address is invalid', async function () {
|
|
322
|
+
const wrongAddress = 'badAddress';
|
|
323
|
+
const index = 0;
|
|
324
|
+
const params = { commonKeychain: testData.commonKeychain, address: wrongAddress, index };
|
|
325
|
+
await assert_1.default.rejects(async () => basecoin.isWalletAddress(params), {
|
|
326
|
+
message: `invalid address: ${wrongAddress}`,
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
describe('ID Validation', () => {
|
|
331
|
+
it('check id', async function () {
|
|
332
|
+
const network = ts_sdk_1.Network.TESTNET;
|
|
333
|
+
const aptos = new ts_sdk_1.Aptos(new ts_sdk_1.AptosConfig({ network }));
|
|
334
|
+
const senderAddress = ts_sdk_1.AccountAddress.fromString('0xc8f02d25aa698b3e9fbd8a08e8da4c8ee261832a25a4cde8731b5ec356537d09');
|
|
335
|
+
const recipientAddress = ts_sdk_1.AccountAddress.fromString('0xf7405c28a02cf5bab4ea4498240bb3579db45951794eb1c843bef0534c093ad9');
|
|
336
|
+
const transaction = await aptos.transaction.build.simple({
|
|
337
|
+
sender: senderAddress,
|
|
338
|
+
data: {
|
|
339
|
+
function: '0x1::coin::transfer',
|
|
340
|
+
typeArguments: [ts_sdk_1.APTOS_COIN],
|
|
341
|
+
functionArguments: [recipientAddress, 1000],
|
|
342
|
+
},
|
|
343
|
+
options: {
|
|
344
|
+
maxGasAmount: 200000,
|
|
345
|
+
gasUnitPrice: 100,
|
|
346
|
+
expireTimestamp: 1732699236,
|
|
347
|
+
accountSequenceNumber: 14,
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
const DEFAULT_PUBLIC_KEY = Buffer.alloc(32);
|
|
351
|
+
const DEFAULT_SIGNATURE = Buffer.alloc(64);
|
|
352
|
+
const publicKey = new ts_sdk_1.Ed25519PublicKey(utils_1.default.getBufferFromHexString(DEFAULT_PUBLIC_KEY.toString('hex')));
|
|
353
|
+
const signature = new ts_sdk_1.Ed25519Signature(DEFAULT_SIGNATURE);
|
|
354
|
+
const senderAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(publicKey, signature);
|
|
355
|
+
const id = (0, ts_sdk_1.generateUserTransactionHash)({ transaction, senderAuthenticator });
|
|
356
|
+
id.should.equal('0x923d1cfed3afac24048451160337db75ba282912157ee43407b572923801d5ba');
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2FwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFnQjtBQUNoQixtREFBK0Q7QUFDL0QsaURBQStDO0FBQy9DLG1DQUFxRTtBQUNyRSwyREFBNkM7QUFDN0Msb0RBQXVCO0FBQ3ZCLGtEQUEwQjtBQUMxQixvREFBNEI7QUFDNUIsK0NBVTRCO0FBQzVCLGdFQUF3QztBQUN4QyxpREFBeUU7QUFDekUsbUhBQWdIO0FBRWhILFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLFdBQVcsQ0FBQztJQUVoQixNQUFNLFVBQVUsR0FBRztRQUNqQixLQUFLLEVBQUUsUUFBUSxDQUFDLGdDQUFnQztRQUNoRCxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRztRQUNmLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtLQUNoQyxDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FBRztRQUM5QixLQUFLLEVBQUUsUUFBUSxDQUFDLHlCQUF5QjtRQUN6QyxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixNQUFNLHFCQUFxQixHQUFHO1FBQzVCLFVBQVUsRUFBRSxRQUFRLENBQUMsdUJBQXVCO1FBQzVDLElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUM7SUFFRixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsY0FBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxnQkFBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFDRixXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE9BQU8sZ0JBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7UUFDakMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQXVCLENBQUM7UUFDMUQsTUFBTSxXQUFXLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQXVCLENBQUM7UUFFNUQsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsV0FBVyxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsVUFBVSxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsV0FBVyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBYSxDQUFDO1FBQ3RELGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUMxRyxjQUFjLENBQUMsYUFB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RUFBRSxNQUFNO29CQUNwQixZQUFZLEVBQUUsR0FBRztvQkFDakIsZUFBZSxFQUFFLFVBQVU7b0JBQzNCLHFCQUFxQixFQUFFLEVBQUU7aUJBQzFCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHlCQUFnQixDQUFDLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLE1BQU0sU0FBUyxHQUFHLElBQUkseUJBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxRCxNQUFNLG1CQUFtQixHQUFHLElBQUksb0NBQTJCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sRUFBRSxHQUFHLElBQUEsb0NBQTJCLEVBQUMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1lBRTdFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgQXB0LCBBcHRUb2tlbiwgVGFwdCwgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvYXB0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtcbiAgQWNjb3VudEFkZHJlc3MsXG4gIEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOSxcbiAgQXB0b3MsXG4gIEFQVE9TX0NPSU4sXG4gIEFwdG9zQ29uZmlnLFxuICBFZDI1NTE5UHVibGljS2V5LFxuICBFZDI1NTE5U2lnbmF0dXJlLFxuICBnZW5lcmF0ZVVzZXJUcmFuc2FjdGlvbkhhc2gsXG4gIE5ldHdvcmssXG59IGZyb20gJ0BhcHRvcy1sYWJzL3RzLXNkayc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBBcHRDb2luLCBjb2lucywgR2FzVGFua0FjY291bnRDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWxlZ2F0aW9uUG9vbEFkZFN0YWtlVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2RlbGVnYXRpb25Qb29sQWRkU3Rha2VUcmFuc2FjdGlvbic7XG5cbmRlc2NyaWJlKCdBUFQ6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgbmV3VHhQcmVidWlsZDtcbiAgbGV0IG5ld1R4UGFyYW1zO1xuXG4gIGNvbnN0IHR4UHJlQnVpbGQgPSB7XG4gICAgdHhIZXg6IHRlc3REYXRhLlRSQU5TQUNUSU9OX1VTSU5HX1RSQU5TRkVSX0NPSU5TLFxuICAgIHR4SW5mbzoge30sXG4gIH07XG5cbiAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgcmVjaXBpZW50czogdGVzdERhdGEucmVjaXBpZW50cyxcbiAgfTtcblxuICBjb25zdCBiYXRjaEZ1bmdpYmxlVHhQcmVidWlsZCA9IHtcbiAgICB0eEhleDogdGVzdERhdGEuRlVOR0lCTEVfQkFUQ0hfUkFXX1RYX0hFWCxcbiAgICB0eEluZm86IHt9LFxuICB9O1xuXG4gIGNvbnN0IGJhdGNoRnVuZ2libGVUeFBhcmFtcyA9IHtcbiAgICByZWNpcGllbnRzOiB0ZXN0RGF0YS5iYXRjaEZ1bmdpYmxlUmVjaXBpZW50cyxcbiAgICB0eXBlOiAndHJhbnNmZXInLFxuICB9O1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdhcHQnLCBBcHQuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndGFwdCcsIFRhcHQuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignYXB0OnVzZHQnLCBBcHRUb2tlbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0YXB0Jyk7XG4gICAgbmV3VHhQcmVidWlsZCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZUJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcHQgPSBiaXRnby5jb2luKCdhcHQnKTtcbiAgICBjb25zdCB0YXB0ID0gYml0Z28uY29pbigndGFwdCcpO1xuICAgIGNvbnN0IGFwdFVzZHQgPSBiaXRnby5jb2luKCdhcHQ6dXNkdCcpO1xuICAgIGNvbnN0IGFwdFN0YXRpY3MgPSBjb2lucy5nZXQoJ2FwdCcpIGFzIEdhc1RhbmtBY2NvdW50Q29pbjtcbiAgICBjb25zdCB0YXB0U3RhdGljcyA9IGNvaW5zLmdldCgndGFwdCcpIGFzIEdhc1RhbmtBY2NvdW50Q29pbjtcblxuICAgIGFwdC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnYXB0Jyk7XG4gICAgYXB0LmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnYXB0Jyk7XG4gICAgYXB0LmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdBcHRvcycpO1xuICAgIGFwdC5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOCk7XG5cbiAgICB0YXB0LmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0YXB0Jyk7XG4gICAgdGFwdC5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ2FwdCcpO1xuICAgIHRhcHQuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgQXB0b3MnKTtcbiAgICB0YXB0LmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU4KTtcblxuICAgIGFwdFN0YXRpY3MuZ2FzVGFua0xvd0JhbGFuY2VBbGVydEZhY3Rvci5zaG91bGQuZXF1YWwoODApO1xuICAgIHRhcHRTdGF0aWNzLmdhc1RhbmtMb3dCYWxhbmNlQWxlcnRGYWN0b3Iuc2hvdWxkLmVxdWFsKDgwKTtcbiAgICBhcHRTdGF0aWNzLmdhc1RhbmtNaW5CYWxhbmNlUmVjb21tZW5kYXRpb25GYWN0b3Iuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgdGFwdFN0YXRpY3MuZ2FzVGFua01pbkJhbGFuY2VSZWNvbW1lbmRhdGlvbkZhY3Rvci5zaG91bGQuZXF1YWwoMjAwKTtcblxuICAgIGFwdFVzZHQuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdhcHQnKTtcbiAgICBhcHRVc2R0LmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdhcHQnKTtcbiAgICBjb25zdCBhcHRVc2R0U3RhdGljcyA9IGFwdFVzZHQuZ2V0Q29uZmlnKCkgYXMgQXB0Q29pbjtcbiAgICBhcHRVc2R0U3RhdGljcy5mdWxsTmFtZS5zaG91bGQuZXF1YWwoJ1VTRCBUZXRoZXInKTtcbiAgICBhcHRVc2R0U3RhdGljcy5hc3NldElkLnNob3VsZC5lcXVhbCgnMHgzNTdiMGI3NGJjODMzZTk1YTExNWFkMjI2MDQ4NTRkNmIwZmNhMTUxY2VjZDk0MTExNzcwZTVkNmZmYzlkYzJiJyk7XG4gICAgYXB0VXNkdFN0YXRpY3MuZGVjaW1hbFBsYWNlcy5zaG91bGQuZXF1YWwoNik7XG4gIH0pO1xuXG4gIGl0KCdpcyB2YWxpZCBwdWInLCBmdW5jdGlvbiAoKSB7XG4gICAgLy8gd2l0aCAweCBwcmVmaXhcbiAgICBiYXNlY29pbi5pc1ZhbGlkUHViKCcweDliNGU5NjA4NmQxMTE1MDAyNTlmOWIzODY4MGIwNTA5YTQwNWMxOTA0ZGExODk3NjQ1NWEyMGM2OTFkM2JiMDcnKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIC8vIHdpdGhvdXQgMHggcHJlZml4XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YignOWI0ZTk2MDg2ZDExMTUwMDI1OWY5YjM4NjgwYjA1MDlhNDA1YzE5MDRkYTE4OTc2NDU1YTIwYzY5MWQzYmIwNycpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZlcmlmeSB0cmFuc2FjdGlvbjogJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSBmdW5naWJsZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiBiYXRjaEZ1bmdpYmxlVHhQcmVidWlsZCxcbiAgICAgICAgdHhQYXJhbXM6IGJhdGNoRnVuZ2libGVUeFBhcmFtcyxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aGVuIHJlY2lwaWVudHMgYW1vdW50IGFyZSBudW1iZXJzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgdHhQYXJhbXNXaXRoTnVtYmVyQW1vdW50cy5yZWNpcGllbnRzID0gdHhQYXJhbXNXaXRoTnVtYmVyQW1vdW50cy5yZWNpcGllbnRzLm1hcCgoeyBhZGRyZXNzLCBhbW91bnQgfSkgPT4ge1xuICAgICAgICByZXR1cm4geyBhZGRyZXNzLCBhbW91bnQ6IE51bWJlcihhbW91bnQpIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtczogdHhQYXJhbXNXaXRoTnVtYmVyQW1vdW50cyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aXRoIGludmFsaWQgcGFyYW0nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge307XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gdW5kZWZpbmVkO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgYW5kIEV4cGxhaW4gVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmZXJJbnB1dHNSZXNwb25zZSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEuc2VuZGVyMi5hZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHRlc3REYXRhLkFNT1VOVC50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbnNmZXJPdXRwdXRzUmVzcG9uc2UgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHRyYW5zZmVyRnVuZ2libGVJbnB1dFJlc3BvbnNlID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5mdW5naWJsZVNlbmRlci5hZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHRlc3REYXRhLkZVTkdJQkxFX1RPS0VOX0FNT1VOVC50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbmZlckZ1bmdpYmxlT3V0cHV0UmVzcG9uc2UgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLmZ1bmdpYmxlVG9rZW5SZWNpcGllbnRzWzFdLmFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogdGVzdERhdGEuZnVuZ2libGVUb2tlblJlY2lwaWVudHNbMV0uYW1vdW50LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHRlc3REYXRhLlRSQU5TQUNUSU9OX1VTSU5HX1RSQU5TRkVSX0NPSU5TLFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IHRyYW5zZmVySW5wdXRzUmVzcG9uc2UsXG4gICAgICAgIG91dHB1dHM6IHRyYW5zZmVyT3V0cHV0c1Jlc3BvbnNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIHNpZ25lZCBmdW5naWJsZSB0cmFuc2FjdGlvbiwgb25seSB3b3JrIGlmIGFtb3VudCBwYXJzaW5nIGNvcnJlY3RseSBkb25lIGZyb20gcGF5bG9hZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS5GVU5HSUJMRV9TRVJJQUxJWkVEX1RYX0hFWCxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiB0cmFuc2ZlckZ1bmdpYmxlSW5wdXRSZXNwb25zZSxcbiAgICAgICAgb3V0cHV0czogdHJhbmZlckZ1bmdpYmxlT3V0cHV0UmVzcG9uc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmF3VHggPSBuZXdUeFByZWJ1aWxkKCkudHhIZXg7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGFwdCcpKTtcbiAgICAgIHRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUeCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc29sZS5sb2coZXhwbGFpbmVkVHgpO1xuICAgICAgZXhwbGFpbmVkVHguc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnd2l0aGRyYXdBbW91bnQnLFxuICAgICAgICAgICdzZW5kZXInLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICcweDI0OTI4OWE4MTc4ZTRiOWNkYjg5ZmFkNmU4ZTQzNmNjYzQzNTc1M2U0ZWEzYzlkNTBlMGM4YjUyNTU4MmU5MGQnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzB4Zjc0MDVjMjhhMDJjZjViYWI0ZWE0NDk4MjQwYmIzNTc5ZGI0NTk1MTc5NGViMWM4NDNiZWYwNTM0YzA5M2FkOScsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnMCcgfSxcbiAgICAgICAgc2VuZGVyOiAnMHgxYWVkODA4OTE2YWI5YjFiMzBiMDdhYmI1MzU2MWFmZDQ2ODQ3Mjg1Y2UyODY1MTIyMWQ0MDYxNzNhMzcyNDQ5JyxcbiAgICAgICAgdHlwZTogMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc3Rha2luZyBkZWxlZ2F0ZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdGVzdERhdGEuREVMRUdBVElPTl9QT09MX0FERF9TVEFLRV9UWF9IRVg7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBEZWxlZ2F0aW9uUG9vbEFkZFN0YWtlVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0YXB0JykpO1xuICAgICAgdHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1R4KTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBleHBsYWluZWRUeC5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICd3aXRoZHJhd0Ftb3VudCcsXG4gICAgICAgICAgJ3NlbmRlcicsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJzB4YzViOTYwZDFiZWMxNDljNzc4OTYzNDQ3NzQzNTJjNjE0NDEzMDdhZjU2NGVhYThjODRmODU3MjA4ZTQxMWJmMycsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMHhmNzQwNWMyOGEwMmNmNWJhYjRlYTQ0OTgyNDBiYjM1NzlkYjQ1OTUxNzk0ZWIxYzg0M2JlZjA1MzRjMDkzYWQ5JyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogJzEwMDAnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIGZlZTogeyBmZWU6ICcwJyB9LFxuICAgICAgICBzZW5kZXI6ICcweDFhZWQ4MDg5MTZhYjliMWIzMGIwN2FiYjUzNTYxYWZkNDY4NDcyODVjZTI4NjUxMjIxZDQwNjE3M2EzNzI0NDknLFxuICAgICAgICB0eXBlOiAzMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGV4cGxhaW4gYSBpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJhd1R4ID0gJ2ludmFsaWRSYXdUcmFuc2FjdGlvbic7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGFwdCcpKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IHRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUeCksIHtcbiAgICAgICAgbWVzc2FnZTogJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24gd2hlbiBleHBsYWluVHJhbnNhY3Rpb24gcmVzcG9uc2UgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoQXB0LnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgc3R1Yi5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0ZXN0RGF0YS5UUkFOU0ZFUiB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0RGF0YSA9IHtcbiAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAnNmE3MjRjMTFlYWZlYTQyMDk3MDRjMzVlNmVlM2UxZmJhODBkMmE0MDg2MGQ4NzNiYmU1OTgxZGU2MzZjOWNmNmFkZTc3ZTZmZGQ0Mzg4ODg5ZWU5M2Q3ZWFhNzM3YWI1ODRlZGI1N2NjMGNjMTViMjg5OTM4MDM0OGQ2ZTQ4MmMnLFxuICAgICAgcm9vdEFkZHJlc3M6ICcweDA1OThiMzFhYTc3MTc2ZGJhYmEyNTMwNjQwNGFhODEzMTIxODA2OGRmNThiZjBiN2VlYzEzZjU3MDUzZmQ1YTcnLFxuICAgICAgcmVjZWl2ZUFkZHJlc3M6ICcweGRjMTY5NzI1ZGQ2ZDlhMDdlZTI1NWIxNzA4N2I0MDc5ZThhODA4NTBjODk1YzY1YjYyYzBlZjZkZTc0MGQzN2EnLFxuICAgICAgcmVjZWl2ZUFkZHJlc3NJbmRleDogMSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gW1xuICAgICAgeyBjb21tb25LZXljaGFpbjogdGVzdERhdGEuY29tbW9uS2V5Y2hhaW4gfSxcbiAgICAgIHsgY29tbW9uS2V5Y2hhaW46IHRlc3REYXRhLmNvbW1vbktleWNoYWluIH0sXG4gICAgICB7IGNvbW1vbktleWNoYWluOiB0ZXN0RGF0YS5jb21tb25LZXljaGFpbiB9LFxuICAgIF07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIHdlbGwgZm9ybWF0dGVkIGFkZHJlc3MgcHJlZml4ZWQgd2l0aCAweCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHhmOTQxYWUzY2JlNTY0NWRjY2MxNWRhODM0NmI1MzNmN2Y5MWYyMDIwODlhNTUyMTY1M2MwNjJiMmZmMTBiMzA0JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsaWRhdGluZyBhbiBvbGQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgyOTU5YmZjM2ZkYjdkYzIzZmVkOGRlYmEyZmFmYjcwZjNlNjA2YTU5JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbGlkYXRpbmcgYW4gaW5jb3JyZWN0bHkgZm9ybWF0dGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICd3cm9uZ2FkZHJlc3MnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgdmFsaWQgcmVjZWl2ZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNlaXZlQWRkcmVzcyxcbiAgICAgICAgcm9vdEFkZHJlc3M6IHRlc3REYXRhLnJvb3RBZGRyZXNzLFxuICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgIGluZGV4OiB0ZXN0RGF0YS5yZWNlaXZlQWRkcmVzc0luZGV4LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4ga2V5Y2hhaW5zIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzB4Mjk1OWJmYzNmZGI3ZGMyM2ZlZDhkZWJhMmZhZmI3MGYzZTYwNmE1OSc7XG4gICAgICBjb25zdCBpbmRleCA9IDA7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW46IHRlc3REYXRhLmNvbW1vbktleWNoYWluLCBhZGRyZXNzLCBpbmRleCB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4gbmV3IGFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzcyA9ICdiYWRBZGRyZXNzJztcbiAgICAgIGNvbnN0IGluZGV4ID0gMDtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbjogdGVzdERhdGEuY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3M6IHdyb25nQWRkcmVzcywgaW5kZXggfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpLCB7XG4gICAgICAgIG1lc3NhZ2U6IGBpbnZhbGlkIGFkZHJlc3M6ICR7d3JvbmdBZGRyZXNzfWAsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0lEIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NoZWNrIGlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmV0d29yazogTmV0d29yayA9IE5ldHdvcmsuVEVTVE5FVDtcbiAgICAgIGNvbnN0IGFwdG9zID0gbmV3IEFwdG9zKG5ldyBBcHRvc0NvbmZpZyh7IG5ldHdvcmsgfSkpO1xuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcoXG4gICAgICAgICcweGM4ZjAyZDI1YWE2OThiM2U5ZmJkOGEwOGU4ZGE0YzhlZTI2MTgzMmEyNWE0Y2RlODczMWI1ZWMzNTY1MzdkMDknXG4gICAgICApO1xuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcoXG4gICAgICAgICcweGY3NDA1YzI4YTAyY2Y1YmFiNGVhNDQ5ODI0MGJiMzU3OWRiNDU5NTE3OTRlYjFjODQzYmVmMDUzNGMwOTNhZDknXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IGFwdG9zLnRyYW5zYWN0aW9uLmJ1aWxkLnNpbXBsZSh7XG4gICAgICAgIHNlbmRlcjogc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZ1bmN0aW9uOiAnMHgxOjpjb2luOjp0cmFuc2ZlcicsXG4gICAgICAgICAgdHlwZUFyZ3VtZW50czogW0FQVE9TX0NPSU5dLFxuICAgICAgICAgIGZ1bmN0aW9uQXJndW1lbnRzOiBbcmVjaXBpZW50QWRkcmVzcywgMTAwMF0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtYXhHYXNBbW91bnQ6IDIwMDAwMCxcbiAgICAgICAgICBnYXNVbml0UHJpY2U6IDEwMCxcbiAgICAgICAgICBleHBpcmVUaW1lc3RhbXA6IDE3MzI2OTkyMzYsXG4gICAgICAgICAgYWNjb3VudFNlcXVlbmNlTnVtYmVyOiAxNCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBERUZBVUxUX1BVQkxJQ19LRVkgPSBCdWZmZXIuYWxsb2MoMzIpO1xuICAgICAgY29uc3QgREVGQVVMVF9TSUdOQVRVUkUgPSBCdWZmZXIuYWxsb2MoNjQpO1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkodXRpbHMuZ2V0QnVmZmVyRnJvbUhleFN0cmluZyhERUZBVUxUX1BVQkxJQ19LRVkudG9TdHJpbmcoJ2hleCcpKSk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBuZXcgRWQyNTUxOVNpZ25hdHVyZShERUZBVUxUX1NJR05BVFVSRSk7XG4gICAgICBjb25zdCBzZW5kZXJBdXRoZW50aWNhdG9yID0gbmV3IEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOShwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gICAgICBjb25zdCBpZCA9IGdlbmVyYXRlVXNlclRyYW5zYWN0aW9uSGFzaCh7IHRyYW5zYWN0aW9uLCBzZW5kZXJBdXRoZW50aWNhdG9yIH0pO1xuXG4gICAgICBpZC5zaG91bGQuZXF1YWwoJzB4OTIzZDFjZmVkM2FmYWMyNDA0ODQ1MTE2MDMzN2RiNzViYTI4MjkxMjE1N2VlNDM0MDdiNTcyOTIzODAxZDViYScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aptToken.d.ts","sourceRoot":"","sources":["../../../test/unit/aptToken.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|