bitgo
Version:
BitGo JavaScript SDK
92 lines • 13.8 kB
JavaScript
describe('BitGoJS in the browser', () => {
it('Should work', () => {
const BitGoJS = window['BitGoJS'];
expect(BitGoJS).toBeTruthy();
});
});
describe('Coins', () => {
it('Should work for all coins', () => {
const BitGoJS = window['BitGoJS'];
const bitgo = new BitGoJS.BitGo({ env: 'test' });
// these objects are defined in BitGoJS.Coin, but are not coins in the traditional sense
// or if statics coins name ("thorchain:rune") doesn't match with class name (Rune)
const excludedKeys = {
AbstractUtxoCoin: 1,
AbstractLightningCoin: 1,
AdaToken: 1,
Erc20Token: 1,
Erc721Token: 1,
Erc7984Token: 1,
EthLikeCoin: 1,
TethLikeCoin: 1,
OfcToken: 1,
StellarToken: 1,
CeloToken: 1,
EosToken: 1,
AlgoToken: 1,
AvaxCToken: 1,
PolygonToken: 1,
BscToken: 1,
ArbethToken: 1,
OpethToken: 1,
ZkethToken: 1,
SuiToken: 1,
TaoToken: 1,
PolyxToken: 1,
BeraToken: 1,
XrpToken: 1,
Rune: 1,
Trune: 1,
Tao: 1,
Ttao: 1,
AptToken: 1,
Icp: 1,
Ticp: 1,
Iota: 1,
Tiota: 1,
Sip10Token: 1,
SoneiumToken: 1,
Polyx: 1,
Tpolyx: 1,
CoredaoToken: 1,
EvmCoin: 1,
Nep141Token: 1,
WorldToken: 1,
CosmosSharedCoin: 1,
VetToken: 1,
EthLikeErc20Token: 1,
EthLikeErc721Token: 1,
HashToken: 1,
FlrToken: 1,
MonToken: 1,
XdcToken: 1,
JettonToken: 1,
Tip20Token: 1,
Fiat: 1,
allFiatCoins: 1,
fiatCoins: 1,
testnetFiatCoins: 1,
};
Object.keys(BitGoJS.Coin)
.filter((coinName) => !excludedKeys[coinName])
.forEach((coinName) => {
const coinIdentifier = coinName.toLowerCase();
const coin = bitgo.coin(coinIdentifier);
expect(coin).toBeTruthy();
expect(coin.type).toEqual(coinIdentifier);
});
});
it('UTXO bufferutils should work', () => {
const BitGoJS = window['BitGoJS'];
const bitgo = new BitGoJS.BitGo({ env: 'test' });
const txHex = '0100000002008287fa5a4e9d393134b525ae038cbcb4c757eadaa378c33caeed294c63137f000000006b48304502204dc8131adb9420729ff1580bbbcf01f5ef879defee5225a8261b5681075b8a120221009dc3386f5301ab4a88dfd89d8927a7807242a30ee252fa864d61d0b079aaa2c20121038c4b3c81572d84ce32a2a41c5bb54d4c408b5ce3df9be451f4f57ba8bd8ebf59ffffffff17ed0cc32384bf9c410d023d4ab25f4499992824308e89c448fd570e1060fc0e000000006b48304502202c0ff069c0783c11259936307ef906b211542a01ca33cf6993ddb7b8d55b42ac02210095c4bceb1886f5bcc6ca2dbb909259c0509e768693a93fe2d01d511a57356f25012102e99ed9483d91f1fa67abd838f21afd80bf6a3732128ab5aad0ee5b975679c13dffffffff02bca2b100000000001976a914cc3aa0deca267914cbcf96f79ccd1b679d85e20188ac08c2eb0b000000001976a914380c5a7247e945a5aa242056f9b046a9366fe21788ac00000000';
const btc = bitgo.coin('btc');
const tx = btc.createTransactionFromHex(txHex);
expect(tx.getId()).toEqual('4f666850ac8a54c834a90e62fc9dc50b3c99275dd1f91960e1ea89813970e444');
const txHexBig = '0100000002008287fa5a4e9d393134b525ae038cbcb4c757eadaa378c33caeed294c63137f000000006b48304502204dc8131adb9420729ff1580bbbcf01f5ef879defee5225a8261b5681075b8a120221009dc3386f5301ab4a88dfd89d8927a7807242a30ee252fa864d61d0b079aaa2c20121038c4b3c81572d84ce32a2a41c5bb54d4c408b5ce3df9be451f4f57ba8bd8ebf59ffffffff17ed0cc32384bf9c410d023d4ab25f4499992824308e89c448fd570e1060fc0e000000006b48304502202c0ff069c0783c11259936307ef906b211542a01ca33cf6993ddb7b8d55b42ac02210095c4bceb1886f5bcc6ca2dbb909259c0509e768693a93fe2d01d511a57356f25012102e99ed9483d91f1fa67abd838f21afd80bf6a3732128ab5aad0ee5b975679c13dffffffff02f8ffc42ebca2b1001976a914cc3aa0deca267914cbcf96f79ccd1b679d85e20188ac08c2eb0b000000001976a914380c5a7247e945a5aa242056f9b046a9366fe21788ac00000000';
const doge = bitgo.coin('doge');
const txBig = doge.createTransactionFromHex(txHexBig);
expect(txBig.outs[0].value.toString()).toEqual('49999999999999992');
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9icm93c2VyL2Jyb3dzZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ3JCLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELHdGQUF3RjtRQUN4RixtRkFBbUY7UUFDbkYsTUFBTSxZQUFZLEdBQUc7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDO1lBQ2YsV0FBVyxFQUFFLENBQUM7WUFDZCxZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxDQUFDO1lBQ1gsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsQ0FBQztZQUNaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFlBQVksRUFBRSxDQUFDO1lBQ2YsUUFBUSxFQUFFLENBQUM7WUFDWCxXQUFXLEVBQUUsQ0FBQztZQUNkLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsRUFBRSxDQUFDO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixTQUFTLEVBQUUsQ0FBQztZQUNaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLENBQUM7WUFDUCxRQUFRLEVBQUUsQ0FBQztZQUNYLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLENBQUM7WUFDYixZQUFZLEVBQUUsQ0FBQztZQUNmLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLENBQUM7WUFDVCxZQUFZLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1lBQ1YsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsQ0FBQztZQUNiLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUM7WUFDWCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLGtCQUFrQixFQUFFLENBQUM7WUFDckIsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsRUFBRSxDQUFDO1lBQ1gsUUFBUSxFQUFFLENBQUM7WUFDWCxXQUFXLEVBQUUsQ0FBQztZQUNkLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsQ0FBQztTQUNwQixDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2FBQ3RCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDN0MsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FDVCw4dUJBQTh1QixDQUFDO1FBQ2p2QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFFL0YsTUFBTSxRQUFRLEdBQ1osOHVCQUE4dUIsQ0FBQztRQUNqdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImRlc2NyaWJlKCdCaXRHb0pTIGluIHRoZSBicm93c2VyJywgKCkgPT4ge1xuICBpdCgnU2hvdWxkIHdvcmsnLCAoKSA9PiB7XG4gICAgY29uc3QgQml0R29KUyA9IHdpbmRvd1snQml0R29KUyddO1xuICAgIGV4cGVjdChCaXRHb0pTKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb2lucycsICgpID0+IHtcbiAgaXQoJ1Nob3VsZCB3b3JrIGZvciBhbGwgY29pbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgQml0R29KUyA9IHdpbmRvd1snQml0R29KUyddO1xuICAgIGNvbnN0IGJpdGdvID0gbmV3IEJpdEdvSlMuQml0R28oeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICAvLyB0aGVzZSBvYmplY3RzIGFyZSBkZWZpbmVkIGluIEJpdEdvSlMuQ29pbiwgYnV0IGFyZSBub3QgY29pbnMgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlXG4gICAgLy8gb3IgaWYgc3RhdGljcyBjb2lucyBuYW1lIChcInRob3JjaGFpbjpydW5lXCIpIGRvZXNuJ3QgbWF0Y2ggd2l0aCBjbGFzcyBuYW1lIChSdW5lKVxuICAgIGNvbnN0IGV4Y2x1ZGVkS2V5cyA9IHtcbiAgICAgIEFic3RyYWN0VXR4b0NvaW46IDEsXG4gICAgICBBYnN0cmFjdExpZ2h0bmluZ0NvaW46IDEsXG4gICAgICBBZGFUb2tlbjogMSxcbiAgICAgIEVyYzIwVG9rZW46IDEsXG4gICAgICBFcmM3MjFUb2tlbjogMSxcbiAgICAgIEVyYzc5ODRUb2tlbjogMSxcbiAgICAgIEV0aExpa2VDb2luOiAxLFxuICAgICAgVGV0aExpa2VDb2luOiAxLFxuICAgICAgT2ZjVG9rZW46IDEsXG4gICAgICBTdGVsbGFyVG9rZW46IDEsXG4gICAgICBDZWxvVG9rZW46IDEsXG4gICAgICBFb3NUb2tlbjogMSxcbiAgICAgIEFsZ29Ub2tlbjogMSxcbiAgICAgIEF2YXhDVG9rZW46IDEsXG4gICAgICBQb2x5Z29uVG9rZW46IDEsXG4gICAgICBCc2NUb2tlbjogMSxcbiAgICAgIEFyYmV0aFRva2VuOiAxLFxuICAgICAgT3BldGhUb2tlbjogMSxcbiAgICAgIFprZXRoVG9rZW46IDEsXG4gICAgICBTdWlUb2tlbjogMSxcbiAgICAgIFRhb1Rva2VuOiAxLFxuICAgICAgUG9seXhUb2tlbjogMSxcbiAgICAgIEJlcmFUb2tlbjogMSxcbiAgICAgIFhycFRva2VuOiAxLFxuICAgICAgUnVuZTogMSxcbiAgICAgIFRydW5lOiAxLFxuICAgICAgVGFvOiAxLFxuICAgICAgVHRhbzogMSxcbiAgICAgIEFwdFRva2VuOiAxLFxuICAgICAgSWNwOiAxLFxuICAgICAgVGljcDogMSxcbiAgICAgIElvdGE6IDEsXG4gICAgICBUaW90YTogMSxcbiAgICAgIFNpcDEwVG9rZW46IDEsXG4gICAgICBTb25laXVtVG9rZW46IDEsXG4gICAgICBQb2x5eDogMSxcbiAgICAgIFRwb2x5eDogMSxcbiAgICAgIENvcmVkYW9Ub2tlbjogMSxcbiAgICAgIEV2bUNvaW46IDEsXG4gICAgICBOZXAxNDFUb2tlbjogMSxcbiAgICAgIFdvcmxkVG9rZW46IDEsXG4gICAgICBDb3Ntb3NTaGFyZWRDb2luOiAxLFxuICAgICAgVmV0VG9rZW46IDEsXG4gICAgICBFdGhMaWtlRXJjMjBUb2tlbjogMSxcbiAgICAgIEV0aExpa2VFcmM3MjFUb2tlbjogMSxcbiAgICAgIEhhc2hUb2tlbjogMSxcbiAgICAgIEZsclRva2VuOiAxLFxuICAgICAgTW9uVG9rZW46IDEsXG4gICAgICBYZGNUb2tlbjogMSxcbiAgICAgIEpldHRvblRva2VuOiAxLFxuICAgICAgVGlwMjBUb2tlbjogMSxcbiAgICAgIEZpYXQ6IDEsXG4gICAgICBhbGxGaWF0Q29pbnM6IDEsXG4gICAgICBmaWF0Q29pbnM6IDEsXG4gICAgICB0ZXN0bmV0RmlhdENvaW5zOiAxLFxuICAgIH07XG4gICAgT2JqZWN0LmtleXMoQml0R29KUy5Db2luKVxuICAgICAgLmZpbHRlcigoY29pbk5hbWUpID0+ICFleGNsdWRlZEtleXNbY29pbk5hbWVdKVxuICAgICAgLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvaW5JZGVudGlmaWVyID0gY29pbk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgY29pbiA9IGJpdGdvLmNvaW4oY29pbklkZW50aWZpZXIpO1xuICAgICAgICBleHBlY3QoY29pbikudG9CZVRydXRoeSgpO1xuICAgICAgICBleHBlY3QoY29pbi50eXBlKS50b0VxdWFsKGNvaW5JZGVudGlmaWVyKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnVVRYTyBidWZmZXJ1dGlscyBzaG91bGQgd29yaycsICgpID0+IHtcbiAgICBjb25zdCBCaXRHb0pTID0gd2luZG93WydCaXRHb0pTJ107XG4gICAgY29uc3QgYml0Z28gPSBuZXcgQml0R29KUy5CaXRHbyh7IGVudjogJ3Rlc3QnIH0pO1xuXG4gICAgY29uc3QgdHhIZXggPVxuICAgICAgJzAxMDAwMDAwMDIwMDgyODdmYTVhNGU5ZDM5MzEzNGI1MjVhZTAzOGNiY2I0Yzc1N2VhZGFhMzc4YzMzY2FlZWQyOTRjNjMxMzdmMDAwMDAwMDA2YjQ4MzA0NTAyMjA0ZGM4MTMxYWRiOTQyMDcyOWZmMTU4MGJiYmNmMDFmNWVmODc5ZGVmZWU1MjI1YTgyNjFiNTY4MTA3NWI4YTEyMDIyMTAwOWRjMzM4NmY1MzAxYWI0YTg4ZGZkODlkODkyN2E3ODA3MjQyYTMwZWUyNTJmYTg2NGQ2MWQwYjA3OWFhYTJjMjAxMjEwMzhjNGIzYzgxNTcyZDg0Y2UzMmEyYTQxYzViYjU0ZDRjNDA4YjVjZTNkZjliZTQ1MWY0ZjU3YmE4YmQ4ZWJmNTlmZmZmZmZmZjE3ZWQwY2MzMjM4NGJmOWM0MTBkMDIzZDRhYjI1ZjQ0OTk5OTI4MjQzMDhlODljNDQ4ZmQ1NzBlMTA2MGZjMGUwMDAwMDAwMDZiNDgzMDQ1MDIyMDJjMGZmMDY5YzA3ODNjMTEyNTk5MzYzMDdlZjkwNmIyMTE1NDJhMDFjYTMzY2Y2OTkzZGRiN2I4ZDU1YjQyYWMwMjIxMDA5NWM0YmNlYjE4ODZmNWJjYzZjYTJkYmI5MDkyNTljMDUwOWU3Njg2OTNhOTNmZTJkMDFkNTExYTU3MzU2ZjI1MDEyMTAyZTk5ZWQ5NDgzZDkxZjFmYTY3YWJkODM4ZjIxYWZkODBiZjZhMzczMjEyOGFiNWFhZDBlZTViOTc1Njc5YzEzZGZmZmZmZmZmMDJiY2EyYjEwMDAwMDAwMDAwMTk3NmE5MTRjYzNhYTBkZWNhMjY3OTE0Y2JjZjk2Zjc5Y2NkMWI2NzlkODVlMjAxODhhYzA4YzJlYjBiMDAwMDAwMDAxOTc2YTkxNDM4MGM1YTcyNDdlOTQ1YTVhYTI0MjA1NmY5YjA0NmE5MzY2ZmUyMTc4OGFjMDAwMDAwMDAnO1xuICAgIGNvbnN0IGJ0YyA9IGJpdGdvLmNvaW4oJ2J0YycpO1xuICAgIGNvbnN0IHR4ID0gYnRjLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleCh0eEhleCk7XG4gICAgZXhwZWN0KHR4LmdldElkKCkpLnRvRXF1YWwoJzRmNjY2ODUwYWM4YTU0YzgzNGE5MGU2MmZjOWRjNTBiM2M5OTI3NWRkMWY5MTk2MGUxZWE4OTgxMzk3MGU0NDQnKTtcblxuICAgIGNvbnN0IHR4SGV4QmlnID1cbiAgICAgICcwMTAwMDAwMDAyMDA4Mjg3ZmE1YTRlOWQzOTMxMzRiNTI1YWUwMzhjYmNiNGM3NTdlYWRhYTM3OGMzM2NhZWVkMjk0YzYzMTM3ZjAwMDAwMDAwNmI0ODMwNDUwMjIwNGRjODEzMWFkYjk0MjA3MjlmZjE1ODBiYmJjZjAxZjVlZjg3OWRlZmVlNTIyNWE4MjYxYjU2ODEwNzViOGExMjAyMjEwMDlkYzMzODZmNTMwMWFiNGE4OGRmZDg5ZDg5MjdhNzgwNzI0MmEzMGVlMjUyZmE4NjRkNjFkMGIwNzlhYWEyYzIwMTIxMDM4YzRiM2M4MTU3MmQ4NGNlMzJhMmE0MWM1YmI1NGQ0YzQwOGI1Y2UzZGY5YmU0NTFmNGY1N2JhOGJkOGViZjU5ZmZmZmZmZmYxN2VkMGNjMzIzODRiZjljNDEwZDAyM2Q0YWIyNWY0NDk5OTkyODI0MzA4ZTg5YzQ0OGZkNTcwZTEwNjBmYzBlMDAwMDAwMDA2YjQ4MzA0NTAyMjAyYzBmZjA2OWMwNzgzYzExMjU5OTM2MzA3ZWY5MDZiMjExNTQyYTAxY2EzM2NmNjk5M2RkYjdiOGQ1NWI0MmFjMDIyMTAwOTVjNGJjZWIxODg2ZjViY2M2Y2EyZGJiOTA5MjU5YzA1MDllNzY4NjkzYTkzZmUyZDAxZDUxMWE1NzM1NmYyNTAxMjEwMmU5OWVkOTQ4M2Q5MWYxZmE2N2FiZDgzOGYyMWFmZDgwYmY2YTM3MzIxMjhhYjVhYWQwZWU1Yjk3NTY3OWMxM2RmZmZmZmZmZjAyZjhmZmM0MmViY2EyYjEwMDE5NzZhOTE0Y2MzYWEwZGVjYTI2NzkxNGNiY2Y5NmY3OWNjZDFiNjc5ZDg1ZTIwMTg4YWMwOGMyZWIwYjAwMDAwMDAwMTk3NmE5MTQzODBjNWE3MjQ3ZTk0NWE1YWEyNDIwNTZmOWIwNDZhOTM2NmZlMjE3ODhhYzAwMDAwMDAwJztcbiAgICBjb25zdCBkb2dlID0gYml0Z28uY29pbignZG9nZScpO1xuICAgIGNvbnN0IHR4QmlnID0gZG9nZS5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgodHhIZXhCaWcpO1xuICAgIGV4cGVjdCh0eEJpZy5vdXRzWzBdLnZhbHVlLnRvU3RyaW5nKCkpLnRvRXF1YWwoJzQ5OTk5OTk5OTk5OTk5OTkyJyk7XG4gIH0pO1xufSk7XG4iXX0=