ETH Price: $2,141.32 (+0.33%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Deposit462196212026-05-19 22:09:4945 hrs ago1779228589IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000660.00500015
Claim Rewards461807152026-05-19 0:32:572 days ago1779150777IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards461539652026-05-18 9:41:173 days ago1779097277IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards460838242026-05-16 18:43:155 days ago1778956995IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards460297162026-05-15 12:39:396 days ago1778848779IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Redeem460009662026-05-14 20:41:196 days ago1778791279IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000001240.01004041
Claim Rewards460009532026-05-14 20:40:536 days ago1778791253IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000670.0100646
Claim Rewards459313292026-05-13 6:00:058 days ago1778652005IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000390.00612
Redeem459313232026-05-13 5:59:538 days ago1778651993IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000890.00612
Redeem458712922026-05-11 20:38:519 days ago1778531931IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000001230.01
Claim Rewards458712852026-05-11 20:38:379 days ago1778531917IN
0x3F5ac2c2...7356A8AC8
0 ETH0.00000070.01
Claim Rewards457805632026-05-09 18:14:3312 days ago1778350473IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000290.006
Claim Rewards457387502026-05-08 19:00:4713 days ago1778266847IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards456949892026-05-07 18:42:0514 days ago1778179325IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards456877302026-05-07 14:40:0714 days ago1778164807IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000940.01978606
Redeem456877212026-05-07 14:39:4914 days ago1778164789IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000003660.02220482
Claim Rewards456803382026-05-07 10:33:4314 days ago1778150023IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000001140.01608988
Deposit456787862026-05-07 9:41:5914 days ago1778146919IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000001130.01000965
Claim Rewards456530952026-05-06 19:25:3715 days ago1778095537IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards456001442026-05-05 14:00:3516 days ago1777989635IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards455541182026-05-04 12:26:2317 days ago1777897583IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards455230172026-05-03 19:09:4118 days ago1777835381IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Redeem455118382026-05-03 12:57:0318 days ago1777813023IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000001290.01
Claim Rewards454762422026-05-02 17:10:3119 days ago1777741831IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
Claim Rewards454706582026-05-02 14:04:2319 days ago1777730663IN
0x3F5ac2c2...7356A8AC8
0 ETH0.000000340.006
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading
Source Code Verified Exact Match

Contract Name

WCHANVault

Compiler Version
v0.8.33+commit.64118f21
Optimization Enabled
No with 200 runs
Other Settings
prague EvmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API
[{"inputs":[{"internalType":"contract IERC20","name":"wchan_","type":"address"},{"internalType":"contract IERC20","name":"rewardToken_","type":"address"},{"internalType":"uint256","name":"seedAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CheckpointUnorderedInsertion","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"uint256","name":"increasedSupply","type":"uint256"},{"internalType":"uint256","name":"cap","type":"uint256"}],"name":"ERC20ExceededSafeSupply","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"name":"ERC5805FutureLookup","type":"error"},{"inputs":[],"name":"ERC6372InconsistentClock","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"NoStakers","type":"error"},{"inputs":[],"name":"RewardTokenSameAsAsset","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"VotesExpiredSignature","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotes","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAssets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"Donate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAssets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"DonateReward","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"penaltyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"retainedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAssets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"EarlyWithdrawPenalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PENALTY_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PENALTY_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint48","name":"_key","type":"uint48"},{"internalType":"uint208","name":"_value","type":"uint208"}],"internalType":"struct Checkpoints.Checkpoint208","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"donate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getPenaltyBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDepositTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"previewRedeemNet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerShareStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerSharePaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
6101c0604052348015610010575f5ffd5b506040516174d43803806174d4833981810160405281019061003291906117ac565b6040518060400160405280600c81526020017f5374616b656420574348414e0000000000000000000000000000000000000000815250806040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250856040518060400160405280600c81526020017f5374616b656420574348414e00000000000000000000000000000000000000008152506040518060400160405280600681526020017f73574348414e0000000000000000000000000000000000000000000000000000815250816003908161011b9190611a41565b50806004908161012b9190611a41565b5050505f5f61013f8361033960201b60201c565b915091508161014f576012610151565b805b60ff1660a08160ff16815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050506101a960058361040560201b90919060201c565b61016081815250506101c560068261040560201b90919060201c565b610180818152505081805190602001206101208181525050808051906020012061014081815250504660e0818152505061020361045260201b60201c565b60c081815250503073ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250505050508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102a7576040517f7635933900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166101a08173ffffffffffffffffffffffffffffffffffffffff16815250505f8111156103315761031e3330836102f86104ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166104b660201b909392919060201c565b61033061dead8261051160201b60201c565b5b505050611f9a565b5f5f5f61034a61059660201b60201c565b90505f5f6103a88660405160240160405160208183030381529060405263313ce56760e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061059f60201b60201c565b50915091506103bc836105c060201b60201c565b8180156103d7575060206103d46105c760201b60201c565b10155b80156103e8575060ff8016815f1c11155b6103f3575f5f6103f9565b6001815f1c5b94509450505050915091565b5f6020835110156104265761041f836105ce60201b60201c565b905061044c565b826104368361063360201b60201c565b5f0190816104449190611a41565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61012051610140514630604051602001610492959493929190611b46565b60405160208183030381529060405280519060200120905090565b5f608051905090565b6104ca84848484600161063c60201b60201c565b61050b57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016105029190611b97565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610581575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105789190611b97565b60405180910390fd5b6105925f83836106ad60201b60201c565b5050565b5f604051905090565b5f5f5f60405f855160208701885afa92505f51915060205190509250925092565b8060405250565b5f3d905090565b5f5f829050601f8151111561061a57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016106119190611c16565b60405180910390fd5b80518161062690611c63565b5f1c175f1b915050919050565b5f819050919050565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f5114831661069a57838315161561068e573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146106f0576106ef836108b360201b60201c565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461073357610732826108b360201b60201c565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561076e57505f81115b1561089d575f6107838361094a60201b60201c565b90505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f821180156107d457505f81115b156108575782826107e59190611cf6565b83426107f19190611d29565b83836107fd9190611d29565b6108079190611cf6565b6108119190611d97565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061089a565b42600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50505b6108ae83838361098f60201b60201c565b505050565b6108c281610a5560201b60201c565b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c54600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109a0838383610b1660201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a3f575f6109e2610d2f60201b60201c565b90505f6109f3610d3860201b60201c565b905080821115610a3c5781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401610a33929190611dc7565b60405180910390fd5b50505b610a50838383610d5b60201b60201c565b505050565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b05610aa68461094a60201b60201c565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c54610af19190611dee565b670de0b6b3a7640000610e4b60201b60201c565b610b0f9190611cf6565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b66578060025f828254610b5a9190611cf6565b92505081905550610c34565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bef578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610be693929190611e21565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c7b578060025f8282540392505081905550610cc5565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d229190611e56565b60405180910390a3505050565b5f600254905090565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dba57610db7600a610f3c60201b611cda17610dac84610f5160201b60201c565b610fbe60201b60201c565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e1957610e16600a61100660201b611cef17610e0b84610f5160201b60201c565b610fbe60201b60201c565b50505b610e46610e2b8461101b60201b60201c565b610e3a8461101b60201b60201c565b8361108060201b60201c565b505050565b5f5f5f610e5e868661131660201b60201c565b915091505f8203610e8357838181610e7957610e78611d6a565b5b0492505050610f35565b818411610eae57610ead610ea25f86146012601161133360201b60201c565b61135260201b60201c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b5f8183610f499190611e94565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115610fb65760d0826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610fad929190611f26565b60405180910390fd5b819050919050565b5f5f610ffa610fd161136360201b60201c565b610fea610fe38861136a60201b60201c565b868860201c565b876113d260201b9092919060201c565b91509150935093915050565b5f81836110139190611f4d565b905092915050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156110bb57505f81115b15611311575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e8575f5f61115960095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061100660201b611cef1761114e86610f5160201b60201c565b610fbe60201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516111dd929190611dc7565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611310575f5f61128160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610f3c60201b611cda1761127686610f5160201b60201c565b610fbe60201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611305929190611dc7565b60405180910390a250505b5b505050565b5f5f5f198385098385029150818110828203039250509250929050565b5f611343846113f360201b60201c565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b5f42905090565b5f5f825f018054905090505f81146113c85761139a835f0160018361138f9190611dee565b6113fe60201b60201c565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff166113ca565b5f5b915050919050565b5f5f6113e7855f01858561141060201b60201c565b91509150935093915050565b5f8115159050919050565b5f825f528160205f2001905092915050565b5f5f5f858054905090505f811115611622575f61143f876001846114349190611dee565b6113fe60201b60201c565b90505f815f015f9054906101000a900465ffffffffffff1690505f825f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1690508765ffffffffffff168265ffffffffffff1611156114d0576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361153a5786835f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550611613565b8860405180604001604052808a65ffffffffffff1681526020018979ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b80879550955050505050611702565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117378261170e565b9050919050565b5f6117488261172d565b9050919050565b6117588161173e565b8114611762575f5ffd5b50565b5f815190506117738161174f565b92915050565b5f819050919050565b61178b81611779565b8114611795575f5ffd5b50565b5f815190506117a681611782565b92915050565b5f5f5f606084860312156117c3576117c261170a565b5b5f6117d086828701611765565b93505060206117e186828701611765565b92505060406117f286828701611798565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061187757607f821691505b60208210810361188a57611889611833565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026118ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826118b1565b6118f686836118b1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61193161192c61192784611779565b61190e565b611779565b9050919050565b5f819050919050565b61194a83611917565b61195e61195682611938565b8484546118bd565b825550505050565b5f5f905090565b611975611966565b611980818484611941565b505050565b5f5b828110156119a65761199b5f82840161196d565b600181019050611987565b505050565b601f8211156119f957828211156119f8576119c581611890565b6119ce836118a2565b6119d7856118a2565b60208610156119e4575f90505b8083016119f382840382611985565b505050505b5b505050565b5f82821c905092915050565b5f611a195f19846008026119fe565b1980831691505092915050565b5f611a318383611a0a565b9150826002028217905092915050565b611a4a826117fc565b67ffffffffffffffff811115611a6357611a62611806565b5b611a6d8254611860565b611a788282856119ab565b5f60209050601f831160018114611aa9575f8415611a97578287015190505b611aa18582611a26565b865550611b08565b601f198416611ab786611890565b5f5b82811015611ade57848901518255600182019150602085019450602081019050611ab9565b86831015611afb5784890151611af7601f891682611a0a565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b611b2281611b10565b82525050565b611b3181611779565b82525050565b611b408161172d565b82525050565b5f60a082019050611b595f830188611b19565b611b666020830187611b19565b611b736040830186611b19565b611b806060830185611b28565b611b8d6080830184611b37565b9695505050505050565b5f602082019050611baa5f830184611b37565b92915050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611be8826117fc565b611bf28185611bb0565b9350611c02818560208601611bc0565b611c0b81611bce565b840191505092915050565b5f6020820190508181035f830152611c2e8184611bde565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f611c5a8251611b10565b80915050919050565b5f611c6d82611c36565b82611c7784611c40565b9050611c8281611c4f565b92506020821015611cc257611cbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026118b1565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d0082611779565b9150611d0b83611779565b9250828201905080821115611d2357611d22611cc9565b5b92915050565b5f611d3382611779565b9150611d3e83611779565b9250828202611d4c81611779565b91508282048414831517611d6357611d62611cc9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611da182611779565b9150611dac83611779565b925082611dbc57611dbb611d6a565b5b828204905092915050565b5f604082019050611dda5f830185611b28565b611de76020830184611b28565b9392505050565b5f611df882611779565b9150611e0383611779565b9250828203905081811115611e1b57611e1a611cc9565b5b92915050565b5f606082019050611e345f830186611b37565b611e416020830185611b28565b611e4e6040830184611b28565b949350505050565b5f602082019050611e695f830184611b28565b92915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e9e82611e6f565b9150611ea983611e6f565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115611edb57611eda611cc9565b5b92915050565b5f819050919050565b5f60ff82169050919050565b5f611f10611f0b611f0684611ee1565b61190e565b611eea565b9050919050565b611f2081611ef6565b82525050565b5f604082019050611f395f830185611f17565b611f466020830184611b28565b9392505050565b5f611f5782611e6f565b9150611f6283611e6f565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115611f9457611f93611cc9565b5b92915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516154bd6120175f395f8181610f08015281816111390152611cb201525f6125f601525f6125bb01525f612ed301525f612eb201525f61206b01525f6120c101525f6120ea01525f61203a01525f610fa001526154bd5ff3fe608060405234801561000f575f5ffd5b506004361061033f575f3560e01c80637ecebe00116101b6578063b460af9411610102578063d905777e116100a0578063f1127ed81161007a578063f1127ed814610b37578063f14faf6f14610b67578063f7c618c114610b83578063fccc281314610ba15761033f565b8063d905777e14610aa7578063dd62ed3e14610ad7578063ef8b30f714610b075761033f565b8063c63d75b6116100dc578063c63d75b6146109fb578063c6e6f59214610a2b578063ce96cb7714610a5b578063d505accf14610a8b5761033f565b8063b460af941461097f578063ba087652146109af578063c3cda520146109df5761033f565b806394bf804d1161016f578063a85b98b311610149578063a85b98b3146108bf578063a9059cbb146108ef578063a9169cb21461091f578063b3d7f6b91461094f5761033f565b806394bf804d1461084157806395d89b41146108715780639ab24eb01461088f5761033f565b80637ecebe001461073f578063818ae1ce1461076f57806384b0196e1461079f5780638e539e8c146107c357806391ddadf4146107f3578063949813b8146108115761033f565b80633644e51511610290578063578cc8e01161022e578063655d8dec11610208578063655d8dec1461067f5780636e553f65146106af5780636fcfff45146106df57806370a082311461070f5761033f565b8063578cc8e014610617578063587cde1e146106335780635c19a95c146106635761033f565b80633a46b1a81161026a5780633a46b1a814610569578063402d267d146105995780634bf5d7e9146105c95780634cdad506146105e75761033f565b80633644e51514610523578063372500ab1461054157806338d52e0f1461054b5761033f565b80630a28a477116102fd57806318160ddd116102d757806318160ddd1461049957806323b872dd146104b7578063249d39e9146104e7578063313ce567146105055761033f565b80630a28a4771461042d5780630ab747f01461045d578063117474f51461047b5761033f565b80628cc2621461034357806301e1d114146103735780630225d3cc1461039157806306fdde03146103af57806307a2d13a146103cd578063095ea7b3146103fd575b5f5ffd5b61035d600480360381019061035891906143f2565b610bbf565b60405161036a9190614435565b60405180910390f35b61037b610c74565b6040516103889190614435565b60405180910390f35b610399610cf9565b6040516103a69190614435565b60405180910390f35b6103b7610cff565b6040516103c491906144be565b60405180910390f35b6103e760048036038101906103e29190614508565b610d8f565b6040516103f49190614435565b60405180910390f35b61041760048036038101906104129190614533565b610da1565b604051610424919061458b565b60405180910390f35b61044760048036038101906104429190614508565b610dc3565b6040516104549190614435565b60405180910390f35b610465610dd6565b6040516104729190614435565b60405180910390f35b610483610ddc565b6040516104909190614435565b60405180910390f35b6104a1610de3565b6040516104ae9190614435565b60405180910390f35b6104d160048036038101906104cc91906145a4565b610dec565b6040516104de919061458b565b60405180910390f35b6104ef610e1a565b6040516104fc9190614435565b60405180910390f35b61050d610e20565b60405161051a919061460f565b60405180910390f35b61052b610e2e565b6040516105389190614640565b60405180910390f35b610549610e3c565b005b610553610f9d565b6040516105609190614668565b60405180910390f35b610583600480360381019061057e9190614533565b610fc4565b6040516105909190614435565b60405180910390f35b6105b360048036038101906105ae91906143f2565b611040565b6040516105c09190614435565b60405180910390f35b6105d1611069565b6040516105de91906144be565b60405180910390f35b61060160048036038101906105fc9190614508565b6110a6565b60405161060e9190614435565b60405180910390f35b610631600480360381019061062c9190614508565b6110b8565b005b61064d600480360381019061064891906143f2565b611212565b60405161065a9190614668565b60405180910390f35b61067d600480360381019061067891906143f2565b611277565b005b610699600480360381019061069491906143f2565b611290565b6040516106a69190614435565b60405180910390f35b6106c960048036038101906106c49190614681565b6112a5565b6040516106d69190614435565b60405180910390f35b6106f960048036038101906106f491906143f2565b611325565b60405161070691906146dd565b60405180910390f35b610729600480360381019061072491906143f2565b611336565b6040516107369190614435565b60405180910390f35b610759600480360381019061075491906143f2565b61137b565b6040516107669190614435565b60405180910390f35b610789600480360381019061078491906143f2565b61138c565b6040516107969190614435565b60405180910390f35b6107a76113a1565b6040516107ba97969594939291906147e7565b60405180910390f35b6107dd60048036038101906107d89190614508565b611446565b6040516107ea9190614435565b60405180910390f35b6107fb611486565b6040516108089190614889565b60405180910390f35b61082b600480360381019061082691906143f2565b61148d565b6040516108389190614435565b60405180910390f35b61085b60048036038101906108569190614681565b6114a2565b6040516108689190614435565b60405180910390f35b610879611522565b60405161088691906144be565b60405180910390f35b6108a960048036038101906108a491906143f2565b6115b2565b6040516108b69190614435565b60405180910390f35b6108d960048036038101906108d49190614681565b61161b565b6040516108e69190614435565b60405180910390f35b61090960048036038101906109049190614533565b611642565b604051610916919061458b565b60405180910390f35b610939600480360381019061093491906143f2565b611664565b6040516109469190614435565b60405180910390f35b61096960048036038101906109649190614508565b61170d565b6040516109769190614435565b60405180910390f35b610999600480360381019061099491906148a2565b611720565b6040516109a69190614435565b60405180910390f35b6109c960048036038101906109c491906148a2565b6117e0565b6040516109d69190614435565b60405180910390f35b6109f960048036038101906109f49190614946565b61186e565b005b610a156004803603810190610a1091906143f2565b611933565b604051610a229190614435565b60405180910390f35b610a456004803603810190610a409190614508565b61195c565b604051610a529190614435565b60405180910390f35b610a756004803603810190610a7091906143f2565b61196e565b604051610a829190614435565b60405180910390f35b610aa56004803603810190610aa091906149cf565b61199c565b005b610ac16004803603810190610abc91906143f2565b611ae1565b604051610ace9190614435565b60405180910390f35b610af16004803603810190610aec9190614a6c565b611af2565b604051610afe9190614435565b60405180910390f35b610b216004803603810190610b1c9190614508565b611b74565b604051610b2e9190614435565b60405180910390f35b610b516004803603810190610b4c9190614ad4565b611b86565b604051610b5e9190614b82565b60405180910390f35b610b816004803603810190610b7c9190614508565b611ba0565b005b610b8b611cb0565b604051610b989190614bf6565b60405180910390f35b610ba9611cd4565b604051610bb69190614668565b60405180910390f35b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c63610c0a84611336565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c54610c559190614c3c565b670de0b6b3a7640000611d04565b610c6d9190614c6f565b9050919050565b5f610c7d610f9d565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cb59190614668565b602060405180830381865afa158015610cd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf49190614cb6565b905090565b6107d081565b606060038054610d0e90614d0e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614d0e565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b5f610d9a825f611de3565b9050919050565b5f5f610dab611e3b565b9050610db8818585611e42565b600191505092915050565b5f610dcf826001611e54565b9050919050565b600c5481565b62093a8081565b5f600254905090565b5f5f610df6611e3b565b9050610e03858285611eac565b610e0e858585611f3f565b60019150509392505050565b61271081565b5f610e2961202f565b905090565b5f610e37612068565b905090565b610e453361211e565b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8103610f01576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f4c33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f929190614435565b60405180910390a250565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f61101c610fd183612202565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061226d90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b60606040518060400160405280600e81526020017f6d6f64653d74696d657374616d70000000000000000000000000000000000000815250905090565b5f6110b1825f611de3565b9050919050565b5f81036110f1576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110fa610de3565b03611131576040517f21311aa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117e3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661235d909392919063ffffffff16565b61119881670de0b6b3a7640000611193610de3565b611d04565b600c5f8282546111a89190614c6f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0f97f77438771ae181bd4bb3117b96f26de61629e4ed698f2c328b1a821b184e826111f0610c74565b6111f8610de3565b60405161120793929190614d3e565b60405180910390a250565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f611280611e3b565b905061128c81836123b2565b5050565b600b602052805f5260405f205f915090505481565b5f5f6112b083611040565b9050808411156112fb578284826040517f79012fb20000000000000000000000000000000000000000000000000000000081526004016112f293929190614d73565b60405180910390fd5b5f61130585611b74565b905061131a611312611e3b565b8587846124c2565b809250505092915050565b5f61132f8261254c565b9050919050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f611385826125a1565b9050919050565b600d602052805f5260405f205f915090505481565b5f6060805f5f5f60606113b26125b2565b6113ba6125ed565b46305f5f1b5f67ffffffffffffffff8111156113d9576113d8614da8565b5b6040519080825280602002602001820160405280156114075781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f61146361145383612202565b600a61226d90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f42905090565b600e602052805f5260405f205f915090505481565b5f5f6114ad83611933565b9050808411156114f8578284826040517f284ff6670000000000000000000000000000000000000000000000000000000081526004016114ef93929190614d73565b60405180910390fd5b5f6115028561170d565b905061151761150f611e3b565b8583886124c2565b809250505092915050565b60606004805461153190614d0e565b80601f016020809104026020016040519081016040528092919081815260200182805461155d90614d0e565b80156115a85780601f1061157f576101008083540402835291602001916115a8565b820191905f5260205f20905b81548152906001019060200180831161158b57829003601f168201915b5050505050905090565b5f6115f860095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612628565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f5f611627845f611de3565b90505f611634828561268a565b509050809250505092915050565b5f5f61164c611e3b565b9050611659818585611f3f565b600191505092915050565b5f5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81036116b6575f915050611708565b5f81426116c39190614c3c565b905062093a8081106116d9575f92505050611708565b62093a808162093a806116ec9190614c3c565b6107d06116f99190614dd5565b6117039190614e43565b925050505b919050565b5f611719826001611de3565b9050919050565b5f5f61172b8361196e565b905080851115611776578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161176d93929190614d73565b60405180910390fd5b5f61178186856126c9565b90505f61178f826001611e54565b90505f61179b86611336565b9050808211156117b5578091506117b2825f611de3565b92505b5f88846117c29190614c3c565b90506117d188888b848761271d565b82955050505050509392505050565b5f5f6117eb83611ae1565b905080851115611836578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161182d93929190614d73565b60405180910390fd5b5f611841865f611de3565b90505f5f61184f838761268a565b91509150611860878784848c61271d565b819450505050509392505050565b834211156118b357836040517f4683af0e0000000000000000000000000000000000000000000000000000000081526004016118aa9190614435565b60405180910390fd5b5f61191461190c7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8989896040516020016118f19493929190614e73565b604051602081830303815290604052805190602001206128e6565b8585856128ff565b9050611920818761292d565b61192a81886123b2565b50505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f611967825f611e54565b9050919050565b5f5f61198261197c84611336565b5f611de3565b90505f61198f828561268a565b5090508092505050919050565b834211156119e157836040517f627913020000000000000000000000000000000000000000000000000000000081526004016119d89190614435565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a0f8c612984565b89604051602001611a2596959493929190614eb6565b6040516020818303038152906040528051906020012090505f611a47826128e6565b90505f611a56828787876128ff565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611aca57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401611ac1929190614f15565b60405180910390fd5b611ad58a8a8a611e42565b50505050505050505050565b5f611aeb82611336565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f611b7f825f611e54565b9050919050565b611b8e614358565b611b9883836129d7565b905092915050565b5f8103611bd9576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611be2610de3565b03611c19576040517f21311aa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c4d333083611c27610f9d565b73ffffffffffffffffffffffffffffffffffffffff1661235d909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f94dfa012dbd3d53b6c092bf771f1f8891ba0605b776a2a861b84099e1b61d3e982611c8e610c74565b611c96610de3565b604051611ca593929190614d3e565b60405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b61dead81565b5f8183611ce79190614f3c565b905092915050565b5f8183611cfc9190614f89565b905092915050565b5f5f5f611d118686612a36565b915091505f8203611d3657838181611d2c57611d2b614e16565b5b0492505050611ddc565b818411611d5557611d54611d4f5f861460126011612a53565b612a6c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b5f611e336001611df1610c74565b611dfb9190614c6f565b611e03612a7d565b600a611e0f9190615105565b611e17610de3565b611e219190614c6f565b8486612a84909392919063ffffffff16565b905092915050565b5f33905090565b611e4f8383836001612ad1565b505050565b5f611ea4611e60612a7d565b600a611e6c9190615105565b611e74610de3565b611e7e9190614c6f565b6001611e88610c74565b611e929190614c6f565b8486612a84909392919063ffffffff16565b905092915050565b5f611eb78484611af2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611f395781811015611f2a578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611f2193929190614d73565b60405180910390fd5b611f3884848484035f612ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611faf575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611fa69190614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016120169190614668565b60405180910390fd5b61202a838383612ca0565b505050565b5f612038612a7d565b7f0000000000000000000000000000000000000000000000000000000000000000612063919061514f565b905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156120e357507f000000000000000000000000000000000000000000000000000000000000000046145b15612110577f0000000000000000000000000000000000000000000000000000000000000000905061211b565b612118612e8e565b90505b90565b61212781610bbf565b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c54600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b6121bc8383836001612f23565b6121fd57826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016121f49190614668565b60405180910390fd5b505050565b5f5f61220c611486565b90508065ffffffffffff16831061225c5782816040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600401612253929190615183565b60405180910390fd5b61226583612f85565b915050919050565b5f5f835f018054905090505f5f90505f82905060058311156122f1575f61229384612fde565b8461229e9190614c3c565b90506122ac875f0182613178565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff1610156122df578091506122ef565b6001816122ec9190614c6f565b92505b505b5f612300875f0187858561318a565b90505f811461234f57612321875f0160018361231c9190614c3c565b613178565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16612351565b5f5b94505050505092915050565b61236b8484848460016131ff565b6123ac57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016123a39190614668565b60405180910390fd5b50505050565b5f6123bc83611212565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46124bd81836124b886613270565b613281565b505050565b6124d56124cd610f9d565b85308561235d565b6124df83826134f1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405161253e9291906151aa565b60405180910390a350505050565b5f61259a61259560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20613570565b61357f565b9050919050565b5f6125ab826135d6565b9050919050565b60606125e860057f000000000000000000000000000000000000000000000000000000000000000061361c90919063ffffffff16565b905090565b606061262360067f000000000000000000000000000000000000000000000000000000000000000061361c90919063ffffffff16565b905090565b5f5f825f018054905090505f811461268057612652835f0160018361264d9190614c3c565b613178565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16612682565b5f5b915050919050565b5f5f5f61269684611664565b905061271081866126a79190614dd5565b6126b19190614e43565b915081856126bf9190614c3c565b9250509250929050565b5f5f6126d483611664565b90505f8111156127125761270b816127106126ef9190614c3c565b612710866126fd9190614dd5565b6136c990919063ffffffff16565b9150612716565b8391505b5092915050565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461275c5761275b843383611eac565b5b6127668482613707565b5f61276f610f9d565b905061279c86858373ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b5f831115612860575f6002846127b29190614e43565b90505f81856127c19190614c3c565b90505f8211156127f9576127f861dead838573ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff167f9f46e08d780572b24e29ecea71f5ac0250e1e91fbf9e88a0ce526d54acd1a4ed86848461283c610c74565b612844610de3565b6040516128559594939291906151d1565b60405180910390a250505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db87866040516128d69291906151aa565b60405180910390a4505050505050565b5f6128f86128f2612068565b83613786565b9050919050565b5f5f5f5f61290f888888886137c6565b92509250925061291f82826138ad565b829350505050949350505050565b5f61293783612984565b905080821461297f5782816040517f752d88c0000000000000000000000000000000000000000000000000000000008152600401612976929190615222565b60405180910390fd5b505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b6129df614358565b612a2e8260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20613a0f90919063ffffffff16565b905092915050565b5f5f5f198385098385029150818110828203039250509250929050565b5f612a5d84613ade565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b5f5f905090565b5f612ab2612a9183613ae9565b8015612aad57505f8480612aa857612aa7614e16565b5b868809115b613ade565b612abd868686611d04565b612ac79190614c6f565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612b389190614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612ba89190614668565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612c919190614435565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612cdd57612cdc8361211e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d1a57612d198261211e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d5557505f81115b15612e7e575f612d6483611336565b90505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f82118015612db557505f81115b15612e38578282612dc69190614c6f565b8342612dd29190614dd5565b8383612dde9190614dd5565b612de89190614c6f565b612df29190614e43565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e7b565b42600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50505b612e89838383613b16565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001612f08959493929190615249565b60405160208183030381529060405280519060200120905090565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316612f77578383151615612f6b573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f65ffffffffffff8016821115612fd6576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612fcd9291906152d3565b60405180910390fd5b819050919050565b5f60018211612fef57819050613173565b5f8290505f60019050700100000000000000000000000000000000821061301f57608082901c9150604081901b90505b68010000000000000000821061303e57604082901c9150602081901b90505b640100000000821061305957602082901c9150601081901b90505b62010000821061307257601082901c9150600881901b90505b610100821061308a57600882901c9150600481901b90505b601082106130a157600482901c9150600281901b90505b600482106130b157600181901b90505b600181600302901c905060018185816130cd576130cc614e16565b5b048201901c905060018185816130e6576130e5614e16565b5b048201901c905060018185816130ff576130fe614e16565b5b048201901c9050600181858161311857613117614e16565b5b048201901c9050600181858161313157613130614e16565b5b048201901c9050600181858161314a57613149614e16565b5b048201901c905061316c81858161316457613163614e16565b5b048211613ade565b8103925050505b919050565b5f825f528160205f2001905092915050565b5f5b818310156131f4575f61319f8484613bc4565b90508465ffffffffffff166131b48783613178565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff1611156131de578092506131ee565b6001816131eb9190614c6f565b93505b5061318c565b819050949350505050565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f5114831661325d578383151615613251573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f61327a82611336565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bc57505f81115b156134ec575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146133d6575f5f61334760095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611cef61334286613be9565b613c56565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516133cb9291906151aa565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146134eb575f5f61345c60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611cda61345786613be9565b613c56565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516134e09291906151aa565b60405180910390a250505b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613561575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016135589190614668565b60405180910390fd5b61356c5f8383612ca0565b5050565b5f815f01805490509050919050565b5f63ffffffff80168211156135ce576020826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016135c5929190615333565b60405180910390fd5b819050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060ff5f1b83146136385761363183613c95565b90506136c3565b81805461364490614d0e565b80601f016020809104026020016040519081016040528092919081815260200182805461367090614d0e565b80156136bb5780601f10613692576101008083540402835291602001916136bb565b820191905f5260205f20905b81548152906001019060200180831161369e57829003601f168201915b505050505090505b92915050565b5f5f82036136dc576136db6012612a6c565b5b60018260018503816136f1576136f0614e16565b5b04016136fe5f8511613ade565b02905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613777575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161376e9190614668565b60405180910390fd5b613782825f83612ca0565b5050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115613802575f6003859250925092506138a3565b5f6001888888886040515f8152602001604052604051613825949392919061535a565b6020604051602081039080840390855afa158015613845573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613896575f60015f5f1b935093509350506138a3565b805f5f5f1b935093509350505b9450945094915050565b5f60038111156138c0576138bf61539d565b5b8260038111156138d3576138d261539d565b5b0315613a0b57600160038111156138ed576138ec61539d565b5b826003811115613900576138ff61539d565b5b03613937576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561394b5761394a61539d565b5b82600381111561395e5761395d61539d565b5b036139a257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016139999190614435565b60405180910390fd5b6003808111156139b5576139b461539d565b5b8260038111156139c8576139c761539d565b5b03613a0a57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613a019190614640565b60405180910390fd5b5b5050565b613a17614358565b825f018263ffffffff1681548110613a3257613a316153ca565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b5f8115159050919050565b5f60016002836003811115613b0157613b0061539d565b5b613b0b91906153f7565b60ff16149050919050565b613b21838383613d07565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613bb4575f613b5d610de3565b90505f613b68613f20565b905080821115613bb15781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401613ba89291906151aa565b60405180910390fd5b50505b613bbf838383613f43565b505050565b5f6002828418613bd49190614e43565b828416613be19190614c6f565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115613c4e5760d0826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613c45929190615460565b60405180910390fd5b819050919050565b5f5f613c89613c63611486565b613c79613c6f88612628565b868863ffffffff16565b87613ffb9092919063ffffffff16565b91509150935093915050565b60605f613ca183614016565b90505f602067ffffffffffffffff811115613cbf57613cbe614da8565b5b6040519080825280601f01601f191660200182016040528015613cf15781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d57578060025f828254613d4b9190614c6f565b92505081905550613e25565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613de0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401613dd793929190614d73565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e6c578060025f8282540392505081905550613eb6565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f139190614435565b60405180910390a3505050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f8f57613f8c600a611cda613f8784613be9565b613c56565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fdb57613fd8600a611cef613fd384613be9565b613c56565b50505b613ff6613fe784611212565b613ff084611212565b83613281565b505050565b5f5f61400a855f018585614064565b91509150935093915050565b5f5f60ff835f1c169050601f81111561405b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f5f5f858054905090505f811115614270575f61408d876001846140889190614c3c565b613178565b90505f815f015f9054906101000a900465ffffffffffff1690505f825f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1690508765ffffffffffff168265ffffffffffff16111561411e576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036141885786835f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550614261565b8860405180604001604052808a65ffffffffffff1681526020018979ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b80879550955050505050614350565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b60405180604001604052805f65ffffffffffff1681526020015f79ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143c182614398565b9050919050565b6143d1816143b7565b81146143db575f5ffd5b50565b5f813590506143ec816143c8565b92915050565b5f6020828403121561440757614406614394565b5b5f614414848285016143de565b91505092915050565b5f819050919050565b61442f8161441d565b82525050565b5f6020820190506144485f830184614426565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6144908261444e565b61449a8185614458565b93506144aa818560208601614468565b6144b381614476565b840191505092915050565b5f6020820190508181035f8301526144d68184614486565b905092915050565b6144e78161441d565b81146144f1575f5ffd5b50565b5f81359050614502816144de565b92915050565b5f6020828403121561451d5761451c614394565b5b5f61452a848285016144f4565b91505092915050565b5f5f6040838503121561454957614548614394565b5b5f614556858286016143de565b9250506020614567858286016144f4565b9150509250929050565b5f8115159050919050565b61458581614571565b82525050565b5f60208201905061459e5f83018461457c565b92915050565b5f5f5f606084860312156145bb576145ba614394565b5b5f6145c8868287016143de565b93505060206145d9868287016143de565b92505060406145ea868287016144f4565b9150509250925092565b5f60ff82169050919050565b614609816145f4565b82525050565b5f6020820190506146225f830184614600565b92915050565b5f819050919050565b61463a81614628565b82525050565b5f6020820190506146535f830184614631565b92915050565b614662816143b7565b82525050565b5f60208201905061467b5f830184614659565b92915050565b5f5f6040838503121561469757614696614394565b5b5f6146a4858286016144f4565b92505060206146b5858286016143de565b9150509250929050565b5f63ffffffff82169050919050565b6146d7816146bf565b82525050565b5f6020820190506146f05f8301846146ce565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61472a816146f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147628161441d565b82525050565b5f6147738383614759565b60208301905092915050565b5f602082019050919050565b5f61479582614730565b61479f818561473a565b93506147aa8361474a565b805f5b838110156147da5781516147c18882614768565b97506147cc8361477f565b9250506001810190506147ad565b5085935050505092915050565b5f60e0820190506147fa5f83018a614721565b818103602083015261480c8189614486565b905081810360408301526148208188614486565b905061482f6060830187614426565b61483c6080830186614659565b61484960a0830185614631565b81810360c083015261485b818461478b565b905098975050505050505050565b5f65ffffffffffff82169050919050565b61488381614869565b82525050565b5f60208201905061489c5f83018461487a565b92915050565b5f5f5f606084860312156148b9576148b8614394565b5b5f6148c6868287016144f4565b93505060206148d7868287016143de565b92505060406148e8868287016143de565b9150509250925092565b6148fb816145f4565b8114614905575f5ffd5b50565b5f81359050614916816148f2565b92915050565b61492581614628565b811461492f575f5ffd5b50565b5f813590506149408161491c565b92915050565b5f5f5f5f5f5f60c087890312156149605761495f614394565b5b5f61496d89828a016143de565b965050602061497e89828a016144f4565b955050604061498f89828a016144f4565b94505060606149a089828a01614908565b93505060806149b189828a01614932565b92505060a06149c289828a01614932565b9150509295509295509295565b5f5f5f5f5f5f5f60e0888a0312156149ea576149e9614394565b5b5f6149f78a828b016143de565b9750506020614a088a828b016143de565b9650506040614a198a828b016144f4565b9550506060614a2a8a828b016144f4565b9450506080614a3b8a828b01614908565b93505060a0614a4c8a828b01614932565b92505060c0614a5d8a828b01614932565b91505092959891949750929550565b5f5f60408385031215614a8257614a81614394565b5b5f614a8f858286016143de565b9250506020614aa0858286016143de565b9150509250929050565b614ab3816146bf565b8114614abd575f5ffd5b50565b5f81359050614ace81614aaa565b92915050565b5f5f60408385031215614aea57614ae9614394565b5b5f614af7858286016143de565b9250506020614b0885828601614ac0565b9150509250929050565b614b1b81614869565b82525050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b614b4f81614b21565b82525050565b604082015f820151614b695f850182614b12565b506020820151614b7c6020850182614b46565b50505050565b5f604082019050614b955f830184614b55565b92915050565b5f819050919050565b5f614bbe614bb9614bb484614398565b614b9b565b614398565b9050919050565b5f614bcf82614ba4565b9050919050565b5f614be082614bc5565b9050919050565b614bf081614bd6565b82525050565b5f602082019050614c095f830184614be7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c468261441d565b9150614c518361441d565b9250828203905081811115614c6957614c68614c0f565b5b92915050565b5f614c798261441d565b9150614c848361441d565b9250828201905080821115614c9c57614c9b614c0f565b5b92915050565b5f81519050614cb0816144de565b92915050565b5f60208284031215614ccb57614cca614394565b5b5f614cd884828501614ca2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614d2557607f821691505b602082108103614d3857614d37614ce1565b5b50919050565b5f606082019050614d515f830186614426565b614d5e6020830185614426565b614d6b6040830184614426565b949350505050565b5f606082019050614d865f830186614659565b614d936020830185614426565b614da06040830184614426565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f614ddf8261441d565b9150614dea8361441d565b9250828202614df88161441d565b91508282048414831517614e0f57614e0e614c0f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e4d8261441d565b9150614e588361441d565b925082614e6857614e67614e16565b5b828204905092915050565b5f608082019050614e865f830187614631565b614e936020830186614659565b614ea06040830185614426565b614ead6060830184614426565b95945050505050565b5f60c082019050614ec95f830189614631565b614ed66020830188614659565b614ee36040830187614659565b614ef06060830186614426565b614efd6080830185614426565b614f0a60a0830184614426565b979650505050505050565b5f604082019050614f285f830185614659565b614f356020830184614659565b9392505050565b5f614f4682614b21565b9150614f5183614b21565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115614f8357614f82614c0f565b5b92915050565b5f614f9382614b21565b9150614f9e83614b21565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115614fd057614fcf614c0f565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b600185111561502b5780860481111561500757615006614c0f565b5b60018516156150165780820291505b808102905061502485614fd6565b9450614feb565b94509492505050565b5f8261504357600190506150fe565b81615050575f90506150fe565b816001811461506657600281146150705761509f565b60019150506150fe565b60ff84111561508257615081614c0f565b5b8360020a91508482111561509957615098614c0f565b5b506150fe565b5060208310610133831016604e8410600b84101617156150d45782820a9050838111156150cf576150ce614c0f565b5b6150fe565b6150e18484846001614fe2565b925090508184048111156150f8576150f7614c0f565b5b81810290505b9392505050565b5f61510f8261441d565b915061511a836145f4565b92506151477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484615034565b905092915050565b5f615159826145f4565b9150615164836145f4565b9250828201905060ff81111561517d5761517c614c0f565b5b92915050565b5f6040820190506151965f830185614426565b6151a3602083018461487a565b9392505050565b5f6040820190506151bd5f830185614426565b6151ca6020830184614426565b9392505050565b5f60a0820190506151e45f830188614426565b6151f16020830187614426565b6151fe6040830186614426565b61520b6060830185614426565b6152186080830184614426565b9695505050505050565b5f6040820190506152355f830185614659565b6152426020830184614426565b9392505050565b5f60a08201905061525c5f830188614631565b6152696020830187614631565b6152766040830186614631565b6152836060830185614426565b6152906080830184614659565b9695505050505050565b5f819050919050565b5f6152bd6152b86152b38461529a565b614b9b565b6145f4565b9050919050565b6152cd816152a3565b82525050565b5f6040820190506152e65f8301856152c4565b6152f36020830184614426565b9392505050565b5f819050919050565b5f61531d615318615313846152fa565b614b9b565b6145f4565b9050919050565b61532d81615303565b82525050565b5f6040820190506153465f830185615324565b6153536020830184614426565b9392505050565b5f60808201905061536d5f830187614631565b61537a6020830186614600565b6153876040830185614631565b6153946060830184614631565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f615401826145f4565b915061540c836145f4565b92508261541c5761541b614e16565b5b828206905092915050565b5f819050919050565b5f61544a61544561544084615427565b614b9b565b6145f4565b9050919050565b61545a81615430565b82525050565b5f6040820190506154735f830185615451565b6154806020830184614426565b939250505056fea26469706673582212208faba7c92e3b530e8ed5296eb22e8647e0012f1c253b27fe682471863166f93664736f6c63430008210033000000000000000000000000ba5ed0000e1ca9136a695f0a848012a16008b032000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000f4240
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061033f575f3560e01c80637ecebe00116101b6578063b460af9411610102578063d905777e116100a0578063f1127ed81161007a578063f1127ed814610b37578063f14faf6f14610b67578063f7c618c114610b83578063fccc281314610ba15761033f565b8063d905777e14610aa7578063dd62ed3e14610ad7578063ef8b30f714610b075761033f565b8063c63d75b6116100dc578063c63d75b6146109fb578063c6e6f59214610a2b578063ce96cb7714610a5b578063d505accf14610a8b5761033f565b8063b460af941461097f578063ba087652146109af578063c3cda520146109df5761033f565b806394bf804d1161016f578063a85b98b311610149578063a85b98b3146108bf578063a9059cbb146108ef578063a9169cb21461091f578063b3d7f6b91461094f5761033f565b806394bf804d1461084157806395d89b41146108715780639ab24eb01461088f5761033f565b80637ecebe001461073f578063818ae1ce1461076f57806384b0196e1461079f5780638e539e8c146107c357806391ddadf4146107f3578063949813b8146108115761033f565b80633644e51511610290578063578cc8e01161022e578063655d8dec11610208578063655d8dec1461067f5780636e553f65146106af5780636fcfff45146106df57806370a082311461070f5761033f565b8063578cc8e014610617578063587cde1e146106335780635c19a95c146106635761033f565b80633a46b1a81161026a5780633a46b1a814610569578063402d267d146105995780634bf5d7e9146105c95780634cdad506146105e75761033f565b80633644e51514610523578063372500ab1461054157806338d52e0f1461054b5761033f565b80630a28a477116102fd57806318160ddd116102d757806318160ddd1461049957806323b872dd146104b7578063249d39e9146104e7578063313ce567146105055761033f565b80630a28a4771461042d5780630ab747f01461045d578063117474f51461047b5761033f565b80628cc2621461034357806301e1d114146103735780630225d3cc1461039157806306fdde03146103af57806307a2d13a146103cd578063095ea7b3146103fd575b5f5ffd5b61035d600480360381019061035891906143f2565b610bbf565b60405161036a9190614435565b60405180910390f35b61037b610c74565b6040516103889190614435565b60405180910390f35b610399610cf9565b6040516103a69190614435565b60405180910390f35b6103b7610cff565b6040516103c491906144be565b60405180910390f35b6103e760048036038101906103e29190614508565b610d8f565b6040516103f49190614435565b60405180910390f35b61041760048036038101906104129190614533565b610da1565b604051610424919061458b565b60405180910390f35b61044760048036038101906104429190614508565b610dc3565b6040516104549190614435565b60405180910390f35b610465610dd6565b6040516104729190614435565b60405180910390f35b610483610ddc565b6040516104909190614435565b60405180910390f35b6104a1610de3565b6040516104ae9190614435565b60405180910390f35b6104d160048036038101906104cc91906145a4565b610dec565b6040516104de919061458b565b60405180910390f35b6104ef610e1a565b6040516104fc9190614435565b60405180910390f35b61050d610e20565b60405161051a919061460f565b60405180910390f35b61052b610e2e565b6040516105389190614640565b60405180910390f35b610549610e3c565b005b610553610f9d565b6040516105609190614668565b60405180910390f35b610583600480360381019061057e9190614533565b610fc4565b6040516105909190614435565b60405180910390f35b6105b360048036038101906105ae91906143f2565b611040565b6040516105c09190614435565b60405180910390f35b6105d1611069565b6040516105de91906144be565b60405180910390f35b61060160048036038101906105fc9190614508565b6110a6565b60405161060e9190614435565b60405180910390f35b610631600480360381019061062c9190614508565b6110b8565b005b61064d600480360381019061064891906143f2565b611212565b60405161065a9190614668565b60405180910390f35b61067d600480360381019061067891906143f2565b611277565b005b610699600480360381019061069491906143f2565b611290565b6040516106a69190614435565b60405180910390f35b6106c960048036038101906106c49190614681565b6112a5565b6040516106d69190614435565b60405180910390f35b6106f960048036038101906106f491906143f2565b611325565b60405161070691906146dd565b60405180910390f35b610729600480360381019061072491906143f2565b611336565b6040516107369190614435565b60405180910390f35b610759600480360381019061075491906143f2565b61137b565b6040516107669190614435565b60405180910390f35b610789600480360381019061078491906143f2565b61138c565b6040516107969190614435565b60405180910390f35b6107a76113a1565b6040516107ba97969594939291906147e7565b60405180910390f35b6107dd60048036038101906107d89190614508565b611446565b6040516107ea9190614435565b60405180910390f35b6107fb611486565b6040516108089190614889565b60405180910390f35b61082b600480360381019061082691906143f2565b61148d565b6040516108389190614435565b60405180910390f35b61085b60048036038101906108569190614681565b6114a2565b6040516108689190614435565b60405180910390f35b610879611522565b60405161088691906144be565b60405180910390f35b6108a960048036038101906108a491906143f2565b6115b2565b6040516108b69190614435565b60405180910390f35b6108d960048036038101906108d49190614681565b61161b565b6040516108e69190614435565b60405180910390f35b61090960048036038101906109049190614533565b611642565b604051610916919061458b565b60405180910390f35b610939600480360381019061093491906143f2565b611664565b6040516109469190614435565b60405180910390f35b61096960048036038101906109649190614508565b61170d565b6040516109769190614435565b60405180910390f35b610999600480360381019061099491906148a2565b611720565b6040516109a69190614435565b60405180910390f35b6109c960048036038101906109c491906148a2565b6117e0565b6040516109d69190614435565b60405180910390f35b6109f960048036038101906109f49190614946565b61186e565b005b610a156004803603810190610a1091906143f2565b611933565b604051610a229190614435565b60405180910390f35b610a456004803603810190610a409190614508565b61195c565b604051610a529190614435565b60405180910390f35b610a756004803603810190610a7091906143f2565b61196e565b604051610a829190614435565b60405180910390f35b610aa56004803603810190610aa091906149cf565b61199c565b005b610ac16004803603810190610abc91906143f2565b611ae1565b604051610ace9190614435565b60405180910390f35b610af16004803603810190610aec9190614a6c565b611af2565b604051610afe9190614435565b60405180910390f35b610b216004803603810190610b1c9190614508565b611b74565b604051610b2e9190614435565b60405180910390f35b610b516004803603810190610b4c9190614ad4565b611b86565b604051610b5e9190614b82565b60405180910390f35b610b816004803603810190610b7c9190614508565b611ba0565b005b610b8b611cb0565b604051610b989190614bf6565b60405180910390f35b610ba9611cd4565b604051610bb69190614668565b60405180910390f35b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c63610c0a84611336565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c54610c559190614c3c565b670de0b6b3a7640000611d04565b610c6d9190614c6f565b9050919050565b5f610c7d610f9d565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cb59190614668565b602060405180830381865afa158015610cd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf49190614cb6565b905090565b6107d081565b606060038054610d0e90614d0e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614d0e565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b5f610d9a825f611de3565b9050919050565b5f5f610dab611e3b565b9050610db8818585611e42565b600191505092915050565b5f610dcf826001611e54565b9050919050565b600c5481565b62093a8081565b5f600254905090565b5f5f610df6611e3b565b9050610e03858285611eac565b610e0e858585611f3f565b60019150509392505050565b61271081565b5f610e2961202f565b905090565b5f610e37612068565b905090565b610e453361211e565b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8103610f01576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f4c33827f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f929190614435565b60405180910390a250565b5f7f000000000000000000000000ba5ed0000e1ca9136a695f0a848012a16008b032905090565b5f61101c610fd183612202565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061226d90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b60606040518060400160405280600e81526020017f6d6f64653d74696d657374616d70000000000000000000000000000000000000815250905090565b5f6110b1825f611de3565b9050919050565b5f81036110f1576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110fa610de3565b03611131576040517f21311aa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117e3330837f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1661235d909392919063ffffffff16565b61119881670de0b6b3a7640000611193610de3565b611d04565b600c5f8282546111a89190614c6f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0f97f77438771ae181bd4bb3117b96f26de61629e4ed698f2c328b1a821b184e826111f0610c74565b6111f8610de3565b60405161120793929190614d3e565b60405180910390a250565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f611280611e3b565b905061128c81836123b2565b5050565b600b602052805f5260405f205f915090505481565b5f5f6112b083611040565b9050808411156112fb578284826040517f79012fb20000000000000000000000000000000000000000000000000000000081526004016112f293929190614d73565b60405180910390fd5b5f61130585611b74565b905061131a611312611e3b565b8587846124c2565b809250505092915050565b5f61132f8261254c565b9050919050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f611385826125a1565b9050919050565b600d602052805f5260405f205f915090505481565b5f6060805f5f5f60606113b26125b2565b6113ba6125ed565b46305f5f1b5f67ffffffffffffffff8111156113d9576113d8614da8565b5b6040519080825280602002602001820160405280156114075781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f61146361145383612202565b600a61226d90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f42905090565b600e602052805f5260405f205f915090505481565b5f5f6114ad83611933565b9050808411156114f8578284826040517f284ff6670000000000000000000000000000000000000000000000000000000081526004016114ef93929190614d73565b60405180910390fd5b5f6115028561170d565b905061151761150f611e3b565b8583886124c2565b809250505092915050565b60606004805461153190614d0e565b80601f016020809104026020016040519081016040528092919081815260200182805461155d90614d0e565b80156115a85780601f1061157f576101008083540402835291602001916115a8565b820191905f5260205f20905b81548152906001019060200180831161158b57829003601f168201915b5050505050905090565b5f6115f860095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612628565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f5f611627845f611de3565b90505f611634828561268a565b509050809250505092915050565b5f5f61164c611e3b565b9050611659818585611f3f565b600191505092915050565b5f5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81036116b6575f915050611708565b5f81426116c39190614c3c565b905062093a8081106116d9575f92505050611708565b62093a808162093a806116ec9190614c3c565b6107d06116f99190614dd5565b6117039190614e43565b925050505b919050565b5f611719826001611de3565b9050919050565b5f5f61172b8361196e565b905080851115611776578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161176d93929190614d73565b60405180910390fd5b5f61178186856126c9565b90505f61178f826001611e54565b90505f61179b86611336565b9050808211156117b5578091506117b2825f611de3565b92505b5f88846117c29190614c3c565b90506117d188888b848761271d565b82955050505050509392505050565b5f5f6117eb83611ae1565b905080851115611836578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161182d93929190614d73565b60405180910390fd5b5f611841865f611de3565b90505f5f61184f838761268a565b91509150611860878784848c61271d565b819450505050509392505050565b834211156118b357836040517f4683af0e0000000000000000000000000000000000000000000000000000000081526004016118aa9190614435565b60405180910390fd5b5f61191461190c7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8989896040516020016118f19493929190614e73565b604051602081830303815290604052805190602001206128e6565b8585856128ff565b9050611920818761292d565b61192a81886123b2565b50505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f611967825f611e54565b9050919050565b5f5f61198261197c84611336565b5f611de3565b90505f61198f828561268a565b5090508092505050919050565b834211156119e157836040517f627913020000000000000000000000000000000000000000000000000000000081526004016119d89190614435565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a0f8c612984565b89604051602001611a2596959493929190614eb6565b6040516020818303038152906040528051906020012090505f611a47826128e6565b90505f611a56828787876128ff565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611aca57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401611ac1929190614f15565b60405180910390fd5b611ad58a8a8a611e42565b50505050505050505050565b5f611aeb82611336565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f611b7f825f611e54565b9050919050565b611b8e614358565b611b9883836129d7565b905092915050565b5f8103611bd9576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611be2610de3565b03611c19576040517f21311aa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c4d333083611c27610f9d565b73ffffffffffffffffffffffffffffffffffffffff1661235d909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f94dfa012dbd3d53b6c092bf771f1f8891ba0605b776a2a861b84099e1b61d3e982611c8e610c74565b611c96610de3565b604051611ca593929190614d3e565b60405180910390a250565b7f000000000000000000000000420000000000000000000000000000000000000681565b61dead81565b5f8183611ce79190614f3c565b905092915050565b5f8183611cfc9190614f89565b905092915050565b5f5f5f611d118686612a36565b915091505f8203611d3657838181611d2c57611d2b614e16565b5b0492505050611ddc565b818411611d5557611d54611d4f5f861460126011612a53565b612a6c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b5f611e336001611df1610c74565b611dfb9190614c6f565b611e03612a7d565b600a611e0f9190615105565b611e17610de3565b611e219190614c6f565b8486612a84909392919063ffffffff16565b905092915050565b5f33905090565b611e4f8383836001612ad1565b505050565b5f611ea4611e60612a7d565b600a611e6c9190615105565b611e74610de3565b611e7e9190614c6f565b6001611e88610c74565b611e929190614c6f565b8486612a84909392919063ffffffff16565b905092915050565b5f611eb78484611af2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611f395781811015611f2a578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611f2193929190614d73565b60405180910390fd5b611f3884848484035f612ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611faf575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611fa69190614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016120169190614668565b60405180910390fd5b61202a838383612ca0565b505050565b5f612038612a7d565b7f0000000000000000000000000000000000000000000000000000000000000012612063919061514f565b905090565b5f7f0000000000000000000000003f5ac2c27bbf08522bc1f5c92237e137356a8ac873ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156120e357507f000000000000000000000000000000000000000000000000000000000000210546145b15612110577fc61b1d579daa4ffc152583fc320066369442db3593a17d7a220004d3abd2b47f905061211b565b612118612e8e565b90505b90565b61212781610bbf565b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c54600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b6121bc8383836001612f23565b6121fd57826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016121f49190614668565b60405180910390fd5b505050565b5f5f61220c611486565b90508065ffffffffffff16831061225c5782816040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600401612253929190615183565b60405180910390fd5b61226583612f85565b915050919050565b5f5f835f018054905090505f5f90505f82905060058311156122f1575f61229384612fde565b8461229e9190614c3c565b90506122ac875f0182613178565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff1610156122df578091506122ef565b6001816122ec9190614c6f565b92505b505b5f612300875f0187858561318a565b90505f811461234f57612321875f0160018361231c9190614c3c565b613178565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16612351565b5f5b94505050505092915050565b61236b8484848460016131ff565b6123ac57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016123a39190614668565b60405180910390fd5b50505050565b5f6123bc83611212565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46124bd81836124b886613270565b613281565b505050565b6124d56124cd610f9d565b85308561235d565b6124df83826134f1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405161253e9291906151aa565b60405180910390a350505050565b5f61259a61259560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20613570565b61357f565b9050919050565b5f6125ab826135d6565b9050919050565b60606125e860057f5374616b656420574348414e000000000000000000000000000000000000000c61361c90919063ffffffff16565b905090565b606061262360067f310000000000000000000000000000000000000000000000000000000000000161361c90919063ffffffff16565b905090565b5f5f825f018054905090505f811461268057612652835f0160018361264d9190614c3c565b613178565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16612682565b5f5b915050919050565b5f5f5f61269684611664565b905061271081866126a79190614dd5565b6126b19190614e43565b915081856126bf9190614c3c565b9250509250929050565b5f5f6126d483611664565b90505f8111156127125761270b816127106126ef9190614c3c565b612710866126fd9190614dd5565b6136c990919063ffffffff16565b9150612716565b8391505b5092915050565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461275c5761275b843383611eac565b5b6127668482613707565b5f61276f610f9d565b905061279c86858373ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b5f831115612860575f6002846127b29190614e43565b90505f81856127c19190614c3c565b90505f8211156127f9576127f861dead838573ffffffffffffffffffffffffffffffffffffffff166121af9092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff167f9f46e08d780572b24e29ecea71f5ac0250e1e91fbf9e88a0ce526d54acd1a4ed86848461283c610c74565b612844610de3565b6040516128559594939291906151d1565b60405180910390a250505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db87866040516128d69291906151aa565b60405180910390a4505050505050565b5f6128f86128f2612068565b83613786565b9050919050565b5f5f5f5f61290f888888886137c6565b92509250925061291f82826138ad565b829350505050949350505050565b5f61293783612984565b905080821461297f5782816040517f752d88c0000000000000000000000000000000000000000000000000000000008152600401612976929190615222565b60405180910390fd5b505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b6129df614358565b612a2e8260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20613a0f90919063ffffffff16565b905092915050565b5f5f5f198385098385029150818110828203039250509250929050565b5f612a5d84613ade565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b5f5f905090565b5f612ab2612a9183613ae9565b8015612aad57505f8480612aa857612aa7614e16565b5b868809115b613ade565b612abd868686611d04565b612ac79190614c6f565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612b389190614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612ba89190614668565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612c919190614435565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612cdd57612cdc8361211e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d1a57612d198261211e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d5557505f81115b15612e7e575f612d6483611336565b90505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f82118015612db557505f81115b15612e38578282612dc69190614c6f565b8342612dd29190614dd5565b8383612dde9190614dd5565b612de89190614c6f565b612df29190614e43565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e7b565b42600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50505b612e89838383613b16565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f1f56113878558abea5793cdfc62773579e1c19a84b5b623413315432d2c0d99e7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612f08959493929190615249565b60405160208183030381529060405280519060200120905090565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316612f77578383151615612f6b573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f65ffffffffffff8016821115612fd6576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612fcd9291906152d3565b60405180910390fd5b819050919050565b5f60018211612fef57819050613173565b5f8290505f60019050700100000000000000000000000000000000821061301f57608082901c9150604081901b90505b68010000000000000000821061303e57604082901c9150602081901b90505b640100000000821061305957602082901c9150601081901b90505b62010000821061307257601082901c9150600881901b90505b610100821061308a57600882901c9150600481901b90505b601082106130a157600482901c9150600281901b90505b600482106130b157600181901b90505b600181600302901c905060018185816130cd576130cc614e16565b5b048201901c905060018185816130e6576130e5614e16565b5b048201901c905060018185816130ff576130fe614e16565b5b048201901c9050600181858161311857613117614e16565b5b048201901c9050600181858161313157613130614e16565b5b048201901c9050600181858161314a57613149614e16565b5b048201901c905061316c81858161316457613163614e16565b5b048211613ade565b8103925050505b919050565b5f825f528160205f2001905092915050565b5f5b818310156131f4575f61319f8484613bc4565b90508465ffffffffffff166131b48783613178565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff1611156131de578092506131ee565b6001816131eb9190614c6f565b93505b5061318c565b819050949350505050565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f5114831661325d578383151615613251573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f61327a82611336565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bc57505f81115b156134ec575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146133d6575f5f61334760095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611cef61334286613be9565b613c56565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516133cb9291906151aa565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146134eb575f5f61345c60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611cda61345786613be9565b613c56565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516134e09291906151aa565b60405180910390a250505b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613561575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016135589190614668565b60405180910390fd5b61356c5f8383612ca0565b5050565b5f815f01805490509050919050565b5f63ffffffff80168211156135ce576020826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016135c5929190615333565b60405180910390fd5b819050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060ff5f1b83146136385761363183613c95565b90506136c3565b81805461364490614d0e565b80601f016020809104026020016040519081016040528092919081815260200182805461367090614d0e565b80156136bb5780601f10613692576101008083540402835291602001916136bb565b820191905f5260205f20905b81548152906001019060200180831161369e57829003601f168201915b505050505090505b92915050565b5f5f82036136dc576136db6012612a6c565b5b60018260018503816136f1576136f0614e16565b5b04016136fe5f8511613ade565b02905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613777575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161376e9190614668565b60405180910390fd5b613782825f83612ca0565b5050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115613802575f6003859250925092506138a3565b5f6001888888886040515f8152602001604052604051613825949392919061535a565b6020604051602081039080840390855afa158015613845573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613896575f60015f5f1b935093509350506138a3565b805f5f5f1b935093509350505b9450945094915050565b5f60038111156138c0576138bf61539d565b5b8260038111156138d3576138d261539d565b5b0315613a0b57600160038111156138ed576138ec61539d565b5b826003811115613900576138ff61539d565b5b03613937576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561394b5761394a61539d565b5b82600381111561395e5761395d61539d565b5b036139a257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016139999190614435565b60405180910390fd5b6003808111156139b5576139b461539d565b5b8260038111156139c8576139c761539d565b5b03613a0a57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613a019190614640565b60405180910390fd5b5b5050565b613a17614358565b825f018263ffffffff1681548110613a3257613a316153ca565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b5f8115159050919050565b5f60016002836003811115613b0157613b0061539d565b5b613b0b91906153f7565b60ff16149050919050565b613b21838383613d07565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613bb4575f613b5d610de3565b90505f613b68613f20565b905080821115613bb15781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401613ba89291906151aa565b60405180910390fd5b50505b613bbf838383613f43565b505050565b5f6002828418613bd49190614e43565b828416613be19190614c6f565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115613c4e5760d0826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613c45929190615460565b60405180910390fd5b819050919050565b5f5f613c89613c63611486565b613c79613c6f88612628565b868863ffffffff16565b87613ffb9092919063ffffffff16565b91509150935093915050565b60605f613ca183614016565b90505f602067ffffffffffffffff811115613cbf57613cbe614da8565b5b6040519080825280601f01601f191660200182016040528015613cf15781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d57578060025f828254613d4b9190614c6f565b92505081905550613e25565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613de0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401613dd793929190614d73565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e6c578060025f8282540392505081905550613eb6565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f139190614435565b60405180910390a3505050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f8f57613f8c600a611cda613f8784613be9565b613c56565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fdb57613fd8600a611cef613fd384613be9565b613c56565b50505b613ff6613fe784611212565b613ff084611212565b83613281565b505050565b5f5f61400a855f018585614064565b91509150935093915050565b5f5f60ff835f1c169050601f81111561405b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f5f5f858054905090505f811115614270575f61408d876001846140889190614c3c565b613178565b90505f815f015f9054906101000a900465ffffffffffff1690505f825f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1690508765ffffffffffff168265ffffffffffff16111561411e576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036141885786835f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550614261565b8860405180604001604052808a65ffffffffffff1681526020018979ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b80879550955050505050614350565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b60405180604001604052805f65ffffffffffff1681526020015f79ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143c182614398565b9050919050565b6143d1816143b7565b81146143db575f5ffd5b50565b5f813590506143ec816143c8565b92915050565b5f6020828403121561440757614406614394565b5b5f614414848285016143de565b91505092915050565b5f819050919050565b61442f8161441d565b82525050565b5f6020820190506144485f830184614426565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6144908261444e565b61449a8185614458565b93506144aa818560208601614468565b6144b381614476565b840191505092915050565b5f6020820190508181035f8301526144d68184614486565b905092915050565b6144e78161441d565b81146144f1575f5ffd5b50565b5f81359050614502816144de565b92915050565b5f6020828403121561451d5761451c614394565b5b5f61452a848285016144f4565b91505092915050565b5f5f6040838503121561454957614548614394565b5b5f614556858286016143de565b9250506020614567858286016144f4565b9150509250929050565b5f8115159050919050565b61458581614571565b82525050565b5f60208201905061459e5f83018461457c565b92915050565b5f5f5f606084860312156145bb576145ba614394565b5b5f6145c8868287016143de565b93505060206145d9868287016143de565b92505060406145ea868287016144f4565b9150509250925092565b5f60ff82169050919050565b614609816145f4565b82525050565b5f6020820190506146225f830184614600565b92915050565b5f819050919050565b61463a81614628565b82525050565b5f6020820190506146535f830184614631565b92915050565b614662816143b7565b82525050565b5f60208201905061467b5f830184614659565b92915050565b5f5f6040838503121561469757614696614394565b5b5f6146a4858286016144f4565b92505060206146b5858286016143de565b9150509250929050565b5f63ffffffff82169050919050565b6146d7816146bf565b82525050565b5f6020820190506146f05f8301846146ce565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61472a816146f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147628161441d565b82525050565b5f6147738383614759565b60208301905092915050565b5f602082019050919050565b5f61479582614730565b61479f818561473a565b93506147aa8361474a565b805f5b838110156147da5781516147c18882614768565b97506147cc8361477f565b9250506001810190506147ad565b5085935050505092915050565b5f60e0820190506147fa5f83018a614721565b818103602083015261480c8189614486565b905081810360408301526148208188614486565b905061482f6060830187614426565b61483c6080830186614659565b61484960a0830185614631565b81810360c083015261485b818461478b565b905098975050505050505050565b5f65ffffffffffff82169050919050565b61488381614869565b82525050565b5f60208201905061489c5f83018461487a565b92915050565b5f5f5f606084860312156148b9576148b8614394565b5b5f6148c6868287016144f4565b93505060206148d7868287016143de565b92505060406148e8868287016143de565b9150509250925092565b6148fb816145f4565b8114614905575f5ffd5b50565b5f81359050614916816148f2565b92915050565b61492581614628565b811461492f575f5ffd5b50565b5f813590506149408161491c565b92915050565b5f5f5f5f5f5f60c087890312156149605761495f614394565b5b5f61496d89828a016143de565b965050602061497e89828a016144f4565b955050604061498f89828a016144f4565b94505060606149a089828a01614908565b93505060806149b189828a01614932565b92505060a06149c289828a01614932565b9150509295509295509295565b5f5f5f5f5f5f5f60e0888a0312156149ea576149e9614394565b5b5f6149f78a828b016143de565b9750506020614a088a828b016143de565b9650506040614a198a828b016144f4565b9550506060614a2a8a828b016144f4565b9450506080614a3b8a828b01614908565b93505060a0614a4c8a828b01614932565b92505060c0614a5d8a828b01614932565b91505092959891949750929550565b5f5f60408385031215614a8257614a81614394565b5b5f614a8f858286016143de565b9250506020614aa0858286016143de565b9150509250929050565b614ab3816146bf565b8114614abd575f5ffd5b50565b5f81359050614ace81614aaa565b92915050565b5f5f60408385031215614aea57614ae9614394565b5b5f614af7858286016143de565b9250506020614b0885828601614ac0565b9150509250929050565b614b1b81614869565b82525050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b614b4f81614b21565b82525050565b604082015f820151614b695f850182614b12565b506020820151614b7c6020850182614b46565b50505050565b5f604082019050614b955f830184614b55565b92915050565b5f819050919050565b5f614bbe614bb9614bb484614398565b614b9b565b614398565b9050919050565b5f614bcf82614ba4565b9050919050565b5f614be082614bc5565b9050919050565b614bf081614bd6565b82525050565b5f602082019050614c095f830184614be7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c468261441d565b9150614c518361441d565b9250828203905081811115614c6957614c68614c0f565b5b92915050565b5f614c798261441d565b9150614c848361441d565b9250828201905080821115614c9c57614c9b614c0f565b5b92915050565b5f81519050614cb0816144de565b92915050565b5f60208284031215614ccb57614cca614394565b5b5f614cd884828501614ca2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614d2557607f821691505b602082108103614d3857614d37614ce1565b5b50919050565b5f606082019050614d515f830186614426565b614d5e6020830185614426565b614d6b6040830184614426565b949350505050565b5f606082019050614d865f830186614659565b614d936020830185614426565b614da06040830184614426565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f614ddf8261441d565b9150614dea8361441d565b9250828202614df88161441d565b91508282048414831517614e0f57614e0e614c0f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e4d8261441d565b9150614e588361441d565b925082614e6857614e67614e16565b5b828204905092915050565b5f608082019050614e865f830187614631565b614e936020830186614659565b614ea06040830185614426565b614ead6060830184614426565b95945050505050565b5f60c082019050614ec95f830189614631565b614ed66020830188614659565b614ee36040830187614659565b614ef06060830186614426565b614efd6080830185614426565b614f0a60a0830184614426565b979650505050505050565b5f604082019050614f285f830185614659565b614f356020830184614659565b9392505050565b5f614f4682614b21565b9150614f5183614b21565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115614f8357614f82614c0f565b5b92915050565b5f614f9382614b21565b9150614f9e83614b21565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115614fd057614fcf614c0f565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b600185111561502b5780860481111561500757615006614c0f565b5b60018516156150165780820291505b808102905061502485614fd6565b9450614feb565b94509492505050565b5f8261504357600190506150fe565b81615050575f90506150fe565b816001811461506657600281146150705761509f565b60019150506150fe565b60ff84111561508257615081614c0f565b5b8360020a91508482111561509957615098614c0f565b5b506150fe565b5060208310610133831016604e8410600b84101617156150d45782820a9050838111156150cf576150ce614c0f565b5b6150fe565b6150e18484846001614fe2565b925090508184048111156150f8576150f7614c0f565b5b81810290505b9392505050565b5f61510f8261441d565b915061511a836145f4565b92506151477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484615034565b905092915050565b5f615159826145f4565b9150615164836145f4565b9250828201905060ff81111561517d5761517c614c0f565b5b92915050565b5f6040820190506151965f830185614426565b6151a3602083018461487a565b9392505050565b5f6040820190506151bd5f830185614426565b6151ca6020830184614426565b9392505050565b5f60a0820190506151e45f830188614426565b6151f16020830187614426565b6151fe6040830186614426565b61520b6060830185614426565b6152186080830184614426565b9695505050505050565b5f6040820190506152355f830185614659565b6152426020830184614426565b9392505050565b5f60a08201905061525c5f830188614631565b6152696020830187614631565b6152766040830186614631565b6152836060830185614426565b6152906080830184614659565b9695505050505050565b5f819050919050565b5f6152bd6152b86152b38461529a565b614b9b565b6145f4565b9050919050565b6152cd816152a3565b82525050565b5f6040820190506152e65f8301856152c4565b6152f36020830184614426565b9392505050565b5f819050919050565b5f61531d615318615313846152fa565b614b9b565b6145f4565b9050919050565b61532d81615303565b82525050565b5f6040820190506153465f830185615324565b6153536020830184614426565b9392505050565b5f60808201905061536d5f830187614631565b61537a6020830186614600565b6153876040830185614631565b6153946060830184614631565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f615401826145f4565b915061540c836145f4565b92508261541c5761541b614e16565b5b828206905092915050565b5f819050919050565b5f61544a61544561544084615427565b614b9b565b6145f4565b9050919050565b61545a81615430565b82525050565b5f6040820190506154735f830185615451565b6154806020830184614426565b939250505056fea26469706673582212208faba7c92e3b530e8ed5296eb22e8647e0012f1c253b27fe682471863166f93664736f6c63430008210033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ba5ed0000e1ca9136a695f0a848012a16008b032000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000f4240

-----Decoded View---------------
Arg [0] : wchan_ (address): 0xBa5ED0000e1CA9136a695f0a848012A16008B032
Arg [1] : rewardToken_ (address): 0x4200000000000000000000000000000000000006
Arg [2] : seedAmount_ (uint256): 1000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ba5ed0000e1ca9136a695f0a848012a16008b032
Arg [1] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [2] : 00000000000000000000000000000000000000000000000000000000000f4240

🤖 Code Reader Beta

Generate instant answers for your smart contract questions using Al Models. Read more.

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.