@keep-network/tbtc-v2 1.6.0-dev.7 → 1.6.0-dev.8
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 +18 -18
- package/artifacts/LightRelayMaintainerProxy.json +8 -8
- package/artifacts/MaintainerProxy.json +19 -19
- 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 +36 -13
- package/artifacts/WalletRegistry.json +5 -5
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +2 -2
- package/artifacts/solcInputs/{b4e1c442421284b256fcad9f86102ecc.json → e2337fbc33ddf79d3229147ce15c40b6.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/WalletProposalValidator.sol/WalletProposalValidator.json +24 -2
- package/build/contracts/bridge/Wallets.sol/Wallets.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/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/bridge/WalletProposalValidator.sol +62 -8
- package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +22 -22
- 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/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +10972 -9231
- package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +40 -40
- package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +47 -47
- package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +88 -88
- package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
- package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +31 -31
- package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
- package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +58 -58
- package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +59 -59
- package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +2 -2
- package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
- package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
- package/export/artifacts/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.json +59 -59
- package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
- package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
- package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
- package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +2 -2
- package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
- 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/WalletProposalValidator__factory.js +23 -1
- package/package.json +1 -1
|
@@ -266,6 +266,28 @@
|
|
|
266
266
|
"internalType": "struct WalletProposalValidator.MovingFundsProposal",
|
|
267
267
|
"name": "proposal",
|
|
268
268
|
"type": "tuple"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"components": [
|
|
272
|
+
{
|
|
273
|
+
"internalType": "bytes32",
|
|
274
|
+
"name": "txHash",
|
|
275
|
+
"type": "bytes32"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"internalType": "uint32",
|
|
279
|
+
"name": "txOutputIndex",
|
|
280
|
+
"type": "uint32"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"internalType": "uint64",
|
|
284
|
+
"name": "txOutputValue",
|
|
285
|
+
"type": "uint64"
|
|
286
|
+
}
|
|
287
|
+
],
|
|
288
|
+
"internalType": "struct BitcoinTx.UTXO",
|
|
289
|
+
"name": "walletMainUtxo",
|
|
290
|
+
"type": "tuple"
|
|
269
291
|
}
|
|
270
292
|
],
|
|
271
293
|
"name": "validateMovingFundsProposal",
|
|
@@ -316,8 +338,8 @@
|
|
|
316
338
|
"type": "function"
|
|
317
339
|
}
|
|
318
340
|
],
|
|
319
|
-
"bytecode": "0x60a06040523480156200001157600080fd5b50604051620031f9380380620031f9833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161312d620000cc6000396000818161016d015281816101c80152818161038501528181610652015281816109c301528181610c1a01528181610d8d0152818161113d0152611662015261312d6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063765f28f911610081578063e0276b261161005b578063e0276b2614610144578063e78cea9214610168578063f03a4bc5146101a757600080fd5b8063765f28f91461013a578063996a756b14610144578063d09520f71461015f57600080fd5b806322e2c371116100b257806322e2c371146101145780636b562cec146100ce5780637405d7bf1461012757600080fd5b80630538ac1b146100ce5780630fde6c76146100f1575b600080fd5b6100d7611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6101046100ff366004612352565b6101ba565b60405190151581526020016100e8565b610104610122366004612352565b6109b6565b61010461013536600461238f565b610d7f565b6100d76201518081565b61014c601481565b60405161ffff90911681526020016100e8565b6100d761025881565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e8565b6101046101b5366004612431565b61156c565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101fa60208601866124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610245573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610269919061258c565b60e00151600581111561027e5761027e61246c565b146102d05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102df602084018461262f565b9150508061032f5760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102c7565b60148111156103805760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190612695565b50509450945050505060008560400135116104725760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8167ffffffffffffffff16856040013511156104dc5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60006104ec846040880135612737565b90506000846104ff8360408a0135612761565b6105099190612774565b905060008567ffffffffffffffff811115610526576105266124bf565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b868110156109a757600061056c60208b018b61262f565b8381811061057c5761057c612788565b905060200281019061058e919061279e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105df92508e0190508d6124a4565b6040516020016106089291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906127fc565b9050806080015163ffffffff166000036107215760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102c7565b6102588160800151610733919061288c565b63ffffffff1642116107ad5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102c7565b60008882608001516107bf919061288c565b90506107cd611c20826128b0565b63ffffffff1642106108475760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102c7565b8661085360018d612761565b86036108665761086389826128cd565b90505b826060015167ffffffffffffffff168111156108ea5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102c7565b60005b8681101561096f578488828151811061090857610908612788565b60200260200101510361095d5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102c7565b80610967816128e0565b9150506108ed565b508387878151811061098357610983612788565b6020026020010181815250505050505050808061099f906128e0565b915050610555565b50600198975050505050505050565b6000806001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109f560208601866124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a64919061258c565b905060028160e001516005811115610a7e57610a7e61246c565b14610af15760405162461bcd60e51b815260206004820152602960248201527f536f757263652077616c6c6574206973206e6f7420696e204d6f76696e67467560448201527f6e6473207374617465000000000000000000000000000000000000000000000060648201526084016102c7565b610100810151610b695760405162461bcd60e51b815260206004820152602a60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206973206e6f7460448201527f207375626d69747465640000000000000000000000000000000000000000000060648201526084016102c7565b610b76602084018461262f565b604051602001610b879291906128f9565b6040516020818303038152906040528051906020012081610100015114610c165760405162461bcd60e51b815260206004820152603a60248201527f5461726765742077616c6c65747320646f206e6f74206d61746368207461726760448201527f65742077616c6c65747320636f6d6d69746d656e74206861736800000000000060648201526084016102c7565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be05abe36040518163ffffffff1660e01b815260040161016060405180830381865afa158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b919061293f565b5050505050505050505090506000846040013511610d0b5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8067ffffffffffffffff1684604001351115610d755760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5060019392505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d5610dbf60208801886124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e919061258c565b60e001516005811115610e4357610e4361246c565b14610e905760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102c7565b6000610e9f6020860186612a1c565b905011610eee5760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102c7565b6014610efd6020860186612a1c565b90501115610f4d5760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102c7565b81610f5b6020860186612a1c565b905014610fd05760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102c7565b610fec6040850135610fe56020870187612a1c565b90506115d7565b600080610ffc6020870187612a1c565b905067ffffffffffffffff811115611016576110166124bf565b60405190808252806020026020018201604052801561103f578160200160208202803683370190505b50905060005b6110526020880188612a1c565b905081101561155d57600061106a6020890189612a1c565b8381811061107a5761107a612788565b9050604002018036038101906110909190612a66565b905060008787848181106110a6576110a6612788565b90506020028101906110b89190612abc565b6110c190612baa565b82516020808501516040519394506000936110f393920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b09190612cac565b9050806040015163ffffffff1660000361120c5760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102c7565b611c20816040015161121e919061288c565b63ffffffff1642116112725760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102c7565b60a081015163ffffffff16156112ca5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102c7565b6112d98482600001518561175e565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b1761130e62015180826128b0565b63ffffffff1642106113885760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102c7565b61139560208d018d6124a4565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff19161461142b5760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102c7565b8560000361143b57816060015197505b876001600160a01b031682606001516001600160a01b0316146114a05760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102c7565b60005b8681101561152557838882815181106114be576114be612788565b6020026020010151036115135760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102c7565b8061151d816128e0565b9150506114a3565b508287878151811061153957611539612788565b60200260200101818152505050505050508080611555906128e0565b915050611045565b506001925050505b9392505050565b600061158361157e602084018461279e565b6119bc565b6115cf5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102c7565b506001919050565b600082116116375760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b60006116438284612737565b90506000826116528386612761565b61165c9190612774565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa1580156116be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e29190612d4f565b5092505067ffffffffffffffff821690506116fd84846128cd565b11156117575760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5050505050565b8051805160208083015160408085015160609095015190516000956117a09561178c95909493919201612dd5565b604051602081830303815290604052611a46565b845190915081146118195760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102c7565b6000838360200151846040015185606001518660800151604051602001611844959493929190612e0b565b6040516020818303038152906040529050600061187c866020015163ffffffff16856000015160400151611a6d90919063ffffffff16565b9050600061188982611c4f565b9050805160141480156118cb57506118a083611c69565b6bffffffffffffffffffffffff19166118ba826000611c90565b6bffffffffffffffffffffffff1916145b156118d95750505050505050565b8051602014801561194057506002836040516118f591906130a0565b602060405180830381855afa158015611912573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061193591906130ac565b61193e82611c9f565b145b1561194e5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102c7565b6000601082146119ce57506000611a40565b611a12600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c909050565b77ffffffffffffffffffffffffffffffffffffffffffffffff1990811614611a3c57506000611a40565b5060015b92915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611a7b85611cba565b909250905060018201611af65760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102c7565b808410611b455760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102c7565b600080611b538460016128cd565b905060005b86811015611bdb57611b6a8883611cd1565b92506000198303611bbd5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611bc783836128cd565b915080611bd3816128e0565b915050611b58565b50611be68782611cd1565b91506000198203611c395760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611c44878284611d3e565b979650505050505050565b6060611a40826008808551611c649190612761565b611e0b565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b60006115658383016020015190565b60008151600003611cb257506000919050565b506020015190565b600080611cc8836000612110565b91509150915091565b6000611cde8260096128cd565b83511015611cef5750600019611a40565b600080611d0685611d018660086128cd565b612110565b909250905060018201611d1f5760001992505050611a40565b80611d2b8360096128cd565b611d3591906128cd565b95945050505050565b606081600003611d5d5750604080516020810190915260008152611565565b6000611d6983856128cd565b90508381118015611d7b575080855110155b611dc75760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102c7565b604051915082604083010160405282825283850182038460208701018481015b80821015611e0057815183830152602082019150611de7565b505050509392505050565b60606000848481518110611e2157611e21612788565b016020015160f81c905082611e378260016130c5565b60ff1614611e55575050604080516020810190915260008152611565565b84611e618560016128cd565b81518110611e7157611e71612788565b016020015160f81c600003611f305760028160ff161015611ea2575050604080516020810190915260008152611565565b600085611eb08660026128cd565b81518110611ec057611ec0612788565b016020015160f81c9050611ed56002836130de565b60ff1681141580611ef3575080602014158015611ef3575080601414155b15611f11576040518060200160405280600081525092505050611565565b611f27611f1f8660036128cd565b879083611d3e565b92505050611565565b6000611f3c8686611c90565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a90000000000000000000000000000000000000000000000000000000000036120505785611f938660036128cd565b81518110611fa357611fa3612788565b60209101015160f81c601414158061201b5750611fd66002611fc586886128cd565b611fcf9190612761565b8790611c90565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612039576040518060200160405280600081525092505050611565565b611f276120478660046128cd565b87906014611d3e565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036120f7578560016120a686886128cd565b6120b09190612761565b815181106120c0576120c0612788565b60209101015160f81c6087146120e9576040518060200160405280600081525092505050611565565b611f276120478660036128cd565b5050506040805160208101909152600081529392505050565b600080600061211f85856122b4565b90508060ff1660000361215457600085858151811061214057612140612788565b016020015190935060f81c91506122ad9050565b836121608260016130c5565b60ff1661216d91906128cd565b8551101561218457600019600092509250506122ad565b60008160ff166002036121c8576121bd6121a96121a28760016128cd565b8890611c90565b62ffff0060e882901c1660f89190911c1790565b61ffff1690506122a3565b8160ff166004036122175761220a6121e46121a28760016128cd565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff1690506122a3565b8160ff166008036122a3576122966122336121a28760016128cd565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b60008282815181106122c8576122c8612788565b016020015160f81c60ff036122df57506008611a40565b8282815181106122f1576122f1612788565b016020015160f81c60fe0361230857506004611a40565b82828151811061231a5761231a612788565b016020015160f81c60fd0361233157506002611a40565b50600092915050565b60006060828403121561234c57600080fd5b50919050565b60006020828403121561236457600080fd5b813567ffffffffffffffff81111561237b57600080fd5b6123878482850161233a565b949350505050565b6000806000604084860312156123a457600080fd5b833567ffffffffffffffff808211156123bc57600080fd5b90850190608082880312156123d057600080fd5b909350602085013590808211156123e657600080fd5b818601915086601f8301126123fa57600080fd5b81358181111561240957600080fd5b8760208260051b850101111561241e57600080fd5b6020830194508093505050509250925092565b60006020828403121561244357600080fd5b813567ffffffffffffffff81111561245a57600080fd5b82016040818503121561156557600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461249f57600080fd5b919050565b6000602082840312156124b657600080fd5b61156582612482565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156124f9576124f96124bf565b60405290565b60405160a0810167ffffffffffffffff811182821017156124f9576124f96124bf565b6040516080810167ffffffffffffffff811182821017156124f9576124f96124bf565b805167ffffffffffffffff8116811461249f57600080fd5b63ffffffff8116811461256f57600080fd5b50565b805161249f8161255d565b80516006811061249f57600080fd5b6000610120828403121561259f57600080fd5b6125a76124d5565b82518152602083015160208201526125c160408401612545565b60408201526125d260608401612572565b60608201526125e360808401612572565b60808201526125f460a08401612572565b60a082015261260560c08401612572565b60c082015261261660e0840161257d565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261264657600080fd5b83018035915067ffffffffffffffff82111561266157600080fd5b6020019150600581901b36038213156122ad57600080fd5b80516bffffffffffffffffffffffff8116811461249f57600080fd5b600080600080600080600060e0888a0312156126b057600080fd5b6126b988612545565b96506126c760208901612545565b95506126d560408901612545565b94506126e360608901612545565b935060808801516126f38161255d565b925061270160a08901612679565b915060c08801516127118161255d565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261274657612746612721565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115611a4057611a4061274b565b60008261278357612783612721565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126127b557600080fd5b83018035915067ffffffffffffffff8211156127d057600080fd5b6020019150368190038213156122ad57600080fd5b80516001600160a01b038116811461249f57600080fd5b600060a0828403121561280e57600080fd5b60405160a0810181811067ffffffffffffffff82111715612831576128316124bf565b60405261283d836127e5565b815261284b60208401612545565b602082015261285c60408401612545565b604082015261286d60608401612545565b606082015260808301516128808161255d565b60808201529392505050565b63ffffffff8181168382160190808211156128a9576128a961274b565b5092915050565b63ffffffff8281168282160390808211156128a9576128a961274b565b80820180821115611a4057611a4061274b565b6000600182016128f2576128f261274b565b5060010190565b60008184825b85811015612934576bffffffffffffffffffffffff1961291e83612482565b16835260209283019291909101906001016128ff565b509095945050505050565b60008060008060008060008060008060006101608c8e03121561296157600080fd5b61296a8c612545565b9a5061297860208d01612545565b995060408c01516129888161255d565b60608d01519099506129998161255d565b97506129a760808d01612679565b965060a08c01516129b78161255d565b60c08d015190965061ffff811681146129cf57600080fd5b94506129dd60e08d01612545565b93506129ec6101008d01612572565b92506129fb6101208d01612679565b9150612a0a6101408d01612572565b90509295989b509295989b9093969950565b6000808335601e19843603018112612a3357600080fd5b83018035915067ffffffffffffffff821115612a4e57600080fd5b6020019150600681901b36038213156122ad57600080fd5b600060408284031215612a7857600080fd5b6040516040810181811067ffffffffffffffff82111715612a9b57612a9b6124bf565b604052823581526020830135612ab08161255d565b60208201529392505050565b60008235609e19833603018112612ad257600080fd5b9190910192915050565b80356001600160e01b03198116811461249f57600080fd5b600082601f830112612b0557600080fd5b813567ffffffffffffffff80821115612b2057612b206124bf565b604051601f8301601f19908116603f01168101908282118183101715612b4857612b486124bf565b81604052838152866020858801011115612b6157600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461249f57600080fd5b600060a08236031215612bbc57600080fd5b612bc46124ff565b823567ffffffffffffffff80821115612bdc57600080fd5b818501915060808236031215612bf157600080fd5b612bf9612522565b612c0283612adc565b8152602083013582811115612c1657600080fd5b612c2236828601612af4565b602083015250604083013582811115612c3a57600080fd5b612c4636828601612af4565b604083015250612c5860608401612adc565b6060820152835250612c6e905060208401612b81565b6020820152612c7f60408401612482565b6040820152612c9060608401612482565b6060820152612ca160808401612adc565b608082015292915050565b600060c08284031215612cbe57600080fd5b60405160c0810181811067ffffffffffffffff82111715612ce157612ce16124bf565b604052612ced836127e5565b8152612cfb60208401612545565b60208201526040830151612d0e8161255d565b6040820152612d1f606084016127e5565b6060820152612d3060808401612545565b608082015260a0830151612d438161255d565b60a08201529392505050565b60008060008060808587031215612d6557600080fd5b612d6e85612545565b9350612d7c60208601612545565b9250612d8a60408601612545565b91506060850151612d9a8161255d565b939692955090935050565b6000815160005b81811015612dc65760208185018101518683015201612dac565b50600093019283525090919050565b60006001600160e01b03198087168352612dfb612df56004850188612da5565b86612da5565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f8201526000612ef5612ee8612ebf602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152612fb9612ee8612ebf612e96612f90601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061309461306b60068301612f67565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b60006115658284612da5565b6000602082840312156130be57600080fd5b5051919050565b60ff8181168382160190811115611a4057611a4061274b565b60ff8281168282160390811115611a4057611a4061274b56fea26469706673582212201dd9537d63434fee66c03d8282ff19d008b93f39a71471a38538c7560f90e2d064736f6c63430008110033",
|
|
320
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063765f28f911610081578063e0276b261161005b578063e0276b2614610144578063e78cea9214610168578063f03a4bc5146101a757600080fd5b8063765f28f91461013a578063996a756b14610144578063d09520f71461015f57600080fd5b806322e2c371116100b257806322e2c371146101145780636b562cec146100ce5780637405d7bf1461012757600080fd5b80630538ac1b146100ce5780630fde6c76146100f1575b600080fd5b6100d7611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6101046100ff366004612352565b6101ba565b60405190151581526020016100e8565b610104610122366004612352565b6109b6565b61010461013536600461238f565b610d7f565b6100d76201518081565b61014c601481565b60405161ffff90911681526020016100e8565b6100d761025881565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e8565b6101046101b5366004612431565b61156c565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101fa60208601866124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610245573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610269919061258c565b60e00151600581111561027e5761027e61246c565b146102d05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102df602084018461262f565b9150508061032f5760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102c7565b60148111156103805760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190612695565b50509450945050505060008560400135116104725760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8167ffffffffffffffff16856040013511156104dc5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60006104ec846040880135612737565b90506000846104ff8360408a0135612761565b6105099190612774565b905060008567ffffffffffffffff811115610526576105266124bf565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b868110156109a757600061056c60208b018b61262f565b8381811061057c5761057c612788565b905060200281019061058e919061279e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105df92508e0190508d6124a4565b6040516020016106089291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906127fc565b9050806080015163ffffffff166000036107215760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102c7565b6102588160800151610733919061288c565b63ffffffff1642116107ad5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102c7565b60008882608001516107bf919061288c565b90506107cd611c20826128b0565b63ffffffff1642106108475760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102c7565b8661085360018d612761565b86036108665761086389826128cd565b90505b826060015167ffffffffffffffff168111156108ea5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102c7565b60005b8681101561096f578488828151811061090857610908612788565b60200260200101510361095d5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102c7565b80610967816128e0565b9150506108ed565b508387878151811061098357610983612788565b6020026020010181815250505050505050808061099f906128e0565b915050610555565b50600198975050505050505050565b6000806001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109f560208601866124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a64919061258c565b905060028160e001516005811115610a7e57610a7e61246c565b14610af15760405162461bcd60e51b815260206004820152602960248201527f536f757263652077616c6c6574206973206e6f7420696e204d6f76696e67467560448201527f6e6473207374617465000000000000000000000000000000000000000000000060648201526084016102c7565b610100810151610b695760405162461bcd60e51b815260206004820152602a60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206973206e6f7460448201527f207375626d69747465640000000000000000000000000000000000000000000060648201526084016102c7565b610b76602084018461262f565b604051602001610b879291906128f9565b6040516020818303038152906040528051906020012081610100015114610c165760405162461bcd60e51b815260206004820152603a60248201527f5461726765742077616c6c65747320646f206e6f74206d61746368207461726760448201527f65742077616c6c65747320636f6d6d69746d656e74206861736800000000000060648201526084016102c7565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be05abe36040518163ffffffff1660e01b815260040161016060405180830381865afa158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b919061293f565b5050505050505050505090506000846040013511610d0b5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8067ffffffffffffffff1684604001351115610d755760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5060019392505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d5610dbf60208801886124a4565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e919061258c565b60e001516005811115610e4357610e4361246c565b14610e905760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102c7565b6000610e9f6020860186612a1c565b905011610eee5760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102c7565b6014610efd6020860186612a1c565b90501115610f4d5760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102c7565b81610f5b6020860186612a1c565b905014610fd05760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102c7565b610fec6040850135610fe56020870187612a1c565b90506115d7565b600080610ffc6020870187612a1c565b905067ffffffffffffffff811115611016576110166124bf565b60405190808252806020026020018201604052801561103f578160200160208202803683370190505b50905060005b6110526020880188612a1c565b905081101561155d57600061106a6020890189612a1c565b8381811061107a5761107a612788565b9050604002018036038101906110909190612a66565b905060008787848181106110a6576110a6612788565b90506020028101906110b89190612abc565b6110c190612baa565b82516020808501516040519394506000936110f393920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b09190612cac565b9050806040015163ffffffff1660000361120c5760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102c7565b611c20816040015161121e919061288c565b63ffffffff1642116112725760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102c7565b60a081015163ffffffff16156112ca5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102c7565b6112d98482600001518561175e565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b1761130e62015180826128b0565b63ffffffff1642106113885760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102c7565b61139560208d018d6124a4565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff19161461142b5760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102c7565b8560000361143b57816060015197505b876001600160a01b031682606001516001600160a01b0316146114a05760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102c7565b60005b8681101561152557838882815181106114be576114be612788565b6020026020010151036115135760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102c7565b8061151d816128e0565b9150506114a3565b508287878151811061153957611539612788565b60200260200101818152505050505050508080611555906128e0565b915050611045565b506001925050505b9392505050565b600061158361157e602084018461279e565b6119bc565b6115cf5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102c7565b506001919050565b600082116116375760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b60006116438284612737565b90506000826116528386612761565b61165c9190612774565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa1580156116be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e29190612d4f565b5092505067ffffffffffffffff821690506116fd84846128cd565b11156117575760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5050505050565b8051805160208083015160408085015160609095015190516000956117a09561178c95909493919201612dd5565b604051602081830303815290604052611a46565b845190915081146118195760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102c7565b6000838360200151846040015185606001518660800151604051602001611844959493929190612e0b565b6040516020818303038152906040529050600061187c866020015163ffffffff16856000015160400151611a6d90919063ffffffff16565b9050600061188982611c4f565b9050805160141480156118cb57506118a083611c69565b6bffffffffffffffffffffffff19166118ba826000611c90565b6bffffffffffffffffffffffff1916145b156118d95750505050505050565b8051602014801561194057506002836040516118f591906130a0565b602060405180830381855afa158015611912573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061193591906130ac565b61193e82611c9f565b145b1561194e5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102c7565b6000601082146119ce57506000611a40565b611a12600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c909050565b77ffffffffffffffffffffffffffffffffffffffffffffffff1990811614611a3c57506000611a40565b5060015b92915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611a7b85611cba565b909250905060018201611af65760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102c7565b808410611b455760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102c7565b600080611b538460016128cd565b905060005b86811015611bdb57611b6a8883611cd1565b92506000198303611bbd5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611bc783836128cd565b915080611bd3816128e0565b915050611b58565b50611be68782611cd1565b91506000198203611c395760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611c44878284611d3e565b979650505050505050565b6060611a40826008808551611c649190612761565b611e0b565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b60006115658383016020015190565b60008151600003611cb257506000919050565b506020015190565b600080611cc8836000612110565b91509150915091565b6000611cde8260096128cd565b83511015611cef5750600019611a40565b600080611d0685611d018660086128cd565b612110565b909250905060018201611d1f5760001992505050611a40565b80611d2b8360096128cd565b611d3591906128cd565b95945050505050565b606081600003611d5d5750604080516020810190915260008152611565565b6000611d6983856128cd565b90508381118015611d7b575080855110155b611dc75760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102c7565b604051915082604083010160405282825283850182038460208701018481015b80821015611e0057815183830152602082019150611de7565b505050509392505050565b60606000848481518110611e2157611e21612788565b016020015160f81c905082611e378260016130c5565b60ff1614611e55575050604080516020810190915260008152611565565b84611e618560016128cd565b81518110611e7157611e71612788565b016020015160f81c600003611f305760028160ff161015611ea2575050604080516020810190915260008152611565565b600085611eb08660026128cd565b81518110611ec057611ec0612788565b016020015160f81c9050611ed56002836130de565b60ff1681141580611ef3575080602014158015611ef3575080601414155b15611f11576040518060200160405280600081525092505050611565565b611f27611f1f8660036128cd565b879083611d3e565b92505050611565565b6000611f3c8686611c90565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a90000000000000000000000000000000000000000000000000000000000036120505785611f938660036128cd565b81518110611fa357611fa3612788565b60209101015160f81c601414158061201b5750611fd66002611fc586886128cd565b611fcf9190612761565b8790611c90565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612039576040518060200160405280600081525092505050611565565b611f276120478660046128cd565b87906014611d3e565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036120f7578560016120a686886128cd565b6120b09190612761565b815181106120c0576120c0612788565b60209101015160f81c6087146120e9576040518060200160405280600081525092505050611565565b611f276120478660036128cd565b5050506040805160208101909152600081529392505050565b600080600061211f85856122b4565b90508060ff1660000361215457600085858151811061214057612140612788565b016020015190935060f81c91506122ad9050565b836121608260016130c5565b60ff1661216d91906128cd565b8551101561218457600019600092509250506122ad565b60008160ff166002036121c8576121bd6121a96121a28760016128cd565b8890611c90565b62ffff0060e882901c1660f89190911c1790565b61ffff1690506122a3565b8160ff166004036122175761220a6121e46121a28760016128cd565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff1690506122a3565b8160ff166008036122a3576122966122336121a28760016128cd565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b60008282815181106122c8576122c8612788565b016020015160f81c60ff036122df57506008611a40565b8282815181106122f1576122f1612788565b016020015160f81c60fe0361230857506004611a40565b82828151811061231a5761231a612788565b016020015160f81c60fd0361233157506002611a40565b50600092915050565b60006060828403121561234c57600080fd5b50919050565b60006020828403121561236457600080fd5b813567ffffffffffffffff81111561237b57600080fd5b6123878482850161233a565b949350505050565b6000806000604084860312156123a457600080fd5b833567ffffffffffffffff808211156123bc57600080fd5b90850190608082880312156123d057600080fd5b909350602085013590808211156123e657600080fd5b818601915086601f8301126123fa57600080fd5b81358181111561240957600080fd5b8760208260051b850101111561241e57600080fd5b6020830194508093505050509250925092565b60006020828403121561244357600080fd5b813567ffffffffffffffff81111561245a57600080fd5b82016040818503121561156557600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461249f57600080fd5b919050565b6000602082840312156124b657600080fd5b61156582612482565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156124f9576124f96124bf565b60405290565b60405160a0810167ffffffffffffffff811182821017156124f9576124f96124bf565b6040516080810167ffffffffffffffff811182821017156124f9576124f96124bf565b805167ffffffffffffffff8116811461249f57600080fd5b63ffffffff8116811461256f57600080fd5b50565b805161249f8161255d565b80516006811061249f57600080fd5b6000610120828403121561259f57600080fd5b6125a76124d5565b82518152602083015160208201526125c160408401612545565b60408201526125d260608401612572565b60608201526125e360808401612572565b60808201526125f460a08401612572565b60a082015261260560c08401612572565b60c082015261261660e0840161257d565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261264657600080fd5b83018035915067ffffffffffffffff82111561266157600080fd5b6020019150600581901b36038213156122ad57600080fd5b80516bffffffffffffffffffffffff8116811461249f57600080fd5b600080600080600080600060e0888a0312156126b057600080fd5b6126b988612545565b96506126c760208901612545565b95506126d560408901612545565b94506126e360608901612545565b935060808801516126f38161255d565b925061270160a08901612679565b915060c08801516127118161255d565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261274657612746612721565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115611a4057611a4061274b565b60008261278357612783612721565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126127b557600080fd5b83018035915067ffffffffffffffff8211156127d057600080fd5b6020019150368190038213156122ad57600080fd5b80516001600160a01b038116811461249f57600080fd5b600060a0828403121561280e57600080fd5b60405160a0810181811067ffffffffffffffff82111715612831576128316124bf565b60405261283d836127e5565b815261284b60208401612545565b602082015261285c60408401612545565b604082015261286d60608401612545565b606082015260808301516128808161255d565b60808201529392505050565b63ffffffff8181168382160190808211156128a9576128a961274b565b5092915050565b63ffffffff8281168282160390808211156128a9576128a961274b565b80820180821115611a4057611a4061274b565b6000600182016128f2576128f261274b565b5060010190565b60008184825b85811015612934576bffffffffffffffffffffffff1961291e83612482565b16835260209283019291909101906001016128ff565b509095945050505050565b60008060008060008060008060008060006101608c8e03121561296157600080fd5b61296a8c612545565b9a5061297860208d01612545565b995060408c01516129888161255d565b60608d01519099506129998161255d565b97506129a760808d01612679565b965060a08c01516129b78161255d565b60c08d015190965061ffff811681146129cf57600080fd5b94506129dd60e08d01612545565b93506129ec6101008d01612572565b92506129fb6101208d01612679565b9150612a0a6101408d01612572565b90509295989b509295989b9093969950565b6000808335601e19843603018112612a3357600080fd5b83018035915067ffffffffffffffff821115612a4e57600080fd5b6020019150600681901b36038213156122ad57600080fd5b600060408284031215612a7857600080fd5b6040516040810181811067ffffffffffffffff82111715612a9b57612a9b6124bf565b604052823581526020830135612ab08161255d565b60208201529392505050565b60008235609e19833603018112612ad257600080fd5b9190910192915050565b80356001600160e01b03198116811461249f57600080fd5b600082601f830112612b0557600080fd5b813567ffffffffffffffff80821115612b2057612b206124bf565b604051601f8301601f19908116603f01168101908282118183101715612b4857612b486124bf565b81604052838152866020858801011115612b6157600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461249f57600080fd5b600060a08236031215612bbc57600080fd5b612bc46124ff565b823567ffffffffffffffff80821115612bdc57600080fd5b818501915060808236031215612bf157600080fd5b612bf9612522565b612c0283612adc565b8152602083013582811115612c1657600080fd5b612c2236828601612af4565b602083015250604083013582811115612c3a57600080fd5b612c4636828601612af4565b604083015250612c5860608401612adc565b6060820152835250612c6e905060208401612b81565b6020820152612c7f60408401612482565b6040820152612c9060608401612482565b6060820152612ca160808401612adc565b608082015292915050565b600060c08284031215612cbe57600080fd5b60405160c0810181811067ffffffffffffffff82111715612ce157612ce16124bf565b604052612ced836127e5565b8152612cfb60208401612545565b60208201526040830151612d0e8161255d565b6040820152612d1f606084016127e5565b6060820152612d3060808401612545565b608082015260a0830151612d438161255d565b60a08201529392505050565b60008060008060808587031215612d6557600080fd5b612d6e85612545565b9350612d7c60208601612545565b9250612d8a60408601612545565b91506060850151612d9a8161255d565b939692955090935050565b6000815160005b81811015612dc65760208185018101518683015201612dac565b50600093019283525090919050565b60006001600160e01b03198087168352612dfb612df56004850188612da5565b86612da5565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f8201526000612ef5612ee8612ebf602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152612fb9612ee8612ebf612e96612f90601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061309461306b60068301612f67565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b60006115658284612da5565b6000602082840312156130be57600080fd5b5051919050565b60ff8181168382160190811115611a4057611a4061274b565b60ff8281168282160390811115611a4057611a4061274b56fea26469706673582212201dd9537d63434fee66c03d8282ff19d008b93f39a71471a38538c7560f90e2d064736f6c63430008110033",
|
|
341
|
+
"bytecode": "0x60a06040523480156200001157600080fd5b506040516200342038038062003420833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051613354620000cc6000396000818161016d015281816101c80152818161038501528181610652015281816109c401528181610d74015281816111b001528181611408015261172b01526133546000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063996a756b11610081578063e0276b261161005b578063e0276b2614610131578063e78cea9214610168578063f03a4bc5146101a757600080fd5b8063996a756b146101315780639b337db21461014c578063d09520f71461015f57600080fd5b80636b562cec116100b25780636b562cec146100ce5780637405d7bf14610114578063765f28f91461012757600080fd5b80630538ac1b146100ce5780630fde6c76146100f1575b600080fd5b6100d7611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6101046100ff3660046124e4565b6101ba565b60405190151581526020016100e8565b610104610122366004612521565b6109b6565b6100d76201518081565b610139601481565b60405161ffff90911681526020016100e8565b61010461015a3660046125c3565b6111a3565b6100d761025881565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e8565b6101046101b5366004612612565b611635565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101fa6020860186612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102699190612776565b60e00151600581111561027e5761027e61264d565b146102d05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102df6020840184612819565b9150508061032f5760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102c7565b60148111156103805760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610405919061287f565b50509450945050505060008560400135116104725760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8167ffffffffffffffff16856040013511156104dc5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60006104ec84604088013561292d565b90506000846104ff8360408a0135612957565b610509919061296a565b905060008567ffffffffffffffff811115610526576105266126a0565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b868110156109a757600061056c60208b018b612819565b8381811061057c5761057c61297e565b905060200281019061058e9190612994565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105df92508e0190508d612685565b6040516020016106089291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906129f2565b9050806080015163ffffffff166000036107215760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102c7565b61025881608001516107339190612a88565b63ffffffff1642116107ad5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102c7565b60008882608001516107bf9190612a88565b90506107cd611c2082612aac565b63ffffffff1642106108475760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102c7565b8661085360018d612957565b8603610866576108638982612ac9565b90505b826060015167ffffffffffffffff168111156108ea5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102c7565b60005b8681101561096f57848882815181106109085761090861297e565b60200260200101510361095d5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102c7565b8061096781612adc565b9150506108ed565b50838787815181106109835761098361297e565b6020026020010181815250505050505050808061099f90612adc565b915050610555565b50600198975050505050505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109f66020880188612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190612776565b60e001516005811115610a7a57610a7a61264d565b14610ac75760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102c7565b6000610ad66020860186612af5565b905011610b255760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102c7565b6014610b346020860186612af5565b90501115610b845760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102c7565b81610b926020860186612af5565b905014610c075760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102c7565b610c236040850135610c1c6020870187612af5565b90506116a0565b600080610c336020870187612af5565b905067ffffffffffffffff811115610c4d57610c4d6126a0565b604051908082528060200260200182016040528015610c76578160200160208202803683370190505b50905060005b610c896020880188612af5565b9050811015611194576000610ca16020890189612af5565b83818110610cb157610cb161297e565b905060400201803603810190610cc79190612b3f565b90506000878784818110610cdd57610cdd61297e565b9050602002810190610cef9190612b95565b610cf890612c72565b8251602080850151604051939450600093610d2a93920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190612d74565b9050806040015163ffffffff16600003610e435760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102c7565b611c208160400151610e559190612a88565b63ffffffff164211610ea95760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102c7565b60a081015163ffffffff1615610f015760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102c7565b610f1084826000015185611827565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b17610f456201518082612aac565b63ffffffff164210610fbf5760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102c7565b610fcc60208d018d612685565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff1916146110625760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102c7565b8560000361107257816060015197505b876001600160a01b031682606001516001600160a01b0316146110d75760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102c7565b60005b8681101561115c57838882815181106110f5576110f561297e565b60200260200101510361114a5760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102c7565b8061115481612adc565b9150506110da565b50828787815181106111705761117061297e565b6020026020010181815250505050505050808061118c90612adc565b915050610c7c565b506001925050505b9392505050565b6000806001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56111e26020870187612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612776565b905060028160e00151600581111561126b5761126b61264d565b146112de5760405162461bcd60e51b815260206004820152602960248201527f536f757263652077616c6c6574206973206e6f7420696e204d6f76696e67467560448201527f6e6473207374617465000000000000000000000000000000000000000000000060648201526084016102c7565b6101008101516113565760405162461bcd60e51b815260206004820152602a60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206973206e6f7460448201527f207375626d69747465640000000000000000000000000000000000000000000060648201526084016102c7565b6113636020850185612819565b604051602001611374929190612e1b565b60405160208183030381529060405280519060200120816101000151146114035760405162461bcd60e51b815260206004820152603a60248201527f5461726765742077616c6c65747320646f206e6f74206d61746368207461726760448201527f65742077616c6c65747320636f6d6d69746d656e74206861736800000000000060648201526084016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be05abe36040518163ffffffff1660e01b815260040161016060405180830381865afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114899190612e61565b5050505050505050509150915060006114a6846020015187611a85565b90508167ffffffffffffffff168167ffffffffffffffff1610156115585760405162461bcd60e51b815260206004820152604260248201527f536f757263652077616c6c6574204254432062616c616e63652069732062656c60448201527f6f7720746865206d6f76696e672066756e64732064757374207468726573686f60648201527f6c64000000000000000000000000000000000000000000000000000000000000608482015260a4016102c7565b60008760400135116115bc5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8267ffffffffffffffff16876040013511156116265760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60019450505050505b92915050565b600061164c6116476020840184612994565b611b60565b6116985760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102c7565b506001919050565b600082116117005760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b600061170c828461292d565b905060008261171b8386612957565b611725919061296a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ab9190612f44565b5092505067ffffffffffffffff821690506117c68484612ac9565b11156118205760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5050505050565b8051805160208083015160408085015160609095015190516000956118699561185595909493919201612fd3565b604051602081830303815290604052611bd8565b845190915081146118e25760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102c7565b600083836020015184604001518560600151866080015160405160200161190d959493929190613009565b60405160208183030381529060405290506000611945866020015163ffffffff16856000015160400151611bff90919063ffffffff16565b9050600061195282611de1565b905080516014148015611994575061196983611dfb565b6bffffffffffffffffffffffff1916611983826000611e22565b6bffffffffffffffffffffffff1916145b156119a25750505050505050565b80516020148015611a0957506002836040516119be919061328d565b602060405180830381855afa1580156119db573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906119fe9190613299565b611a0782611e31565b145b15611a175750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102c7565b6000821561162f57828235611aa060408501602086016132b2565b611ab060608601604087016132cf565b604051602001611aed9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014611b505760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f206461746100000060448201526064016102c7565b61119c60608301604084016132cf565b600060108214611b725750600061162f565b611bb6600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611e229050565b6001600160c01b031990811614611bcf5750600061162f565b50600192915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611c0d85611e4c565b909250905060018201611c885760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102c7565b808410611cd75760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102c7565b600080611ce5846001612ac9565b905060005b86811015611d6d57611cfc8883611e63565b92506000198303611d4f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611d598383612ac9565b915080611d6581612adc565b915050611cea565b50611d788782611e63565b91506000198203611dcb5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611dd6878284611ed0565b979650505050505050565b606061162f826008808551611df69190612957565b611f9d565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061119c8383016020015190565b60008151600003611e4457506000919050565b506020015190565b600080611e5a8360006122a2565b91509150915091565b6000611e70826009612ac9565b83511015611e81575060001961162f565b600080611e9885611e93866008612ac9565b6122a2565b909250905060018201611eb1576000199250505061162f565b80611ebd836009612ac9565b611ec79190612ac9565b95945050505050565b606081600003611eef575060408051602081019091526000815261119c565b6000611efb8385612ac9565b90508381118015611f0d575080855110155b611f595760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102c7565b604051915082604083010160405282825283850182038460208701018481015b80821015611f9257815183830152602082019150611f79565b505050509392505050565b60606000848481518110611fb357611fb361297e565b016020015160f81c905082611fc98260016132ec565b60ff1614611fe757505060408051602081019091526000815261119c565b84611ff3856001612ac9565b815181106120035761200361297e565b016020015160f81c6000036120c25760028160ff16101561203457505060408051602081019091526000815261119c565b600085612042866002612ac9565b815181106120525761205261297e565b016020015160f81c9050612067600283613305565b60ff1681141580612085575080602014158015612085575080601414155b156120a357604051806020016040528060008152509250505061119c565b6120b96120b1866003612ac9565b879083611ed0565b9250505061119c565b60006120ce8686611e22565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a90000000000000000000000000000000000000000000000000000000000036121e25785612125866003612ac9565b815181106121355761213561297e565b60209101015160f81c60141415806121ad575061216860026121578688612ac9565b6121619190612957565b8790611e22565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b156121cb57604051806020016040528060008152509250505061119c565b6120b96121d9866004612ac9565b87906014611ed0565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a914000000000000000000000000000000000000000000000000000000000003612289578560016122388688612ac9565b6122429190612957565b815181106122525761225261297e565b60209101015160f81c60871461227b57604051806020016040528060008152509250505061119c565b6120b96121d9866003612ac9565b5050506040805160208101909152600081529392505050565b60008060006122b18585612446565b90508060ff166000036122e65760008585815181106122d2576122d261297e565b016020015190935060f81c915061243f9050565b836122f28260016132ec565b60ff166122ff9190612ac9565b85511015612316576000196000925092505061243f565b60008160ff1660020361235a5761234f61233b612334876001612ac9565b8890611e22565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612435565b8160ff166004036123a95761239c612376612334876001612ac9565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050612435565b8160ff16600803612435576124286123c5612334876001612ac9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061245a5761245a61297e565b016020015160f81c60ff036124715750600861162f565b8282815181106124835761248361297e565b016020015160f81c60fe0361249a5750600461162f565b8282815181106124ac576124ac61297e565b016020015160f81c60fd036124c35750600261162f565b50600092915050565b6000606082840312156124de57600080fd5b50919050565b6000602082840312156124f657600080fd5b813567ffffffffffffffff81111561250d57600080fd5b612519848285016124cc565b949350505050565b60008060006040848603121561253657600080fd5b833567ffffffffffffffff8082111561254e57600080fd5b908501906080828803121561256257600080fd5b9093506020850135908082111561257857600080fd5b818601915086601f83011261258c57600080fd5b81358181111561259b57600080fd5b8760208260051b85010111156125b057600080fd5b6020830194508093505050509250925092565b600080608083850312156125d657600080fd5b823567ffffffffffffffff8111156125ed57600080fd5b6125f9858286016124cc565b92505061260984602085016124cc565b90509250929050565b60006020828403121561262457600080fd5b813567ffffffffffffffff81111561263b57600080fd5b82016040818503121561119c57600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461268057600080fd5b919050565b60006020828403121561269757600080fd5b61119c82612663565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156126da576126da6126a0565b60405290565b60405160a0810167ffffffffffffffff811182821017156126da576126da6126a0565b6040516080810167ffffffffffffffff811182821017156126da576126da6126a0565b67ffffffffffffffff8116811461273c57600080fd5b50565b805161268081612726565b63ffffffff8116811461273c57600080fd5b80516126808161274a565b80516006811061268057600080fd5b6000610120828403121561278957600080fd5b6127916126b6565b82518152602083015160208201526127ab6040840161273f565b60408201526127bc6060840161275c565b60608201526127cd6080840161275c565b60808201526127de60a0840161275c565b60a08201526127ef60c0840161275c565b60c082015261280060e08401612767565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261283057600080fd5b83018035915067ffffffffffffffff82111561284b57600080fd5b6020019150600581901b360382131561243f57600080fd5b80516bffffffffffffffffffffffff8116811461268057600080fd5b600080600080600080600060e0888a03121561289a57600080fd5b87516128a581612726565b60208901519097506128b681612726565b60408901519096506128c781612726565b60608901519095506128d881612726565b60808901519094506128e98161274a565b92506128f760a08901612863565b915060c08801516129078161274a565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261293c5761293c612917565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111561162f5761162f612941565b60008261297957612979612917565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126129ab57600080fd5b83018035915067ffffffffffffffff8211156129c657600080fd5b60200191503681900382131561243f57600080fd5b80516001600160a01b038116811461268057600080fd5b600060a08284031215612a0457600080fd5b60405160a0810181811067ffffffffffffffff82111715612a2757612a276126a0565b604052612a33836129db565b81526020830151612a4381612726565b60208201526040830151612a5681612726565b60408201526060830151612a6981612726565b60608201526080830151612a7c8161274a565b60808201529392505050565b63ffffffff818116838216019080821115612aa557612aa5612941565b5092915050565b63ffffffff828116828216039080821115612aa557612aa5612941565b8082018082111561162f5761162f612941565b600060018201612aee57612aee612941565b5060010190565b6000808335601e19843603018112612b0c57600080fd5b83018035915067ffffffffffffffff821115612b2757600080fd5b6020019150600681901b360382131561243f57600080fd5b600060408284031215612b5157600080fd5b6040516040810181811067ffffffffffffffff82111715612b7457612b746126a0565b604052823581526020830135612b898161274a565b60208201529392505050565b60008235609e19833603018112612bab57600080fd5b9190910192915050565b80356001600160e01b03198116811461268057600080fd5b600082601f830112612bde57600080fd5b813567ffffffffffffffff80821115612bf957612bf96126a0565b604051601f8301601f19908116603f01168101908282118183101715612c2157612c216126a0565b81604052838152866020858801011115612c3a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160c01b03198116811461268057600080fd5b600060a08236031215612c8457600080fd5b612c8c6126e0565b823567ffffffffffffffff80821115612ca457600080fd5b818501915060808236031215612cb957600080fd5b612cc1612703565b612cca83612bb5565b8152602083013582811115612cde57600080fd5b612cea36828601612bcd565b602083015250604083013582811115612d0257600080fd5b612d0e36828601612bcd565b604083015250612d2060608401612bb5565b6060820152835250612d36905060208401612c5a565b6020820152612d4760408401612663565b6040820152612d5860608401612663565b6060820152612d6960808401612bb5565b608082015292915050565b600060c08284031215612d8657600080fd5b60405160c0810181811067ffffffffffffffff82111715612da957612da96126a0565b604052612db5836129db565b81526020830151612dc581612726565b60208201526040830151612dd88161274a565b6040820152612de9606084016129db565b60608201526080830151612dfc81612726565b608082015260a0830151612e0f8161274a565b60a08201529392505050565b60008184825b85811015612e56576bffffffffffffffffffffffff19612e4083612663565b1683526020928301929190910190600101612e21565b509095945050505050565b60008060008060008060008060008060006101608c8e031215612e8357600080fd5b8b51612e8e81612726565b60208d0151909b50612e9f81612726565b60408d0151909a50612eb08161274a565b60608d0151909950612ec18161274a565b9750612ecf60808d01612863565b965060a08c0151612edf8161274a565b60c08d015190965061ffff81168114612ef757600080fd5b9450612f0560e08d0161273f565b9350612f146101008d0161275c565b9250612f236101208d01612863565b9150612f326101408d0161275c565b90509295989b509295989b9093969950565b60008060008060808587031215612f5a57600080fd5b8451612f6581612726565b6020860151909450612f7681612726565b6040860151909350612f8781612726565b6060860151909250612f988161274a565b939692955090935050565b6000815160005b81811015612fc45760208185018101518683015201612faa565b50600093019283525090919050565b60006001600160e01b03198087168352612ff9612ff36004850188612fa3565b86612fa3565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130e26130d56130ac602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131a66130d56130ac61308361317d601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061328161325860068301613154565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061119c8284612fa3565b6000602082840312156132ab57600080fd5b5051919050565b6000602082840312156132c457600080fd5b813561119c8161274a565b6000602082840312156132e157600080fd5b813561119c81612726565b60ff818116838216019081111561162f5761162f612941565b60ff828116828216039081111561162f5761162f61294156fea26469706673582212209c2e83078c9c351fac3b769b63f36805bccbf2b492482c4840a817fa5d635c3c64736f6c63430008110033",
|
|
342
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063996a756b11610081578063e0276b261161005b578063e0276b2614610131578063e78cea9214610168578063f03a4bc5146101a757600080fd5b8063996a756b146101315780639b337db21461014c578063d09520f71461015f57600080fd5b80636b562cec116100b25780636b562cec146100ce5780637405d7bf14610114578063765f28f91461012757600080fd5b80630538ac1b146100ce5780630fde6c76146100f1575b600080fd5b6100d7611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6101046100ff3660046124e4565b6101ba565b60405190151581526020016100e8565b610104610122366004612521565b6109b6565b6100d76201518081565b610139601481565b60405161ffff90911681526020016100e8565b61010461015a3660046125c3565b6111a3565b6100d761025881565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e8565b6101046101b5366004612612565b611635565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101fa6020860186612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102699190612776565b60e00151600581111561027e5761027e61264d565b146102d05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102df6020840184612819565b9150508061032f5760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102c7565b60148111156103805760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610405919061287f565b50509450945050505060008560400135116104725760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8167ffffffffffffffff16856040013511156104dc5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60006104ec84604088013561292d565b90506000846104ff8360408a0135612957565b610509919061296a565b905060008567ffffffffffffffff811115610526576105266126a0565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b868110156109a757600061056c60208b018b612819565b8381811061057c5761057c61297e565b905060200281019061058e9190612994565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105df92508e0190508d612685565b6040516020016106089291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906129f2565b9050806080015163ffffffff166000036107215760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102c7565b61025881608001516107339190612a88565b63ffffffff1642116107ad5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102c7565b60008882608001516107bf9190612a88565b90506107cd611c2082612aac565b63ffffffff1642106108475760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102c7565b8661085360018d612957565b8603610866576108638982612ac9565b90505b826060015167ffffffffffffffff168111156108ea5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102c7565b60005b8681101561096f57848882815181106109085761090861297e565b60200260200101510361095d5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102c7565b8061096781612adc565b9150506108ed565b50838787815181106109835761098361297e565b6020026020010181815250505050505050808061099f90612adc565b915050610555565b50600198975050505050505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109f66020880188612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190612776565b60e001516005811115610a7a57610a7a61264d565b14610ac75760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102c7565b6000610ad66020860186612af5565b905011610b255760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102c7565b6014610b346020860186612af5565b90501115610b845760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102c7565b81610b926020860186612af5565b905014610c075760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102c7565b610c236040850135610c1c6020870187612af5565b90506116a0565b600080610c336020870187612af5565b905067ffffffffffffffff811115610c4d57610c4d6126a0565b604051908082528060200260200182016040528015610c76578160200160208202803683370190505b50905060005b610c896020880188612af5565b9050811015611194576000610ca16020890189612af5565b83818110610cb157610cb161297e565b905060400201803603810190610cc79190612b3f565b90506000878784818110610cdd57610cdd61297e565b9050602002810190610cef9190612b95565b610cf890612c72565b8251602080850151604051939450600093610d2a93920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190612d74565b9050806040015163ffffffff16600003610e435760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102c7565b611c208160400151610e559190612a88565b63ffffffff164211610ea95760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102c7565b60a081015163ffffffff1615610f015760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102c7565b610f1084826000015185611827565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b17610f456201518082612aac565b63ffffffff164210610fbf5760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102c7565b610fcc60208d018d612685565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff1916146110625760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102c7565b8560000361107257816060015197505b876001600160a01b031682606001516001600160a01b0316146110d75760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102c7565b60005b8681101561115c57838882815181106110f5576110f561297e565b60200260200101510361114a5760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102c7565b8061115481612adc565b9150506110da565b50828787815181106111705761117061297e565b6020026020010181815250505050505050808061118c90612adc565b915050610c7c565b506001925050505b9392505050565b6000806001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56111e26020870187612685565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612776565b905060028160e00151600581111561126b5761126b61264d565b146112de5760405162461bcd60e51b815260206004820152602960248201527f536f757263652077616c6c6574206973206e6f7420696e204d6f76696e67467560448201527f6e6473207374617465000000000000000000000000000000000000000000000060648201526084016102c7565b6101008101516113565760405162461bcd60e51b815260206004820152602a60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206973206e6f7460448201527f207375626d69747465640000000000000000000000000000000000000000000060648201526084016102c7565b6113636020850185612819565b604051602001611374929190612e1b565b60405160208183030381529060405280519060200120816101000151146114035760405162461bcd60e51b815260206004820152603a60248201527f5461726765742077616c6c65747320646f206e6f74206d61746368207461726760448201527f65742077616c6c65747320636f6d6d69746d656e74206861736800000000000060648201526084016102c7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be05abe36040518163ffffffff1660e01b815260040161016060405180830381865afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114899190612e61565b5050505050505050509150915060006114a6846020015187611a85565b90508167ffffffffffffffff168167ffffffffffffffff1610156115585760405162461bcd60e51b815260206004820152604260248201527f536f757263652077616c6c6574204254432062616c616e63652069732062656c60448201527f6f7720746865206d6f76696e672066756e64732064757374207468726573686f60648201527f6c64000000000000000000000000000000000000000000000000000000000000608482015260a4016102c7565b60008760400135116115bc5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b8267ffffffffffffffff16876040013511156116265760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b60019450505050505b92915050565b600061164c6116476020840184612994565b611b60565b6116985760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102c7565b506001919050565b600082116117005760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102c7565b600061170c828461292d565b905060008261171b8386612957565b611725919061296a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ab9190612f44565b5092505067ffffffffffffffff821690506117c68484612ac9565b11156118205760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102c7565b5050505050565b8051805160208083015160408085015160609095015190516000956118699561185595909493919201612fd3565b604051602081830303815290604052611bd8565b845190915081146118e25760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102c7565b600083836020015184604001518560600151866080015160405160200161190d959493929190613009565b60405160208183030381529060405290506000611945866020015163ffffffff16856000015160400151611bff90919063ffffffff16565b9050600061195282611de1565b905080516014148015611994575061196983611dfb565b6bffffffffffffffffffffffff1916611983826000611e22565b6bffffffffffffffffffffffff1916145b156119a25750505050505050565b80516020148015611a0957506002836040516119be919061328d565b602060405180830381855afa1580156119db573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906119fe9190613299565b611a0782611e31565b145b15611a175750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102c7565b6000821561162f57828235611aa060408501602086016132b2565b611ab060608601604087016132cf565b604051602001611aed9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014611b505760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f206461746100000060448201526064016102c7565b61119c60608301604084016132cf565b600060108214611b725750600061162f565b611bb6600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611e229050565b6001600160c01b031990811614611bcf5750600061162f565b50600192915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611c0d85611e4c565b909250905060018201611c885760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102c7565b808410611cd75760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102c7565b600080611ce5846001612ac9565b905060005b86811015611d6d57611cfc8883611e63565b92506000198303611d4f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611d598383612ac9565b915080611d6581612adc565b915050611cea565b50611d788782611e63565b91506000198203611dcb5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102c7565b611dd6878284611ed0565b979650505050505050565b606061162f826008808551611df69190612957565b611f9d565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061119c8383016020015190565b60008151600003611e4457506000919050565b506020015190565b600080611e5a8360006122a2565b91509150915091565b6000611e70826009612ac9565b83511015611e81575060001961162f565b600080611e9885611e93866008612ac9565b6122a2565b909250905060018201611eb1576000199250505061162f565b80611ebd836009612ac9565b611ec79190612ac9565b95945050505050565b606081600003611eef575060408051602081019091526000815261119c565b6000611efb8385612ac9565b90508381118015611f0d575080855110155b611f595760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102c7565b604051915082604083010160405282825283850182038460208701018481015b80821015611f9257815183830152602082019150611f79565b505050509392505050565b60606000848481518110611fb357611fb361297e565b016020015160f81c905082611fc98260016132ec565b60ff1614611fe757505060408051602081019091526000815261119c565b84611ff3856001612ac9565b815181106120035761200361297e565b016020015160f81c6000036120c25760028160ff16101561203457505060408051602081019091526000815261119c565b600085612042866002612ac9565b815181106120525761205261297e565b016020015160f81c9050612067600283613305565b60ff1681141580612085575080602014158015612085575080601414155b156120a357604051806020016040528060008152509250505061119c565b6120b96120b1866003612ac9565b879083611ed0565b9250505061119c565b60006120ce8686611e22565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a90000000000000000000000000000000000000000000000000000000000036121e25785612125866003612ac9565b815181106121355761213561297e565b60209101015160f81c60141415806121ad575061216860026121578688612ac9565b6121619190612957565b8790611e22565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b156121cb57604051806020016040528060008152509250505061119c565b6120b96121d9866004612ac9565b87906014611ed0565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a914000000000000000000000000000000000000000000000000000000000003612289578560016122388688612ac9565b6122429190612957565b815181106122525761225261297e565b60209101015160f81c60871461227b57604051806020016040528060008152509250505061119c565b6120b96121d9866003612ac9565b5050506040805160208101909152600081529392505050565b60008060006122b18585612446565b90508060ff166000036122e65760008585815181106122d2576122d261297e565b016020015190935060f81c915061243f9050565b836122f28260016132ec565b60ff166122ff9190612ac9565b85511015612316576000196000925092505061243f565b60008160ff1660020361235a5761234f61233b612334876001612ac9565b8890611e22565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612435565b8160ff166004036123a95761239c612376612334876001612ac9565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050612435565b8160ff16600803612435576124286123c5612334876001612ac9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061245a5761245a61297e565b016020015160f81c60ff036124715750600861162f565b8282815181106124835761248361297e565b016020015160f81c60fe0361249a5750600461162f565b8282815181106124ac576124ac61297e565b016020015160f81c60fd036124c35750600261162f565b50600092915050565b6000606082840312156124de57600080fd5b50919050565b6000602082840312156124f657600080fd5b813567ffffffffffffffff81111561250d57600080fd5b612519848285016124cc565b949350505050565b60008060006040848603121561253657600080fd5b833567ffffffffffffffff8082111561254e57600080fd5b908501906080828803121561256257600080fd5b9093506020850135908082111561257857600080fd5b818601915086601f83011261258c57600080fd5b81358181111561259b57600080fd5b8760208260051b85010111156125b057600080fd5b6020830194508093505050509250925092565b600080608083850312156125d657600080fd5b823567ffffffffffffffff8111156125ed57600080fd5b6125f9858286016124cc565b92505061260984602085016124cc565b90509250929050565b60006020828403121561262457600080fd5b813567ffffffffffffffff81111561263b57600080fd5b82016040818503121561119c57600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461268057600080fd5b919050565b60006020828403121561269757600080fd5b61119c82612663565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156126da576126da6126a0565b60405290565b60405160a0810167ffffffffffffffff811182821017156126da576126da6126a0565b6040516080810167ffffffffffffffff811182821017156126da576126da6126a0565b67ffffffffffffffff8116811461273c57600080fd5b50565b805161268081612726565b63ffffffff8116811461273c57600080fd5b80516126808161274a565b80516006811061268057600080fd5b6000610120828403121561278957600080fd5b6127916126b6565b82518152602083015160208201526127ab6040840161273f565b60408201526127bc6060840161275c565b60608201526127cd6080840161275c565b60808201526127de60a0840161275c565b60a08201526127ef60c0840161275c565b60c082015261280060e08401612767565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261283057600080fd5b83018035915067ffffffffffffffff82111561284b57600080fd5b6020019150600581901b360382131561243f57600080fd5b80516bffffffffffffffffffffffff8116811461268057600080fd5b600080600080600080600060e0888a03121561289a57600080fd5b87516128a581612726565b60208901519097506128b681612726565b60408901519096506128c781612726565b60608901519095506128d881612726565b60808901519094506128e98161274a565b92506128f760a08901612863565b915060c08801516129078161274a565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261293c5761293c612917565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111561162f5761162f612941565b60008261297957612979612917565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126129ab57600080fd5b83018035915067ffffffffffffffff8211156129c657600080fd5b60200191503681900382131561243f57600080fd5b80516001600160a01b038116811461268057600080fd5b600060a08284031215612a0457600080fd5b60405160a0810181811067ffffffffffffffff82111715612a2757612a276126a0565b604052612a33836129db565b81526020830151612a4381612726565b60208201526040830151612a5681612726565b60408201526060830151612a6981612726565b60608201526080830151612a7c8161274a565b60808201529392505050565b63ffffffff818116838216019080821115612aa557612aa5612941565b5092915050565b63ffffffff828116828216039080821115612aa557612aa5612941565b8082018082111561162f5761162f612941565b600060018201612aee57612aee612941565b5060010190565b6000808335601e19843603018112612b0c57600080fd5b83018035915067ffffffffffffffff821115612b2757600080fd5b6020019150600681901b360382131561243f57600080fd5b600060408284031215612b5157600080fd5b6040516040810181811067ffffffffffffffff82111715612b7457612b746126a0565b604052823581526020830135612b898161274a565b60208201529392505050565b60008235609e19833603018112612bab57600080fd5b9190910192915050565b80356001600160e01b03198116811461268057600080fd5b600082601f830112612bde57600080fd5b813567ffffffffffffffff80821115612bf957612bf96126a0565b604051601f8301601f19908116603f01168101908282118183101715612c2157612c216126a0565b81604052838152866020858801011115612c3a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160c01b03198116811461268057600080fd5b600060a08236031215612c8457600080fd5b612c8c6126e0565b823567ffffffffffffffff80821115612ca457600080fd5b818501915060808236031215612cb957600080fd5b612cc1612703565b612cca83612bb5565b8152602083013582811115612cde57600080fd5b612cea36828601612bcd565b602083015250604083013582811115612d0257600080fd5b612d0e36828601612bcd565b604083015250612d2060608401612bb5565b6060820152835250612d36905060208401612c5a565b6020820152612d4760408401612663565b6040820152612d5860608401612663565b6060820152612d6960808401612bb5565b608082015292915050565b600060c08284031215612d8657600080fd5b60405160c0810181811067ffffffffffffffff82111715612da957612da96126a0565b604052612db5836129db565b81526020830151612dc581612726565b60208201526040830151612dd88161274a565b6040820152612de9606084016129db565b60608201526080830151612dfc81612726565b608082015260a0830151612e0f8161274a565b60a08201529392505050565b60008184825b85811015612e56576bffffffffffffffffffffffff19612e4083612663565b1683526020928301929190910190600101612e21565b509095945050505050565b60008060008060008060008060008060006101608c8e031215612e8357600080fd5b8b51612e8e81612726565b60208d0151909b50612e9f81612726565b60408d0151909a50612eb08161274a565b60608d0151909950612ec18161274a565b9750612ecf60808d01612863565b965060a08c0151612edf8161274a565b60c08d015190965061ffff81168114612ef757600080fd5b9450612f0560e08d0161273f565b9350612f146101008d0161275c565b9250612f236101208d01612863565b9150612f326101408d0161275c565b90509295989b509295989b9093969950565b60008060008060808587031215612f5a57600080fd5b8451612f6581612726565b6020860151909450612f7681612726565b6040860151909350612f8781612726565b6060860151909250612f988161274a565b939692955090935050565b6000815160005b81811015612fc45760208185018101518683015201612faa565b50600093019283525090919050565b60006001600160e01b03198087168352612ff9612ff36004850188612fa3565b86612fa3565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130e26130d56130ac602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131a66130d56130ac61308361317d601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061328161325860068301613154565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061119c8284612fa3565b6000602082840312156132ab57600080fd5b5051919050565b6000602082840312156132c457600080fd5b813561119c8161274a565b6000602082840312156132e157600080fd5b813561119c81612726565b60ff818116838216019081111561162f5761162f612941565b60ff828116828216039081111561162f5761162f61294156fea26469706673582212209c2e83078c9c351fac3b769b63f36805bccbf2b492482c4840a817fa5d635c3c64736f6c63430008110033",
|
|
321
343
|
"linkReferences": {},
|
|
322
344
|
"deployedLinkReferences": {}
|
|
323
345
|
}
|
|
@@ -603,6 +603,7 @@ contract WalletProposalValidator {
|
|
|
603
603
|
/// most of the work can be done using a single readonly contract
|
|
604
604
|
/// call.
|
|
605
605
|
/// @param proposal The moving funds proposal to validate.
|
|
606
|
+
/// @param walletMainUtxo The main UTXO of the source wallet.
|
|
606
607
|
/// @return True if the proposal is valid. Reverts otherwise.
|
|
607
608
|
/// @dev Notice that this function is meant to be invoked after the moving
|
|
608
609
|
/// funds commitment has already been submitted. This function skips
|
|
@@ -613,15 +614,16 @@ contract WalletProposalValidator {
|
|
|
613
614
|
/// - The target wallets commitment must be submitted,
|
|
614
615
|
/// - The target wallets commitment hash must match the target wallets
|
|
615
616
|
/// from the proposal,
|
|
617
|
+
/// - The source wallet BTC balance must be equal to or greater than
|
|
618
|
+
/// `movingFundsDustThreshold`,
|
|
616
619
|
/// - The proposed moving funds transaction fee must be greater than
|
|
617
620
|
/// zero,
|
|
618
621
|
/// - The proposed moving funds transaction fee must not exceed the
|
|
619
622
|
/// maximum total fee allowed for moving funds.
|
|
620
|
-
function validateMovingFundsProposal(
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
{
|
|
623
|
+
function validateMovingFundsProposal(
|
|
624
|
+
MovingFundsProposal calldata proposal,
|
|
625
|
+
BitcoinTx.UTXO calldata walletMainUtxo
|
|
626
|
+
) external view returns (bool) {
|
|
625
627
|
Wallets.Wallet memory sourceWallet = bridge.wallets(
|
|
626
628
|
proposal.walletPubKeyHash
|
|
627
629
|
);
|
|
@@ -645,10 +647,32 @@ contract WalletProposalValidator {
|
|
|
645
647
|
"Target wallets do not match target wallets commitment hash"
|
|
646
648
|
);
|
|
647
649
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
650
|
+
(
|
|
651
|
+
uint64 movingFundsTxMaxTotalFee,
|
|
652
|
+
uint64 movingFundsDustThreshold,
|
|
653
|
+
,
|
|
654
|
+
,
|
|
655
|
+
,
|
|
656
|
+
,
|
|
657
|
+
,
|
|
658
|
+
,
|
|
659
|
+
,
|
|
660
|
+
,
|
|
661
|
+
|
|
662
|
+
) = bridge.movingFundsParameters();
|
|
651
663
|
|
|
664
|
+
// Make sure the source wallet balance is correct.
|
|
665
|
+
uint64 sourceWalletBtcBalance = getWalletBtcBalance(
|
|
666
|
+
sourceWallet.mainUtxoHash,
|
|
667
|
+
walletMainUtxo
|
|
668
|
+
);
|
|
669
|
+
|
|
670
|
+
require(
|
|
671
|
+
sourceWalletBtcBalance >= movingFundsDustThreshold,
|
|
672
|
+
"Source wallet BTC balance is below the moving funds dust threshold"
|
|
673
|
+
);
|
|
674
|
+
|
|
675
|
+
// Make sure the proposed fee is valid.
|
|
652
676
|
require(
|
|
653
677
|
proposal.movingFundsTxFee > 0,
|
|
654
678
|
"Proposed transaction fee cannot be zero"
|
|
@@ -662,6 +686,36 @@ contract WalletProposalValidator {
|
|
|
662
686
|
return true;
|
|
663
687
|
}
|
|
664
688
|
|
|
689
|
+
/// @notice Calculates the Bitcoin balance of a wallet based on its main
|
|
690
|
+
/// UTXO.
|
|
691
|
+
/// @param walletMainUtxoHash The hash of the wallet's main UTXO.
|
|
692
|
+
/// @param walletMainUtxo The detailed data of the wallet's main UTXO.
|
|
693
|
+
/// @return walletBtcBalance The calculated Bitcoin balance of the wallet.
|
|
694
|
+
function getWalletBtcBalance(
|
|
695
|
+
bytes32 walletMainUtxoHash,
|
|
696
|
+
BitcoinTx.UTXO calldata walletMainUtxo
|
|
697
|
+
) internal view returns (uint64 walletBtcBalance) {
|
|
698
|
+
// If the wallet has a main UTXO hash set, cross-check it with the
|
|
699
|
+
// provided plain-text parameter and get the transaction output value
|
|
700
|
+
// as BTC balance. Otherwise, the BTC balance is just zero.
|
|
701
|
+
if (walletMainUtxoHash != bytes32(0)) {
|
|
702
|
+
require(
|
|
703
|
+
keccak256(
|
|
704
|
+
abi.encodePacked(
|
|
705
|
+
walletMainUtxo.txHash,
|
|
706
|
+
walletMainUtxo.txOutputIndex,
|
|
707
|
+
walletMainUtxo.txOutputValue
|
|
708
|
+
)
|
|
709
|
+
) == walletMainUtxoHash,
|
|
710
|
+
"Invalid wallet main UTXO data"
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
walletBtcBalance = walletMainUtxo.txOutputValue;
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
return walletBtcBalance;
|
|
717
|
+
}
|
|
718
|
+
|
|
665
719
|
/// @notice View function encapsulating the main rules of a valid heartbeat
|
|
666
720
|
/// proposal. This function is meant to facilitate the off-chain
|
|
667
721
|
/// validation of the incoming proposals. Thanks to it, most
|