@keep-network/tbtc-v2 1.6.0-dev.22 → 1.6.0-dev.23
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/artifacts/BLS.json +1 -1
- package/artifacts/Bank.json +3 -3
- package/artifacts/BeaconAuthorization.json +1 -1
- package/artifacts/BeaconDkg.json +1 -1
- package/artifacts/BeaconDkgValidator.json +1 -1
- package/artifacts/BeaconInactivity.json +1 -1
- package/artifacts/BeaconSortitionPool.json +3 -3
- package/artifacts/Bridge.json +5 -5
- package/artifacts/BridgeGovernance.json +2 -2
- package/artifacts/BridgeGovernanceParameters.json +2 -2
- package/artifacts/Deposit.json +2 -2
- package/artifacts/DepositSweep.json +2 -2
- package/artifacts/DonationVault.json +3 -3
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/EcdsaSortitionPool.json +3 -3
- package/artifacts/Fraud.json +2 -2
- package/artifacts/LightRelay.json +3 -3
- package/artifacts/LightRelayMaintainerProxy.json +3 -3
- package/artifacts/MaintainerProxy.json +3 -3
- package/artifacts/MovingFunds.json +2 -2
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeacon.json +2 -2
- package/artifacts/RandomBeaconChaosnet.json +2 -2
- package/artifacts/RandomBeaconGovernance.json +2 -2
- package/artifacts/Redemption.json +2 -2
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +3 -3
- package/artifacts/TBTCToken.json +3 -3
- package/artifacts/TBTCVault.json +23 -23
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +3 -3
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/VendingMachineV2.json +3 -3
- package/artifacts/VendingMachineV3.json +3 -3
- package/artifacts/WalletProposalValidator.json +2 -2
- package/artifacts/WalletRegistry.json +5 -5
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +2 -2
- package/artifacts/solcInputs/{dd1c38c53a7547fe3e334d72c1e4d8e1.json → a0304263b6d192d1bcaba971e9e959e7.json} +1 -1
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
- package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
- package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
- package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
- package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
- package/build/contracts/integrator/AbstractTBTCDepositor.sol/AbstractTBTCDepositor.dbg.json +1 -1
- package/build/contracts/integrator/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/integrator/IBridge.sol/IBridgeTypes.dbg.json +1 -1
- package/build/contracts/integrator/ITBTCVault.sol/ITBTCVault.dbg.json +1 -1
- package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
- package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
- package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
- package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
- package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
- package/build/contracts/test/BankStub.sol/BankStub.dbg.json +1 -1
- package/build/contracts/test/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/test/HeartbeatStub.sol/HeartbeatStub.dbg.json +1 -1
- package/build/contracts/test/LightRelayStub.sol/LightRelayStub.dbg.json +1 -1
- package/build/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.dbg.json +1 -1
- package/build/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.dbg.json +1 -1
- package/build/contracts/test/SystemTestRelay.sol/SystemTestRelay.dbg.json +1 -1
- package/build/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.dbg.json +1 -1
- package/build/contracts/test/TestERC20.sol/TestERC20.dbg.json +1 -1
- package/build/contracts/test/TestERC721.sol/TestERC721.dbg.json +1 -1
- package/build/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.dbg.json +1 -1
- package/build/contracts/test/TestTBTCDepositor.sol/MockBridge.dbg.json +1 -1
- package/build/contracts/test/TestTBTCDepositor.sol/MockBridge.json +15 -2
- package/build/contracts/test/TestTBTCDepositor.sol/MockTBTCVault.dbg.json +1 -1
- package/build/contracts/test/TestTBTCDepositor.sol/MockTBTCVault.json +2 -2
- package/build/contracts/test/TestTBTCDepositor.sol/TestTBTCDepositor.dbg.json +1 -1
- package/build/contracts/test/TestTBTCDepositor.sol/TestTBTCDepositor.json +2 -2
- package/build/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.dbg.json +1 -1
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/test/TestTBTCDepositor.sol +7 -2
- package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +6 -6
- package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +6 -6
- package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +6 -6
- package/export/artifacts/contracts/test/TestTBTCDepositor.sol/MockBridge.json +84 -55
- package/export/artifacts/contracts/test/TestTBTCDepositor.sol/MockTBTCVault.json +25 -25
- package/export/artifacts/contracts/test/TestTBTCDepositor.sol/TestTBTCDepositor.json +5 -5
- package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +25 -25
- package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
- package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
- package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +135 -135
- package/export/typechain/factories/MockBridge__factory.js +14 -1
- package/export/typechain/factories/MockTBTCVault__factory.js +1 -1
- package/export/typechain/factories/TestTBTCDepositor__factory.js +1 -1
- package/package.json +1 -1
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
"content": "// SPDX-License-Identifier: GPL-3.0-only\n\npragma solidity 0.8.17;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\ncontract TestERC721 is ERC721 {\n string public constant NAME = \"Test ERC721 Token\";\n string public constant SYMBOL = \"TT\";\n\n constructor() ERC721(NAME, SYMBOL) {}\n\n function mint(address to, uint256 tokenId) public {\n _mint(to, tokenId);\n }\n}\n"
|
|
372
372
|
},
|
|
373
373
|
"contracts/test/TestTBTCDepositor.sol": {
|
|
374
|
-
"content": "// SPDX-License-Identifier: GPL-3.0-only\n\npragma solidity ^0.8.0;\n\nimport {BTCUtils} from \"@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol\";\n\nimport \"../integrator/AbstractTBTCDepositor.sol\";\nimport \"../integrator/IBridge.sol\";\nimport \"../integrator/ITBTCVault.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract TestTBTCDepositor is AbstractTBTCDepositor {\n event InitializeDepositReturned(uint256 depositKey);\n\n event FinalizeDepositReturned(\n uint256 initialDepositAmount,\n uint256 tbtcAmount,\n bytes32 extraData\n );\n\n function initialize(address _bridge, address _tbtcVault) external {\n __AbstractTBTCDepositor_initialize(_bridge, _tbtcVault);\n }\n\n function initializeDepositPublic(\n IBridgeTypes.BitcoinTxInfo calldata fundingTx,\n IBridgeTypes.DepositRevealInfo calldata reveal,\n bytes32 extraData\n ) external {\n uint256 depositKey = _initializeDeposit(fundingTx, reveal, extraData);\n emit InitializeDepositReturned(depositKey);\n }\n\n function finalizeDepositPublic(uint256 depositKey) external {\n (\n uint256 initialDepositAmount,\n uint256 tbtcAmount,\n bytes32 extraData\n ) = _finalizeDeposit(depositKey);\n emit FinalizeDepositReturned(\n initialDepositAmount,\n tbtcAmount,\n extraData\n );\n }\n\n function calculateTbtcAmountPublic(\n uint64 depositAmountSat,\n uint64 depositTreasuryFeeSat\n ) external view returns (uint256) {\n return _calculateTbtcAmount(depositAmountSat, depositTreasuryFeeSat);\n }\n}\n\ncontract MockBridge is IBridge {\n using BTCUtils for bytes;\n\n mapping(uint256 => IBridgeTypes.DepositRequest) internal _deposits;\n\n uint64 internal _depositTreasuryFeeDivisor = 50; // 1/50 == 100 bps == 2% == 0.02\n uint64 internal _depositTxMaxFee = 1000; // 1000 satoshi = 0.00001 BTC\n\n event DepositRevealed(uint256 depositKey);\n\n function revealDepositWithExtraData(\n IBridgeTypes.BitcoinTxInfo calldata fundingTx,\n IBridgeTypes.DepositRevealInfo calldata reveal,\n bytes32 extraData\n ) external {\n bytes32 fundingTxHash = abi\n .encodePacked(\n fundingTx.version,\n fundingTx.inputVector,\n fundingTx.outputVector,\n fundingTx.locktime\n )\n .hash256View();\n\n uint256 depositKey = uint256(\n keccak256(\n abi.encodePacked(fundingTxHash, reveal.fundingOutputIndex)\n )\n );\n\n require(\n _deposits[depositKey].revealedAt == 0,\n \"Deposit already revealed\"\n );\n\n bytes memory fundingOutput = fundingTx\n .outputVector\n .extractOutputAtIndex(reveal.fundingOutputIndex);\n\n uint64 fundingOutputAmount = fundingOutput.extractValue();\n\n IBridgeTypes.DepositRequest memory request;\n\n request.depositor = msg.sender;\n request.amount = fundingOutputAmount;\n /* solhint-disable-next-line not-rely-on-time */\n request.revealedAt = uint32(block.timestamp);\n request.vault = reveal.vault;\n request.treasuryFee = _depositTreasuryFeeDivisor > 0\n ? fundingOutputAmount / _depositTreasuryFeeDivisor\n : 0;\n request.sweptAt = 0;\n request.extraData = extraData;\n\n _deposits[depositKey] = request;\n\n emit DepositRevealed(depositKey);\n }\n\n function sweepDeposit(uint256 depositKey) public {\n require(_deposits[depositKey].revealedAt != 0, \"Deposit not revealed\");\n require(_deposits[depositKey].sweptAt == 0, \"Deposit already swept\");\n /* solhint-disable-next-line not-rely-on-time */\n _deposits[depositKey].sweptAt = uint32(block.timestamp);\n }\n\n function deposits(uint256 depositKey)\n external\n view\n returns (IBridgeTypes.DepositRequest memory)\n {\n return _deposits[depositKey];\n }\n\n function depositParameters()\n external\n view\n returns (\n uint64 depositDustThreshold,\n uint64 depositTreasuryFeeDivisor,\n uint64 depositTxMaxFee,\n uint32 depositRevealAheadPeriod\n )\n {\n depositDustThreshold =
|
|
374
|
+
"content": "// SPDX-License-Identifier: GPL-3.0-only\n\npragma solidity ^0.8.0;\n\nimport {BTCUtils} from \"@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol\";\n\nimport \"../integrator/AbstractTBTCDepositor.sol\";\nimport \"../integrator/IBridge.sol\";\nimport \"../integrator/ITBTCVault.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract TestTBTCDepositor is AbstractTBTCDepositor {\n event InitializeDepositReturned(uint256 depositKey);\n\n event FinalizeDepositReturned(\n uint256 initialDepositAmount,\n uint256 tbtcAmount,\n bytes32 extraData\n );\n\n function initialize(address _bridge, address _tbtcVault) external {\n __AbstractTBTCDepositor_initialize(_bridge, _tbtcVault);\n }\n\n function initializeDepositPublic(\n IBridgeTypes.BitcoinTxInfo calldata fundingTx,\n IBridgeTypes.DepositRevealInfo calldata reveal,\n bytes32 extraData\n ) external {\n uint256 depositKey = _initializeDeposit(fundingTx, reveal, extraData);\n emit InitializeDepositReturned(depositKey);\n }\n\n function finalizeDepositPublic(uint256 depositKey) external {\n (\n uint256 initialDepositAmount,\n uint256 tbtcAmount,\n bytes32 extraData\n ) = _finalizeDeposit(depositKey);\n emit FinalizeDepositReturned(\n initialDepositAmount,\n tbtcAmount,\n extraData\n );\n }\n\n function calculateTbtcAmountPublic(\n uint64 depositAmountSat,\n uint64 depositTreasuryFeeSat\n ) external view returns (uint256) {\n return _calculateTbtcAmount(depositAmountSat, depositTreasuryFeeSat);\n }\n}\n\ncontract MockBridge is IBridge {\n using BTCUtils for bytes;\n\n mapping(uint256 => IBridgeTypes.DepositRequest) internal _deposits;\n\n uint64 internal _depositDustThreshold = 1000000; // 1000000 satoshi = 0.01 BTC\n uint64 internal _depositTreasuryFeeDivisor = 50; // 1/50 == 100 bps == 2% == 0.02\n uint64 internal _depositTxMaxFee = 1000; // 1000 satoshi = 0.00001 BTC\n\n event DepositRevealed(uint256 depositKey);\n\n function revealDepositWithExtraData(\n IBridgeTypes.BitcoinTxInfo calldata fundingTx,\n IBridgeTypes.DepositRevealInfo calldata reveal,\n bytes32 extraData\n ) external {\n bytes32 fundingTxHash = abi\n .encodePacked(\n fundingTx.version,\n fundingTx.inputVector,\n fundingTx.outputVector,\n fundingTx.locktime\n )\n .hash256View();\n\n uint256 depositKey = uint256(\n keccak256(\n abi.encodePacked(fundingTxHash, reveal.fundingOutputIndex)\n )\n );\n\n require(\n _deposits[depositKey].revealedAt == 0,\n \"Deposit already revealed\"\n );\n\n bytes memory fundingOutput = fundingTx\n .outputVector\n .extractOutputAtIndex(reveal.fundingOutputIndex);\n\n uint64 fundingOutputAmount = fundingOutput.extractValue();\n\n IBridgeTypes.DepositRequest memory request;\n\n request.depositor = msg.sender;\n request.amount = fundingOutputAmount;\n /* solhint-disable-next-line not-rely-on-time */\n request.revealedAt = uint32(block.timestamp);\n request.vault = reveal.vault;\n request.treasuryFee = _depositTreasuryFeeDivisor > 0\n ? fundingOutputAmount / _depositTreasuryFeeDivisor\n : 0;\n request.sweptAt = 0;\n request.extraData = extraData;\n\n _deposits[depositKey] = request;\n\n emit DepositRevealed(depositKey);\n }\n\n function sweepDeposit(uint256 depositKey) public {\n require(_deposits[depositKey].revealedAt != 0, \"Deposit not revealed\");\n require(_deposits[depositKey].sweptAt == 0, \"Deposit already swept\");\n /* solhint-disable-next-line not-rely-on-time */\n _deposits[depositKey].sweptAt = uint32(block.timestamp);\n }\n\n function deposits(uint256 depositKey)\n external\n view\n returns (IBridgeTypes.DepositRequest memory)\n {\n return _deposits[depositKey];\n }\n\n function depositParameters()\n external\n view\n returns (\n uint64 depositDustThreshold,\n uint64 depositTreasuryFeeDivisor,\n uint64 depositTxMaxFee,\n uint32 depositRevealAheadPeriod\n )\n {\n depositDustThreshold = _depositDustThreshold;\n depositTreasuryFeeDivisor = _depositTreasuryFeeDivisor;\n depositTxMaxFee = _depositTxMaxFee;\n depositRevealAheadPeriod = 0;\n }\n\n function setDepositDustThreshold(uint64 value) external {\n _depositDustThreshold = value;\n }\n\n function setDepositTreasuryFeeDivisor(uint64 value) external {\n _depositTreasuryFeeDivisor = value;\n }\n\n function setDepositTxMaxFee(uint64 value) external {\n _depositTxMaxFee = value;\n }\n}\n\ncontract MockTBTCVault is ITBTCVault {\n struct Request {\n uint64 requestedAt;\n uint64 finalizedAt;\n }\n\n mapping(uint256 => Request) internal _requests;\n\n uint32 public optimisticMintingFeeDivisor = 100; // 1%\n\n function optimisticMintingRequests(uint256 depositKey)\n external\n returns (uint64 requestedAt, uint64 finalizedAt)\n {\n Request memory request = _requests[depositKey];\n return (request.requestedAt, request.finalizedAt);\n }\n\n /// @dev The function is virtual to allow other projects using this mock\n /// for AbtractTBTCDepositor-based contract tests to add any custom\n /// logic needed.\n function createOptimisticMintingRequest(uint256 depositKey) public virtual {\n require(\n _requests[depositKey].requestedAt == 0,\n \"Request already exists\"\n );\n /* solhint-disable-next-line not-rely-on-time */\n _requests[depositKey].requestedAt = uint64(block.timestamp);\n }\n\n /// @dev The function is virtual to allow other projects using this mock\n /// for AbtractTBTCDepositor-based contract tests to add any custom\n /// logic needed.\n function finalizeOptimisticMintingRequest(uint256 depositKey)\n public\n virtual\n {\n require(\n _requests[depositKey].requestedAt != 0,\n \"Request does not exist\"\n );\n require(\n _requests[depositKey].finalizedAt == 0,\n \"Request already finalized\"\n );\n /* solhint-disable-next-line not-rely-on-time */\n _requests[depositKey].finalizedAt = uint64(block.timestamp);\n }\n\n function setOptimisticMintingFeeDivisor(uint32 value) external {\n optimisticMintingFeeDivisor = value;\n }\n}\n"
|
|
375
375
|
},
|
|
376
376
|
"contracts/test/WormholeBridgeStub.sol": {
|
|
377
377
|
"content": "// SPDX-License-Identifier: GPL-3.0-only\n\npragma solidity 0.8.17;\n\nimport \"./TestERC20.sol\";\nimport \"../l2/L2WormholeGateway.sol\";\n\n/// @dev Stub contract used in L2WormholeGateway unit tests.\n/// Stub contract is used instead of a smock because of the token transfer\n/// that needs to happen in completeTransferWithPayload function.\ncontract WormholeBridgeStub is IWormholeTokenBridge {\n TestERC20 public wormholeToken;\n\n uint256 public transferAmount;\n bytes32 public receiverAddress;\n\n // Two simple events allowing to assert Wormhole bridge functions are\n // called.\n event WormholeBridgeStub_completeTransferWithPayload(bytes encodedVm);\n event WormholeBridgeStub_transferTokens(\n address token,\n uint256 amount,\n uint16 recipientChain,\n bytes32 recipient,\n uint256 arbiterFee,\n uint32 nonce\n );\n event WormholeBridgeStub_transferTokensWithPayload(\n address token,\n uint256 amount,\n uint16 recipientChain,\n bytes32 recipient,\n uint32 nonce,\n bytes payload\n );\n\n constructor(TestERC20 _wormholeToken) {\n wormholeToken = _wormholeToken;\n }\n\n function completeTransferWithPayload(bytes memory encodedVm)\n external\n returns (bytes memory)\n {\n emit WormholeBridgeStub_completeTransferWithPayload(encodedVm);\n wormholeToken.mint(msg.sender, transferAmount);\n\n // In a real implementation, encodedVm is parsed. To avoid copy-pasting\n // Wormhole code to this contract and then encoding parmaters in unit\n // tests, we allow to set the receiver address on the stub contract and\n // we return it here. The rest of the parameters does not matter.\n IWormholeTokenBridge.TransferWithPayload memory transfer = IWormholeTokenBridge\n .TransferWithPayload(\n 1, // payloadID\n 2, // amount\n 0x3000000000000000000000000000000000000000000000000000000000000000, // tokenAddress\n 4, // tokenChain\n 0x5000000000000000000000000000000000000000000000000000000000000000, // to\n 6, // toChain\n 0x7000000000000000000000000000000000000000000000000000000000000000, // fromAddress\n abi.encode(receiverAddress) // payload\n );\n\n return abi.encode(transfer);\n }\n\n function transferTokens(\n address token,\n uint256 amount,\n uint16 recipientChain,\n bytes32 recipient,\n uint256 arbiterFee,\n uint32 nonce\n ) external payable returns (uint64 sequence) {\n emit WormholeBridgeStub_transferTokens(\n token,\n amount,\n recipientChain,\n recipient,\n arbiterFee,\n nonce\n );\n return 777;\n }\n\n function transferTokensWithPayload(\n address token,\n uint256 amount,\n uint16 recipientChain,\n bytes32 recipient,\n uint32 nonce,\n bytes memory payload\n ) external payable returns (uint64 sequence) {\n emit WormholeBridgeStub_transferTokensWithPayload(\n token,\n amount,\n recipientChain,\n recipient,\n nonce,\n payload\n );\n return 888;\n }\n\n function parseTransferWithPayload(bytes memory encoded)\n external\n pure\n returns (IWormholeTokenBridge.TransferWithPayload memory transfer)\n {\n return abi.decode(encoded, (IWormholeTokenBridge.TransferWithPayload));\n }\n\n function setTransferAmount(uint256 _transferAmount) external {\n transferAmount = _transferAmount;\n }\n\n function setReceiverAddress(bytes32 _receiverAddress) external {\n receiverAddress = _receiverAddress;\n }\n\n // Allows to mint Wormhole tBTC for depositWormholeTbtc unit tests.\n function mintWormholeToken(address to, uint256 amount) external {\n wormholeToken.mint(to, amount);\n }\n}\n"
|
|
@@ -177,6 +177,19 @@
|
|
|
177
177
|
"stateMutability": "nonpayable",
|
|
178
178
|
"type": "function"
|
|
179
179
|
},
|
|
180
|
+
{
|
|
181
|
+
"inputs": [
|
|
182
|
+
{
|
|
183
|
+
"internalType": "uint64",
|
|
184
|
+
"name": "value",
|
|
185
|
+
"type": "uint64"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"name": "setDepositDustThreshold",
|
|
189
|
+
"outputs": [],
|
|
190
|
+
"stateMutability": "nonpayable",
|
|
191
|
+
"type": "function"
|
|
192
|
+
},
|
|
180
193
|
{
|
|
181
194
|
"inputs": [
|
|
182
195
|
{
|
|
@@ -217,8 +230,8 @@
|
|
|
217
230
|
"type": "function"
|
|
218
231
|
}
|
|
219
232
|
],
|
|
220
|
-
"bytecode": "
|
|
221
|
-
"deployedBytecode": "
|
|
233
|
+
"bytecode": "0x6080604052600180546001600160c01b0319167103e8000000000000003200000000000f424017905534801561003457600080fd5b50611055806100446000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b02c43d01161005b578063b02c43d01461011e578063b036c1ee14610278578063bc8d07ca146102d5578063c42b64d0146102e857600080fd5b80630bce769d1461008257806359e6a456146100d957806386f014391461010b575b600080fd5b6100d7610090366004610dcb565b6001805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b005b6100d76100e7366004610dcb565b6001805467ffffffffffffffff191667ffffffffffffffff92909216919091179055565b6100d7610119366004610df5565b61033b565b6101ef61012c366004610e5e565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525060009081526020818152604091829020825160e08101845281546001600160a01b03808216835267ffffffffffffffff600160a01b80840482169685019690965263ffffffff600160e01b9384900481169785019790975260018501549182166060850152948104909416608083015290920490921660a082015260029091015460c082015290565b60405161026f9190600060e0820190506001600160a01b03808451168352602084015167ffffffffffffffff80821660208601526040860151915063ffffffff80831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505060c083015160c083015292915050565b60405180910390f35b6100d7610286366004610dcb565b6001805467ffffffffffffffff909216700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff909216919091179055565b6100d76102e3366004610e5e565b610691565b6001546040805167ffffffffffffffff808416825268010000000000000000840481166020830152700100000000000000000000000000000000909304909216908201526000606082015260800161026f565b60006103a061034d6020860186610e77565b61035a6020870187610ea1565b6103676040890189610ea1565b61037760808b0160608c01610e77565b60405160200161038c96959493929190610ee8565b6040516020818303038152906040526107aa565b90506000816103b26020860186610f2a565b6040516020016103d992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120600081815292839052912054909150600160e01b900463ffffffff161561045f5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064015b60405180910390fd5b60006104c16104716020870187610f2a565b63ffffffff166104846040890189610ea1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506107d19050565b905060006104ce826109b5565b6040805160e0810182526000606082018190526080820181905260a080830182905260c08084019290925233835267ffffffffffffffff851660208401524263ffffffff16938301939093529293509161052d91908901908901610f50565b6001600160a01b0316606082015260015468010000000000000000900467ffffffffffffffff1661055f576000610582565b6001546105829068010000000000000000900467ffffffffffffffff1683610f8f565b67ffffffffffffffff90811660808301908152600060a0840181815260c085018a8152888352602083815260409384902087518154838a0151878b01516001600160a01b039384166001600160e01b031993841617600160a01b928c168302177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116600160e01b63ffffffff938416810291909117875560608e01516001880180549d519b51919097169c9095169b909b1798909b1690910296909617909816979094169095029590951790915551600290920191909155518581527f629cb19e19d844f2e8dd8aa5de26f5072bb49e6286c5206ebd7302da1dabc417910160405180910390a15050505050505050565b600081815260208190526040812054600160e01b900463ffffffff1690036106fb5760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c65640000000000000000000000006044820152606401610456565b600081815260208190526040902060010154600160e01b900463ffffffff16156107675760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610456565b600090815260208190526040902060010180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60606000806107df85610a34565b90925090506001820161085a5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610456565b8084106108a95760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610456565b6000806108b7846001610fc4565b905060005b8681101561093f576108ce8883610a4b565b925060001983036109215760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610456565b61092b8383610fc4565b91508061093781610fd7565b9150506108bc565b5061094a8782610a4b565b9150600019820361099d5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610456565b6109a8878284610ab8565b9450505050505b92915050565b6000806109c183610b86565b60c01c90506000610a2c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b949350505050565b600080610a42836000610b92565b91509150915091565b6000610a58826009610fc4565b83511015610a6957506000196109af565b600080610a8085610a7b866008610fc4565b610b92565b909250905060018201610a9957600019925050506109af565b80610aa5836009610fc4565b610aaf9190610fc4565b95945050505050565b606081600003610ad75750604080516020810190915260008152610b7f565b6000610ae38385610fc4565b90508381118015610af5575080855110155b610b415760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610456565b604051915082604083010160405282825283850182038460208701018481015b80821015610b7a57815183830152602082019150610b61565b505050505b9392505050565b60006109af8282610d36565b6000806000610ba18585610d45565b90508060ff16600003610bd6576000858581518110610bc257610bc2610ff0565b016020015190935060f81c9150610d2f9050565b83610be2826001611006565b60ff16610bef9190610fc4565b85511015610c065760001960009250925050610d2f565b60008160ff16600203610c4a57610c3f610c2b610c24876001610fc4565b8890610d36565b62ffff0060e882901c1660f89190911c1790565b61ffff169050610d25565b8160ff16600403610c9957610c8c610c66610c24876001610fc4565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050610d25565b8160ff16600803610d2557610d18610cb5610c24876001610fc4565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000610b7f8383016020015190565b6000828281518110610d5957610d59610ff0565b016020015160f81c60ff03610d70575060086109af565b828281518110610d8257610d82610ff0565b016020015160f81c60fe03610d99575060046109af565b828281518110610dab57610dab610ff0565b016020015160f81c60fd03610dc2575060026109af565b50600092915050565b600060208284031215610ddd57600080fd5b813567ffffffffffffffff81168114610b7f57600080fd5b6000806000838503610100811215610e0c57600080fd5b843567ffffffffffffffff811115610e2357600080fd5b850160808188031215610e3557600080fd5b935060c0601f1982011215610e4957600080fd5b5060208401915060e084013590509250925092565b600060208284031215610e7057600080fd5b5035919050565b600060208284031215610e8957600080fd5b81356001600160e01b031981168114610b7f57600080fd5b6000808335601e19843603018112610eb857600080fd5b83018035915067ffffffffffffffff821115610ed357600080fd5b602001915036819003821315610d2f57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215610f3c57600080fd5b813563ffffffff81168114610b7f57600080fd5b600060208284031215610f6257600080fd5b81356001600160a01b0381168114610b7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff80841680610fb857634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b808201808211156109af576109af610f79565b600060018201610fe957610fe9610f79565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60ff81811683821601908111156109af576109af610f7956fea26469706673582212206e20cc57b0f4e67191aad9aad2ea1f527c87b6ade5ed975caff0d8f0901adf4064736f6c63430008110033",
|
|
234
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b02c43d01161005b578063b02c43d01461011e578063b036c1ee14610278578063bc8d07ca146102d5578063c42b64d0146102e857600080fd5b80630bce769d1461008257806359e6a456146100d957806386f014391461010b575b600080fd5b6100d7610090366004610dcb565b6001805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b005b6100d76100e7366004610dcb565b6001805467ffffffffffffffff191667ffffffffffffffff92909216919091179055565b6100d7610119366004610df5565b61033b565b6101ef61012c366004610e5e565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525060009081526020818152604091829020825160e08101845281546001600160a01b03808216835267ffffffffffffffff600160a01b80840482169685019690965263ffffffff600160e01b9384900481169785019790975260018501549182166060850152948104909416608083015290920490921660a082015260029091015460c082015290565b60405161026f9190600060e0820190506001600160a01b03808451168352602084015167ffffffffffffffff80821660208601526040860151915063ffffffff80831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505060c083015160c083015292915050565b60405180910390f35b6100d7610286366004610dcb565b6001805467ffffffffffffffff909216700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff909216919091179055565b6100d76102e3366004610e5e565b610691565b6001546040805167ffffffffffffffff808416825268010000000000000000840481166020830152700100000000000000000000000000000000909304909216908201526000606082015260800161026f565b60006103a061034d6020860186610e77565b61035a6020870187610ea1565b6103676040890189610ea1565b61037760808b0160608c01610e77565b60405160200161038c96959493929190610ee8565b6040516020818303038152906040526107aa565b90506000816103b26020860186610f2a565b6040516020016103d992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120600081815292839052912054909150600160e01b900463ffffffff161561045f5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064015b60405180910390fd5b60006104c16104716020870187610f2a565b63ffffffff166104846040890189610ea1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506107d19050565b905060006104ce826109b5565b6040805160e0810182526000606082018190526080820181905260a080830182905260c08084019290925233835267ffffffffffffffff851660208401524263ffffffff16938301939093529293509161052d91908901908901610f50565b6001600160a01b0316606082015260015468010000000000000000900467ffffffffffffffff1661055f576000610582565b6001546105829068010000000000000000900467ffffffffffffffff1683610f8f565b67ffffffffffffffff90811660808301908152600060a0840181815260c085018a8152888352602083815260409384902087518154838a0151878b01516001600160a01b039384166001600160e01b031993841617600160a01b928c168302177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116600160e01b63ffffffff938416810291909117875560608e01516001880180549d519b51919097169c9095169b909b1798909b1690910296909617909816979094169095029590951790915551600290920191909155518581527f629cb19e19d844f2e8dd8aa5de26f5072bb49e6286c5206ebd7302da1dabc417910160405180910390a15050505050505050565b600081815260208190526040812054600160e01b900463ffffffff1690036106fb5760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c65640000000000000000000000006044820152606401610456565b600081815260208190526040902060010154600160e01b900463ffffffff16156107675760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610456565b600090815260208190526040902060010180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60606000806107df85610a34565b90925090506001820161085a5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610456565b8084106108a95760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610456565b6000806108b7846001610fc4565b905060005b8681101561093f576108ce8883610a4b565b925060001983036109215760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610456565b61092b8383610fc4565b91508061093781610fd7565b9150506108bc565b5061094a8782610a4b565b9150600019820361099d5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610456565b6109a8878284610ab8565b9450505050505b92915050565b6000806109c183610b86565b60c01c90506000610a2c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b949350505050565b600080610a42836000610b92565b91509150915091565b6000610a58826009610fc4565b83511015610a6957506000196109af565b600080610a8085610a7b866008610fc4565b610b92565b909250905060018201610a9957600019925050506109af565b80610aa5836009610fc4565b610aaf9190610fc4565b95945050505050565b606081600003610ad75750604080516020810190915260008152610b7f565b6000610ae38385610fc4565b90508381118015610af5575080855110155b610b415760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610456565b604051915082604083010160405282825283850182038460208701018481015b80821015610b7a57815183830152602082019150610b61565b505050505b9392505050565b60006109af8282610d36565b6000806000610ba18585610d45565b90508060ff16600003610bd6576000858581518110610bc257610bc2610ff0565b016020015190935060f81c9150610d2f9050565b83610be2826001611006565b60ff16610bef9190610fc4565b85511015610c065760001960009250925050610d2f565b60008160ff16600203610c4a57610c3f610c2b610c24876001610fc4565b8890610d36565b62ffff0060e882901c1660f89190911c1790565b61ffff169050610d25565b8160ff16600403610c9957610c8c610c66610c24876001610fc4565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050610d25565b8160ff16600803610d2557610d18610cb5610c24876001610fc4565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000610b7f8383016020015190565b6000828281518110610d5957610d59610ff0565b016020015160f81c60ff03610d70575060086109af565b828281518110610d8257610d82610ff0565b016020015160f81c60fe03610d99575060046109af565b828281518110610dab57610dab610ff0565b016020015160f81c60fd03610dc2575060026109af565b50600092915050565b600060208284031215610ddd57600080fd5b813567ffffffffffffffff81168114610b7f57600080fd5b6000806000838503610100811215610e0c57600080fd5b843567ffffffffffffffff811115610e2357600080fd5b850160808188031215610e3557600080fd5b935060c0601f1982011215610e4957600080fd5b5060208401915060e084013590509250925092565b600060208284031215610e7057600080fd5b5035919050565b600060208284031215610e8957600080fd5b81356001600160e01b031981168114610b7f57600080fd5b6000808335601e19843603018112610eb857600080fd5b83018035915067ffffffffffffffff821115610ed357600080fd5b602001915036819003821315610d2f57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215610f3c57600080fd5b813563ffffffff81168114610b7f57600080fd5b600060208284031215610f6257600080fd5b81356001600160a01b0381168114610b7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff80841680610fb857634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b808201808211156109af576109af610f79565b600060018201610fe957610fe9610f79565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60ff81811683821601908111156109af576109af610f7956fea26469706673582212206e20cc57b0f4e67191aad9aad2ea1f527c87b6ade5ed975caff0d8f0901adf4064736f6c63430008110033",
|
|
222
235
|
"linkReferences": {},
|
|
223
236
|
"deployedLinkReferences": {}
|
|
224
237
|
}
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"type": "function"
|
|
81
81
|
}
|
|
82
82
|
],
|
|
83
|
-
"bytecode": "
|
|
84
|
-
"deployedBytecode": "
|
|
83
|
+
"bytecode": "0x60806040526001805463ffffffff1916606417905534801561002057600080fd5b5061038f806100306000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636c626aa4116100505780636c626aa4146100ab578063d5b0b0ce1461011a578063db4aa6cb1461014457600080fd5b806309b53f511461006c578063477ffd6514610096575b600080fd5b60015461007c9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6100a96100a4366004610313565b610157565b005b6100f96100b9366004610313565b6000908152602081815260409182902082518084019093525467ffffffffffffffff80821680855268010000000000000000909204169290910182905291565b6040805167ffffffffffffffff93841681529290911660208301520161008d565b6100a961012836600461032c565b6001805463ffffffff191663ffffffff92909216919091179055565b6100a9610152366004610313565b6101ed565b60008181526020819052604090205467ffffffffffffffff16156101c25760405162461bcd60e51b815260206004820152601660248201527f5265717565737420616c7265616479206578697374730000000000000000000060448201526064015b60405180910390fd5b6000908152602081905260409020805467ffffffffffffffff19164267ffffffffffffffff16179055565b60008181526020819052604081205467ffffffffffffffff1690036102545760405162461bcd60e51b815260206004820152601660248201527f5265717565737420646f6573206e6f742065786973740000000000000000000060448201526064016101b9565b60008181526020819052604090205468010000000000000000900467ffffffffffffffff16156102c65760405162461bcd60e51b815260206004820152601960248201527f5265717565737420616c72656164792066696e616c697a65640000000000000060448201526064016101b9565b600090815260208190526040902080547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff1602179055565b60006020828403121561032557600080fd5b5035919050565b60006020828403121561033e57600080fd5b813563ffffffff8116811461035257600080fd5b939250505056fea26469706673582212206f0dde750a92d5fbaff995b2dacf36fde5cbf75877fb2be6fd03c1db7747be3e64736f6c63430008110033",
|
|
84
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80636c626aa4116100505780636c626aa4146100ab578063d5b0b0ce1461011a578063db4aa6cb1461014457600080fd5b806309b53f511461006c578063477ffd6514610096575b600080fd5b60015461007c9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6100a96100a4366004610313565b610157565b005b6100f96100b9366004610313565b6000908152602081815260409182902082518084019093525467ffffffffffffffff80821680855268010000000000000000909204169290910182905291565b6040805167ffffffffffffffff93841681529290911660208301520161008d565b6100a961012836600461032c565b6001805463ffffffff191663ffffffff92909216919091179055565b6100a9610152366004610313565b6101ed565b60008181526020819052604090205467ffffffffffffffff16156101c25760405162461bcd60e51b815260206004820152601660248201527f5265717565737420616c7265616479206578697374730000000000000000000060448201526064015b60405180910390fd5b6000908152602081905260409020805467ffffffffffffffff19164267ffffffffffffffff16179055565b60008181526020819052604081205467ffffffffffffffff1690036102545760405162461bcd60e51b815260206004820152601660248201527f5265717565737420646f6573206e6f742065786973740000000000000000000060448201526064016101b9565b60008181526020819052604090205468010000000000000000900467ffffffffffffffff16156102c65760405162461bcd60e51b815260206004820152601960248201527f5265717565737420616c72656164792066696e616c697a65640000000000000060448201526064016101b9565b600090815260208190526040902080547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff1602179055565b60006020828403121561032557600080fd5b5035919050565b60006020828403121561033e57600080fd5b813563ffffffff8116811461035257600080fd5b939250505056fea26469706673582212206f0dde750a92d5fbaff995b2dacf36fde5cbf75877fb2be6fd03c1db7747be3e64736f6c63430008110033",
|
|
85
85
|
"linkReferences": {},
|
|
86
86
|
"deployedLinkReferences": {}
|
|
87
87
|
}
|