Overview
ETH Balance
ETH Value
$0.00Multichain Info
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Propose Strategy | 4979209 | 95 days ago | IN | 0 ETH | 0.00000004 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
4979209 | 95 days ago | Contract Creation | 0 ETH |
Contract Source Code Verified (Exact Match)
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {StrategyBet} from "./StrategyBet.sol"; import {IERC20} from "./interfaces/IERC20.sol"; import {IERC4626} from "./interfaces/IERC4626.sol"; contract StrategyFactory { event StrategyProposed(address indexed trader, address strategyBet, address[] vaults, uint256[] amounts, address[] tokens); address public ausd; // Address of AUSD token address[] public allStrategies; constructor(address _ausd) { ausd = _ausd; } function proposeStrategy( address[] calldata vaults, uint256[] calldata amounts, address[] calldata tokens, uint256 objectivePercent, uint256 duration, uint256 commission ) external returns (address) { require(vaults.length == amounts.length, "vaults/amounts mismatch"); for (uint i = 0; i < tokens.length; i++) { require(IERC20(tokens[i]).allowance(address(msg.sender), address(this)) == amounts[i] && IERC20(tokens[i]).balanceOf(address(msg.sender)) >= amounts[i], "Token amount invalid"); require(IERC4626(vaults[i]).maxDeposit(address(this)) >= amounts[i], "Vault max deposit below amount"); require(IERC4626(vaults[i]).asset() == tokens[i], "Vault asset mismatch"); } // Deploy the StrategyBet contract StrategyBet bet = new StrategyBet( msg.sender, vaults, amounts, tokens, ausd, objectivePercent, duration, commission, address(this) ); for (uint256 i = 0; i < tokens.length; i++) { IERC20(tokens[i]).transferFrom(msg.sender, address(bet), amounts[i]); } // Execute the strategy bet.executeStrategy(); // Add the strategy to the list of all strategies allStrategies.push(address(bet)); emit StrategyProposed(msg.sender, address(bet), vaults, amounts, tokens); return address(bet); } function sum(uint256[] memory arr) internal pure returns (uint256 s) { for (uint i = 0; i < arr.length; i++) s += arr[i]; } function getAllStrategies() external view returns (address[] memory) { return allStrategies; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {IERC20} from "./interfaces/IERC20.sol"; import {IERC4626} from "./interfaces/IERC4626.sol"; contract StrategyBet { enum BetSide { None, Yes, No } struct Bet { uint256 amount; BetSide side; bool claimed; } address public trader; address[] public vaults; uint256[] public amounts; address[] public tokens; address public ausd; uint256 public objectivePercent; uint256 public duration; uint256 public commission; // in basis points (e.g. 100 = 1%) uint256 public startTime; uint256 public lockTime; uint256 public endTime; uint256 public initialValue; uint256 public finalValue; bool public betsClosed; bool public resolved; bool public strategyExecuted; address public factory; mapping(address => Bet) public bets; uint256 public totalYes; uint256 public totalNo; event BetPlaced(address indexed user, BetSide side, uint256 amount); event BetsClosed(uint256 snapshotValue); event StrategyResolved(bool success, uint256 finalValue); event Claimed(address indexed user, uint256 amount); modifier onlyTrader() { require(msg.sender == trader, "not trader"); _; } modifier onlyFactoryOrTrader() { require(msg.sender == factory || msg.sender == trader, "not allowed"); _; } constructor( address _trader, address[] memory _vaults, uint256[] memory _amounts, address[] memory _tokens, address _ausd, uint256 _objectivePercent, uint256 _duration, uint256 _commission, address _factory ) { trader = _trader; vaults = _vaults; amounts = _amounts; tokens = _tokens; ausd = _ausd; objectivePercent = _objectivePercent; duration = _duration; commission = _commission; startTime = block.timestamp; factory = _factory; strategyExecuted = false; } function executeStrategy() external onlyFactoryOrTrader { require(!strategyExecuted, "already executed"); strategyExecuted = true; for (uint i = 0; i < vaults.length; i++) { IERC20(tokens[i]).approve(vaults[i], amounts[i]); IERC4626(vaults[i]).deposit(amounts[i], address(this)); } } // only for testing purposes to retreive test funds. Need to be removed in production function withdrawFunds() external { for (uint i = 0; i < vaults.length; i++) { IERC4626(vaults[i]).withdraw(IERC4626(vaults[i]).maxWithdraw(address(this)), address(this), address(this)); IERC20(tokens[i]).transfer(trader, IERC20(tokens[i]).balanceOf(address(this))); } IERC20(ausd).transfer(trader, IERC20(ausd).balanceOf(address(this))); } function placeBet(bool isYes, uint256 amount) external { require(!betsClosed, "bets closed"); require(amount > 0, "zero amount"); require(bets[msg.sender].amount == 0, "already bet"); IERC20(ausd).transferFrom(msg.sender, address(this), amount); bets[msg.sender] = Bet({ amount: amount, side: isYes ? BetSide.Yes : BetSide.No, claimed: false }); if (isYes) totalYes += amount; else totalNo += amount; emit BetPlaced(msg.sender, isYes ? BetSide.Yes : BetSide.No, amount); } function closeBetsAndLock() external onlyTrader { require(!betsClosed, "already closed"); require(block.timestamp >= startTime + 2 days, "betting phase not over"); // 48h betsClosed = true; lockTime = block.timestamp; endTime = lockTime + duration; // Snapshot the value of the strategy initialValue = getCurrentValue(); emit BetsClosed(initialValue); } function getCurrentValue() public view returns (uint256 total) { for (uint i = 0; i < vaults.length; i++) { uint256 balance = IERC4626(vaults[i]).balanceOf(address(this)); total += IERC4626(vaults[i]).previewRedeem(balance); } } function resolveStrategy() external { require(betsClosed, "bets not closed"); require(!resolved, "already resolved"); require(block.timestamp >= endTime, "not finished"); finalValue = getCurrentValue(); resolved = true; bool success = (finalValue >= initialValue * (10000 + objectivePercent) / 10000); emit StrategyResolved(success, finalValue); } function claim() external { require(resolved, "not resolved"); Bet storage b = bets[msg.sender]; require(!b.claimed, "already claimed"); require(b.amount > 0, "no bet"); bool success = (finalValue >= initialValue * (10000 + objectivePercent) / 10000); BetSide winner = success ? BetSide.Yes : BetSide.No; uint256 totalWinner = success ? totalYes : totalNo; uint256 totalLoser = success ? totalNo : totalYes; uint256 payout = 0; if (b.side == winner && totalWinner > 0) { // Redistribute losing bets proportionally payout = b.amount + (b.amount / totalWinner) * totalLoser; // Optionally: add yield share here } b.claimed = true; if (payout > 0) IERC20(ausd).transfer(msg.sender, payout); emit Claimed(msg.sender, payout); } function withdrawStrategy() external onlyTrader { require(resolved, "not resolved"); require(block.timestamp >= endTime, "not finished"); for (uint i = 0; i < vaults.length; i++) { uint256 maxWithdraw = IERC4626(vaults[i]).maxWithdraw(address(this)); IERC4626(vaults[i]).withdraw(maxWithdraw, address(this), address(this)); IERC20(tokens[i]).transfer(trader, IERC20(tokens[i]).balanceOf(address(this))); } // add yield share here } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IERC4626 { function deposit(uint256 assets, address receiver) external returns (uint256 shares); function maxWithdraw(address owner) external view returns (uint256); function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); function balanceOf(address account) external view returns (uint256); function previewRedeem(uint256 shares) external view returns (uint256 assets); function maxDeposit(address receiver) external view returns (uint256); function asset() external view returns (address); }
{ "evmVersion": "cancun", "libraries": {}, "metadata": { "appendCBOR": true, "bytecodeHash": "ipfs", "useLiteralContent": false }, "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "viaIR": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ausd","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"strategyBet","type":"address"},{"indexed":false,"internalType":"address[]","name":"vaults","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"StrategyProposed","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allStrategies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ausd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"vaults","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"objectivePercent","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"commission","type":"uint256"}],"name":"proposeStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f5ffd5b5060405161417d38038061417d833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6140718061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806352eb0dec1461004e578063c23af8321461007e578063c3b288641461009c578063e1e3dfeb146100ba575b5f5ffd5b61006860048036038101906100639190610985565b6100ea565b6040516100759190610aad565b60405180910390f35b61008661079d565b6040516100939190610aad565b60405180910390f35b6100a46107c1565b6040516100b19190610b7d565b60405180910390f35b6100d460048036038101906100cf9190610b9d565b61084c565b6040516100e19190610aad565b60405180910390f35b5f878790508a8a905014610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c22565b60405180910390fd5b5f5f90505b868690508110156105305788888281811061015657610155610c40565b5b905060200201358787838181106101705761016f610c40565b5b90506020020160208101906101859190610c97565b73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016101bf929190610cc2565b602060405180830381865afa1580156101da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fe9190610cfd565b1480156102c2575088888281811061021957610218610c40565b5b9050602002013587878381811061023357610232610c40565b5b90506020020160208101906102489190610c97565b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016102809190610aad565b602060405180830381865afa15801561029b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102bf9190610cfd565b10155b610301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f890610d72565b60405180910390fd5b88888281811061031457610313610c40565b5b905060200201358b8b8381811061032e5761032d610c40565b5b90506020020160208101906103439190610c97565b73ffffffffffffffffffffffffffffffffffffffff1663402d267d306040518263ffffffff1660e01b815260040161037b9190610aad565b602060405180830381865afa158015610396573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ba9190610cfd565b10156103fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f290610dda565b60405180910390fd5b86868281811061040e5761040d610c40565b5b90506020020160208101906104239190610c97565b73ffffffffffffffffffffffffffffffffffffffff168b8b8381811061044c5761044b610c40565b5b90506020020160208101906104619190610c97565b73ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cd9190610e0c565b73ffffffffffffffffffffffffffffffffffffffff1614610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a90610e81565b60405180910390fd5b8080600101915050610138565b505f338b8b8b8b8b8b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8c8c3060405161056a90610887565b61057f9c9b9a99989796959493929190610fac565b604051809103905ff080158015610598573d5f5f3e3d5ffd5b5090505f5f90505b87879050811015610676578787828181106105be576105bd610c40565b5b90506020020160208101906105d39190610c97565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33848d8d8681811061060357610602610c40565b5b905060200201356040518463ffffffff1660e01b815260040161062893929190611052565b6020604051808303815f875af1158015610644573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066891906110bc565b5080806001019150506105a0565b508073ffffffffffffffffffffffffffffffffffffffff1663446471856040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156106bc575f5ffd5b505af11580156106ce573d5f5f3e3d5ffd5b50505050600181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f549da332e0b2f278bd26f4c3f269be2a23c1b578ad08147c6889f6dbb961da2c828d8d8d8d8d8d60405161078497969594939291906110e7565b60405180910390a2809150509998505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180548060200260200160405190810160405280929190818152602001828054801561084257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116107f9575b5050505050905090565b6001818154811061085b575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ef68061114683390190565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126108bd576108bc61089c565b5b8235905067ffffffffffffffff8111156108da576108d96108a0565b5b6020830191508360208202830111156108f6576108f56108a4565b5b9250929050565b5f5f83601f8401126109125761091161089c565b5b8235905067ffffffffffffffff81111561092f5761092e6108a0565b5b60208301915083602082028301111561094b5761094a6108a4565b5b9250929050565b5f819050919050565b61096481610952565b811461096e575f5ffd5b50565b5f8135905061097f8161095b565b92915050565b5f5f5f5f5f5f5f5f5f60c08a8c0312156109a2576109a1610894565b5b5f8a013567ffffffffffffffff8111156109bf576109be610898565b5b6109cb8c828d016108a8565b995099505060208a013567ffffffffffffffff8111156109ee576109ed610898565b5b6109fa8c828d016108fd565b975097505060408a013567ffffffffffffffff811115610a1d57610a1c610898565b5b610a298c828d016108a8565b95509550506060610a3c8c828d01610971565b9350506080610a4d8c828d01610971565b92505060a0610a5e8c828d01610971565b9150509295985092959850929598565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a9782610a6e565b9050919050565b610aa781610a8d565b82525050565b5f602082019050610ac05f830184610a9e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610af881610a8d565b82525050565b5f610b098383610aef565b60208301905092915050565b5f602082019050919050565b5f610b2b82610ac6565b610b358185610ad0565b9350610b4083610ae0565b805f5b83811015610b70578151610b578882610afe565b9750610b6283610b15565b925050600181019050610b43565b5085935050505092915050565b5f6020820190508181035f830152610b958184610b21565b905092915050565b5f60208284031215610bb257610bb1610894565b5b5f610bbf84828501610971565b91505092915050565b5f82825260208201905092915050565b7f7661756c74732f616d6f756e7473206d69736d617463680000000000000000005f82015250565b5f610c0c601783610bc8565b9150610c1782610bd8565b602082019050919050565b5f6020820190508181035f830152610c3981610c00565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610c7681610a8d565b8114610c80575f5ffd5b50565b5f81359050610c9181610c6d565b92915050565b5f60208284031215610cac57610cab610894565b5b5f610cb984828501610c83565b91505092915050565b5f604082019050610cd55f830185610a9e565b610ce26020830184610a9e565b9392505050565b5f81519050610cf78161095b565b92915050565b5f60208284031215610d1257610d11610894565b5b5f610d1f84828501610ce9565b91505092915050565b7f546f6b656e20616d6f756e7420696e76616c69640000000000000000000000005f82015250565b5f610d5c601483610bc8565b9150610d6782610d28565b602082019050919050565b5f6020820190508181035f830152610d8981610d50565b9050919050565b7f5661756c74206d6178206465706f7369742062656c6f7720616d6f756e7400005f82015250565b5f610dc4601e83610bc8565b9150610dcf82610d90565b602082019050919050565b5f6020820190508181035f830152610df181610db8565b9050919050565b5f81519050610e0681610c6d565b92915050565b5f60208284031215610e2157610e20610894565b5b5f610e2e84828501610df8565b91505092915050565b7f5661756c74206173736574206d69736d617463680000000000000000000000005f82015250565b5f610e6b601483610bc8565b9150610e7682610e37565b602082019050919050565b5f6020820190508181035f830152610e9881610e5f565b9050919050565b5f819050919050565b5f610eb66020840184610c83565b905092915050565b5f602082019050919050565b5f610ed58385610ad0565b9350610ee082610e9f565b805f5b85811015610f1857610ef58284610ea8565b610eff8882610afe565b9750610f0a83610ebe565b925050600181019050610ee3565b5085925050509392505050565b5f82825260208201905092915050565b5f5ffd5b82818337505050565b5f610f4d8385610f25565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610f8057610f7f610f35565b5b602083029250610f91838584610f39565b82840190509392505050565b610fa681610952565b82525050565b5f61012082019050610fc05f83018f610a9e565b8181036020830152610fd3818d8f610eca565b90508181036040830152610fe8818b8d610f42565b90508181036060830152610ffd81898b610eca565b905061100c6080830188610a9e565b61101960a0830187610f9d565b61102660c0830186610f9d565b61103360e0830185610f9d565b611041610100830184610a9e565b9d9c50505050505050505050505050565b5f6060820190506110655f830186610a9e565b6110726020830185610a9e565b61107f6040830184610f9d565b949350505050565b5f8115159050919050565b61109b81611087565b81146110a5575f5ffd5b50565b5f815190506110b681611092565b92915050565b5f602082840312156110d1576110d0610894565b5b5f6110de848285016110a8565b91505092915050565b5f6080820190506110fa5f83018a610a9e565b818103602083015261110d81888a610eca565b90508181036040830152611122818688610f42565b90508181036060830152611137818486610eca565b90509897505050505050505056fe608060405234801561000f575f5ffd5b50604051612ef6380380612ef683398181016040528101906100319190610515565b885f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550876001908051906020019061008692919061017a565b50866002908051906020019061009d929190610201565b5085600390805190602001906100b492919061017a565b508460045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360058190555082600681905550816007819055504260088190555080600d60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d60026101000a81548160ff02191690831515021790555050505050505050505061062d565b828054828255905f5260205f209081019282156101f0579160200282015b828111156101ef578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610198565b5b5090506101fd919061024c565b5090565b828054828255905f5260205f2090810192821561023b579160200282015b8281111561023a57825182559160200191906001019061021f565b5b509050610248919061024c565b5090565b5b80821115610263575f815f90555060010161024d565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102a182610278565b9050919050565b6102b181610297565b81146102bb575f5ffd5b50565b5f815190506102cc816102a8565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61031c826102d6565b810181811067ffffffffffffffff8211171561033b5761033a6102e6565b5b80604052505050565b5f61034d610267565b90506103598282610313565b919050565b5f67ffffffffffffffff821115610378576103776102e6565b5b602082029050602081019050919050565b5f5ffd5b5f61039f61039a8461035e565b610344565b905080838252602082019050602084028301858111156103c2576103c1610389565b5b835b818110156103eb57806103d788826102be565b8452602084019350506020810190506103c4565b5050509392505050565b5f82601f830112610409576104086102d2565b5b815161041984826020860161038d565b91505092915050565b5f67ffffffffffffffff82111561043c5761043b6102e6565b5b602082029050602081019050919050565b5f819050919050565b61045f8161044d565b8114610469575f5ffd5b50565b5f8151905061047a81610456565b92915050565b5f61049261048d84610422565b610344565b905080838252602082019050602084028301858111156104b5576104b4610389565b5b835b818110156104de57806104ca888261046c565b8452602084019350506020810190506104b7565b5050509392505050565b5f82601f8301126104fc576104fb6102d2565b5b815161050c848260208601610480565b91505092915050565b5f5f5f5f5f5f5f5f5f6101208a8c03121561053357610532610270565b5b5f6105408c828d016102be565b99505060208a015167ffffffffffffffff81111561056157610560610274565b5b61056d8c828d016103f5565b98505060408a015167ffffffffffffffff81111561058e5761058d610274565b5b61059a8c828d016104e8565b97505060608a015167ffffffffffffffff8111156105bb576105ba610274565b5b6105c78c828d016103f5565b96505060806105d88c828d016102be565b95505060a06105e98c828d0161046c565b94505060c06105fa8c828d0161046c565b93505060e061060b8c828d0161046c565b92505061010061061d8c828d016102be565b9150509295985092959850929598565b6128bc8061063a5f395ff3fe608060405234801561000f575f5ffd5b50600436106101c2575f3560e01c80635f83129e116100f7578063bfb44bce11610095578063e14891911161006f578063e14891911461047c578063e8e0e37c1461049a578063f7f74b22146104b8578063f8e6fe13146104d4576101c2565b8063bfb44bce14610422578063c23af83214610440578063c45a01551461045e576101c2565b806389a78f1a116100d157806389a78f1a146103845780638c64ea4a146103b65780639a4977d5146103e6578063af00888314610404576101c2565b80635f83129e1461033e57806378e979251461034857806388ba8dd614610366576101c2565b80633f6fa655116101645780634e71d92d1161013e5780634e71d92d146102c85780634f64b2be146102d257806356377d16146103025780635c206f4114610320576101c2565b80633f6fa65514610270578063446471851461028e57806345f0a44f14610298576101c2565b80631758078b116101a05780631758078b1461022057806324600fc31461023e5780632bf45008146102485780633197cbb614610252576101c2565b80630d668087146101c65780630f76c114146101e45780630fb5a6b414610202575b5f5ffd5b6101ce6104de565b6040516101db9190611db5565b60405180910390f35b6101ec6104e4565b6040516101f99190611db5565b60405180910390f35b61020a61067f565b6040516102179190611db5565b60405180910390f35b610228610685565b6040516102359190611e0d565b60405180910390f35b6102466106a9565b005b610250610b14565b005b61025a610c90565b6040516102679190611db5565b60405180910390f35b610278610c96565b6040516102859190611e40565b60405180910390f35b610296610ca9565b005b6102b260048036038101906102ad9190611e87565b610ffd565b6040516102bf9190611db5565b60405180910390f35b6102d061101d565b005b6102ec60048036038101906102e79190611e87565b61133e565b6040516102f99190611e0d565b60405180910390f35b61030a611379565b6040516103179190611db5565b60405180910390f35b61032861137f565b6040516103359190611db5565b60405180910390f35b610346611385565b005b6103506117c2565b60405161035d9190611db5565b60405180910390f35b61036e6117c8565b60405161037b9190611db5565b60405180910390f35b61039e60048036038101906103999190611edc565b6117ce565b6040516103ad93929190611f7a565b60405180910390f35b6103d060048036038101906103cb9190611e87565b61180d565b6040516103dd9190611e0d565b60405180910390f35b6103ee611848565b6040516103fb9190611db5565b60405180910390f35b61040c61184e565b6040516104199190611db5565b60405180910390f35b61042a611854565b6040516104379190611e40565b60405180910390f35b610448611866565b6040516104559190611e0d565b60405180910390f35b61046661188b565b6040516104739190611e0d565b60405180910390f35b6104846118b1565b6040516104919190611db5565b60405180910390f35b6104a26118b7565b6040516104af9190611e40565b60405180910390f35b6104d260048036038101906104cd9190611fd9565b6118ca565b005b6104dc611bed565b005b60095481565b5f5f5f90505b60018054905081101561067b575f6001828154811061050c5761050b612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161056c9190611e0d565b602060405180830381865afa158015610587573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ab9190612058565b9050600182815481106105c1576105c0612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cdad506826040518263ffffffff1660e01b81526004016106219190611db5565b602060405180830381865afa15801561063c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106609190612058565b8361066b91906120b0565b92505080806001019150506104ea565b5090565b60065481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f90505b6001805490508110156109bc57600181815481106106cf576106ce612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b460af946001838154811061072657610725612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce96cb77306040518263ffffffff1660e01b81526004016107869190611e0d565b602060405180830381865afa1580156107a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c59190612058565b30306040518463ffffffff1660e01b81526004016107e5939291906120e3565b6020604051808303815f875af1158015610801573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108259190612058565b506003818154811061083a57610839612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600384815481106108b2576108b1612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109129190611e0d565b602060405180830381865afa15801561092d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190612058565b6040518363ffffffff1660e01b815260040161096e929190612118565b6020604051808303815f875af115801561098a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190612153565b5080806001019150506106ae565b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a759190611e0d565b602060405180830381865afa158015610a90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab49190612058565b6040518363ffffffff1660e01b8152600401610ad1929190612118565b6020604051808303815f875af1158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612153565b50565b600d5f9054906101000a900460ff16610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906121d8565b60405180910390fd5b600d60019054906101000a900460ff1615610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990612240565b60405180910390fd5b600a54421015610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906122a8565b60405180910390fd5b610bff6104e4565b600c819055506001600d60016101000a81548160ff0219169083151502179055505f612710600554612710610c3491906120b0565b600b54610c4191906122c6565b610c4b9190612334565b600c54101590507f435caaa30db039b3daad839380c9219a401e0e1e926b8a2066fbd117c00f630381600c54604051610c85929190612364565b60405180910390a150565b600a5481565b600d60019054906101000a900460ff1681565b600d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d5057505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d86906123d5565b60405180910390fd5b600d60029054906101000a900460ff1615610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd69061243d565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055505f5f90505b600180549050811015610ffa5760038181548110610e2057610e1f612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360018381548110610e7757610e76612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110610eb357610eb2612017565b5b905f5260205f2001546040518363ffffffff1660e01b8152600401610ed9929190612118565b6020604051808303815f875af1158015610ef5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f199190612153565b5060018181548110610f2e57610f2d612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e553f6560028381548110610f8557610f84612017565b5b905f5260205f200154306040518363ffffffff1660e01b8152600401610fac92919061245b565b6020604051808303815f875af1158015610fc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec9190612058565b508080600101915050610dff565b50565b6002818154811061100c575f80fd5b905f5260205f20015f915090505481565b600d60019054906101000a900460ff1661106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906124cc565b60405180910390fd5b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508060010160019054906101000a900460ff16156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612534565b60405180910390fd5b5f815f015411611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061259c565b60405180910390fd5b5f61271060055461271061115791906120b0565b600b5461116491906122c6565b61116e9190612334565b600c54101590505f81611182576002611185565b60015b90505f8261119557601054611199565b600f545b90505f836111a957600f546111ad565b6010545b90505f5f90508360028111156111c6576111c5611f07565b5b866001015f9054906101000a900460ff1660028111156111e9576111e8611f07565b5b1480156111f557505f83115b15611225578183875f015461120a9190612334565b61121491906122c6565b865f015461122291906120b0565b90505b60018660010160016101000a81548160ff0219169083151502179055505f8111156112e85760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016112a6929190612118565b6020604051808303815f875af11580156112c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190612153565b505b3373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a8260405161132e9190611db5565b60405180910390a2505050505050565b6003818154811061134d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600c5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90612604565b60405180910390fd5b600d60019054906101000a900460ff16611462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611459906124cc565b60405180910390fd5b600a544210156114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e906122a8565b60405180910390fd5b5f5f90505b6001805490508110156117bf575f600182815481106114ce576114cd612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce96cb77306040518263ffffffff1660e01b815260040161152e9190611e0d565b602060405180830381865afa158015611549573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156d9190612058565b90506001828154811061158357611582612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b460af948230306040518463ffffffff1660e01b81526004016115e7939291906120e3565b6020604051808303815f875af1158015611603573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190612058565b506003828154811061163c5761163b612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600385815481106116b4576116b3612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117149190611e0d565b602060405180830381865afa15801561172f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117539190612058565b6040518363ffffffff1660e01b8152600401611770929190612118565b6020604051808303815f875af115801561178c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b09190612153565b505080806001019150506114ac565b50565b60085481565b600f5481565b600e602052805f5260405f205f91509050805f015490806001015f9054906101000a900460ff16908060010160019054906101000a900460ff16905083565b6001818154811061181c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60105481565b600d5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600d60029054906101000a900460ff1681565b600d5f9054906101000a900460ff1615611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061266c565b60405180910390fd5b5f811161195b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611952906126d4565b60405180910390fd5b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d39061273c565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611a3a9392919061275a565b6020604051808303815f875af1158015611a56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a7a9190612153565b50604051806060016040528082815260200183611a98576002611a9b565b60015b6002811115611aad57611aac611f07565b5b81526020015f1515815250600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015f6101000a81548160ff02191690836002811115611b2757611b26611f07565b5b021790555060408201518160010160016101000a81548160ff0219169083151502179055509050508115611b725780600f5f828254611b6691906120b0565b92505081905550611b8b565b8060105f828254611b8391906120b0565b925050819055505b3373ffffffffffffffffffffffffffffffffffffffff167f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c66808371916683611bcf576002611bd2565b60015b83604051611be192919061278f565b60405180910390a25050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290612604565b60405180910390fd5b600d5f9054906101000a900460ff1615611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190612800565b60405180910390fd5b6202a300600854611cdb91906120b0565b421015611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1490612868565b60405180910390fd5b6001600d5f6101000a81548160ff02191690831515021790555042600981905550600654600954611d4e91906120b0565b600a81905550611d5c6104e4565b600b819055507facc870375c6f27f32904409b6de22b15406d297f25fffc2ebdef807854ee8588600b54604051611d939190611db5565b60405180910390a1565b5f819050919050565b611daf81611d9d565b82525050565b5f602082019050611dc85f830184611da6565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611df782611dce565b9050919050565b611e0781611ded565b82525050565b5f602082019050611e205f830184611dfe565b92915050565b5f8115159050919050565b611e3a81611e26565b82525050565b5f602082019050611e535f830184611e31565b92915050565b5f5ffd5b611e6681611d9d565b8114611e70575f5ffd5b50565b5f81359050611e8181611e5d565b92915050565b5f60208284031215611e9c57611e9b611e59565b5b5f611ea984828501611e73565b91505092915050565b611ebb81611ded565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f60208284031215611ef157611ef0611e59565b5b5f611efe84828501611ec8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110611f4557611f44611f07565b5b50565b5f819050611f5582611f34565b919050565b5f611f6482611f48565b9050919050565b611f7481611f5a565b82525050565b5f606082019050611f8d5f830186611da6565b611f9a6020830185611f6b565b611fa76040830184611e31565b949350505050565b611fb881611e26565b8114611fc2575f5ffd5b50565b5f81359050611fd381611faf565b92915050565b5f5f60408385031215611fef57611fee611e59565b5b5f611ffc85828601611fc5565b925050602061200d85828601611e73565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061205281611e5d565b92915050565b5f6020828403121561206d5761206c611e59565b5b5f61207a84828501612044565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120ba82611d9d565b91506120c583611d9d565b92508282019050808211156120dd576120dc612083565b5b92915050565b5f6060820190506120f65f830186611da6565b6121036020830185611dfe565b6121106040830184611dfe565b949350505050565b5f60408201905061212b5f830185611dfe565b6121386020830184611da6565b9392505050565b5f8151905061214d81611faf565b92915050565b5f6020828403121561216857612167611e59565b5b5f6121758482850161213f565b91505092915050565b5f82825260208201905092915050565b7f62657473206e6f7420636c6f73656400000000000000000000000000000000005f82015250565b5f6121c2600f8361217e565b91506121cd8261218e565b602082019050919050565b5f6020820190508181035f8301526121ef816121b6565b9050919050565b7f616c7265616479207265736f6c766564000000000000000000000000000000005f82015250565b5f61222a60108361217e565b9150612235826121f6565b602082019050919050565b5f6020820190508181035f8301526122578161221e565b9050919050565b7f6e6f742066696e697368656400000000000000000000000000000000000000005f82015250565b5f612292600c8361217e565b915061229d8261225e565b602082019050919050565b5f6020820190508181035f8301526122bf81612286565b9050919050565b5f6122d082611d9d565b91506122db83611d9d565b92508282026122e981611d9d565b91508282048414831517612300576122ff612083565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61233e82611d9d565b915061234983611d9d565b92508261235957612358612307565b5b828204905092915050565b5f6040820190506123775f830185611e31565b6123846020830184611da6565b9392505050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f6123bf600b8361217e565b91506123ca8261238b565b602082019050919050565b5f6020820190508181035f8301526123ec816123b3565b9050919050565b7f616c7265616479206578656375746564000000000000000000000000000000005f82015250565b5f61242760108361217e565b9150612432826123f3565b602082019050919050565b5f6020820190508181035f8301526124548161241b565b9050919050565b5f60408201905061246e5f830185611da6565b61247b6020830184611dfe565b9392505050565b7f6e6f74207265736f6c76656400000000000000000000000000000000000000005f82015250565b5f6124b6600c8361217e565b91506124c182612482565b602082019050919050565b5f6020820190508181035f8301526124e3816124aa565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f61251e600f8361217e565b9150612529826124ea565b602082019050919050565b5f6020820190508181035f83015261254b81612512565b9050919050565b7f6e6f2062657400000000000000000000000000000000000000000000000000005f82015250565b5f61258660068361217e565b915061259182612552565b602082019050919050565b5f6020820190508181035f8301526125b38161257a565b9050919050565b7f6e6f7420747261646572000000000000000000000000000000000000000000005f82015250565b5f6125ee600a8361217e565b91506125f9826125ba565b602082019050919050565b5f6020820190508181035f83015261261b816125e2565b9050919050565b7f6265747320636c6f7365640000000000000000000000000000000000000000005f82015250565b5f612656600b8361217e565b915061266182612622565b602082019050919050565b5f6020820190508181035f8301526126838161264a565b9050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f6126be600b8361217e565b91506126c98261268a565b602082019050919050565b5f6020820190508181035f8301526126eb816126b2565b9050919050565b7f616c7265616479206265740000000000000000000000000000000000000000005f82015250565b5f612726600b8361217e565b9150612731826126f2565b602082019050919050565b5f6020820190508181035f8301526127538161271a565b9050919050565b5f60608201905061276d5f830186611dfe565b61277a6020830185611dfe565b6127876040830184611da6565b949350505050565b5f6040820190506127a25f830185611f6b565b6127af6020830184611da6565b9392505050565b7f616c726561647920636c6f7365640000000000000000000000000000000000005f82015250565b5f6127ea600e8361217e565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b7f62657474696e67207068617365206e6f74206f766572000000000000000000005f82015250565b5f61285260168361217e565b915061285d8261281e565b602082019050919050565b5f6020820190508181035f83015261287f81612846565b905091905056fea264697066735822122050eba432c1815c55211087aa857362f70c9c7d7c39ca6463a54a439eff33a35864736f6c634300081c0033a2646970667358221220c06b5744542005e2cacf011170d6e83171811bf730d53196405a1b5e9d9aef1464736f6c634300081c003300000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806352eb0dec1461004e578063c23af8321461007e578063c3b288641461009c578063e1e3dfeb146100ba575b5f5ffd5b61006860048036038101906100639190610985565b6100ea565b6040516100759190610aad565b60405180910390f35b61008661079d565b6040516100939190610aad565b60405180910390f35b6100a46107c1565b6040516100b19190610b7d565b60405180910390f35b6100d460048036038101906100cf9190610b9d565b61084c565b6040516100e19190610aad565b60405180910390f35b5f878790508a8a905014610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c22565b60405180910390fd5b5f5f90505b868690508110156105305788888281811061015657610155610c40565b5b905060200201358787838181106101705761016f610c40565b5b90506020020160208101906101859190610c97565b73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016101bf929190610cc2565b602060405180830381865afa1580156101da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fe9190610cfd565b1480156102c2575088888281811061021957610218610c40565b5b9050602002013587878381811061023357610232610c40565b5b90506020020160208101906102489190610c97565b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016102809190610aad565b602060405180830381865afa15801561029b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102bf9190610cfd565b10155b610301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f890610d72565b60405180910390fd5b88888281811061031457610313610c40565b5b905060200201358b8b8381811061032e5761032d610c40565b5b90506020020160208101906103439190610c97565b73ffffffffffffffffffffffffffffffffffffffff1663402d267d306040518263ffffffff1660e01b815260040161037b9190610aad565b602060405180830381865afa158015610396573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ba9190610cfd565b10156103fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f290610dda565b60405180910390fd5b86868281811061040e5761040d610c40565b5b90506020020160208101906104239190610c97565b73ffffffffffffffffffffffffffffffffffffffff168b8b8381811061044c5761044b610c40565b5b90506020020160208101906104619190610c97565b73ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cd9190610e0c565b73ffffffffffffffffffffffffffffffffffffffff1614610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a90610e81565b60405180910390fd5b8080600101915050610138565b505f338b8b8b8b8b8b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8c8c3060405161056a90610887565b61057f9c9b9a99989796959493929190610fac565b604051809103905ff080158015610598573d5f5f3e3d5ffd5b5090505f5f90505b87879050811015610676578787828181106105be576105bd610c40565b5b90506020020160208101906105d39190610c97565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33848d8d8681811061060357610602610c40565b5b905060200201356040518463ffffffff1660e01b815260040161062893929190611052565b6020604051808303815f875af1158015610644573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066891906110bc565b5080806001019150506105a0565b508073ffffffffffffffffffffffffffffffffffffffff1663446471856040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156106bc575f5ffd5b505af11580156106ce573d5f5f3e3d5ffd5b50505050600181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f549da332e0b2f278bd26f4c3f269be2a23c1b578ad08147c6889f6dbb961da2c828d8d8d8d8d8d60405161078497969594939291906110e7565b60405180910390a2809150509998505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180548060200260200160405190810160405280929190818152602001828054801561084257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116107f9575b5050505050905090565b6001818154811061085b575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ef68061114683390190565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126108bd576108bc61089c565b5b8235905067ffffffffffffffff8111156108da576108d96108a0565b5b6020830191508360208202830111156108f6576108f56108a4565b5b9250929050565b5f5f83601f8401126109125761091161089c565b5b8235905067ffffffffffffffff81111561092f5761092e6108a0565b5b60208301915083602082028301111561094b5761094a6108a4565b5b9250929050565b5f819050919050565b61096481610952565b811461096e575f5ffd5b50565b5f8135905061097f8161095b565b92915050565b5f5f5f5f5f5f5f5f5f60c08a8c0312156109a2576109a1610894565b5b5f8a013567ffffffffffffffff8111156109bf576109be610898565b5b6109cb8c828d016108a8565b995099505060208a013567ffffffffffffffff8111156109ee576109ed610898565b5b6109fa8c828d016108fd565b975097505060408a013567ffffffffffffffff811115610a1d57610a1c610898565b5b610a298c828d016108a8565b95509550506060610a3c8c828d01610971565b9350506080610a4d8c828d01610971565b92505060a0610a5e8c828d01610971565b9150509295985092959850929598565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a9782610a6e565b9050919050565b610aa781610a8d565b82525050565b5f602082019050610ac05f830184610a9e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610af881610a8d565b82525050565b5f610b098383610aef565b60208301905092915050565b5f602082019050919050565b5f610b2b82610ac6565b610b358185610ad0565b9350610b4083610ae0565b805f5b83811015610b70578151610b578882610afe565b9750610b6283610b15565b925050600181019050610b43565b5085935050505092915050565b5f6020820190508181035f830152610b958184610b21565b905092915050565b5f60208284031215610bb257610bb1610894565b5b5f610bbf84828501610971565b91505092915050565b5f82825260208201905092915050565b7f7661756c74732f616d6f756e7473206d69736d617463680000000000000000005f82015250565b5f610c0c601783610bc8565b9150610c1782610bd8565b602082019050919050565b5f6020820190508181035f830152610c3981610c00565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610c7681610a8d565b8114610c80575f5ffd5b50565b5f81359050610c9181610c6d565b92915050565b5f60208284031215610cac57610cab610894565b5b5f610cb984828501610c83565b91505092915050565b5f604082019050610cd55f830185610a9e565b610ce26020830184610a9e565b9392505050565b5f81519050610cf78161095b565b92915050565b5f60208284031215610d1257610d11610894565b5b5f610d1f84828501610ce9565b91505092915050565b7f546f6b656e20616d6f756e7420696e76616c69640000000000000000000000005f82015250565b5f610d5c601483610bc8565b9150610d6782610d28565b602082019050919050565b5f6020820190508181035f830152610d8981610d50565b9050919050565b7f5661756c74206d6178206465706f7369742062656c6f7720616d6f756e7400005f82015250565b5f610dc4601e83610bc8565b9150610dcf82610d90565b602082019050919050565b5f6020820190508181035f830152610df181610db8565b9050919050565b5f81519050610e0681610c6d565b92915050565b5f60208284031215610e2157610e20610894565b5b5f610e2e84828501610df8565b91505092915050565b7f5661756c74206173736574206d69736d617463680000000000000000000000005f82015250565b5f610e6b601483610bc8565b9150610e7682610e37565b602082019050919050565b5f6020820190508181035f830152610e9881610e5f565b9050919050565b5f819050919050565b5f610eb66020840184610c83565b905092915050565b5f602082019050919050565b5f610ed58385610ad0565b9350610ee082610e9f565b805f5b85811015610f1857610ef58284610ea8565b610eff8882610afe565b9750610f0a83610ebe565b925050600181019050610ee3565b5085925050509392505050565b5f82825260208201905092915050565b5f5ffd5b82818337505050565b5f610f4d8385610f25565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610f8057610f7f610f35565b5b602083029250610f91838584610f39565b82840190509392505050565b610fa681610952565b82525050565b5f61012082019050610fc05f83018f610a9e565b8181036020830152610fd3818d8f610eca565b90508181036040830152610fe8818b8d610f42565b90508181036060830152610ffd81898b610eca565b905061100c6080830188610a9e565b61101960a0830187610f9d565b61102660c0830186610f9d565b61103360e0830185610f9d565b611041610100830184610a9e565b9d9c50505050505050505050505050565b5f6060820190506110655f830186610a9e565b6110726020830185610a9e565b61107f6040830184610f9d565b949350505050565b5f8115159050919050565b61109b81611087565b81146110a5575f5ffd5b50565b5f815190506110b681611092565b92915050565b5f602082840312156110d1576110d0610894565b5b5f6110de848285016110a8565b91505092915050565b5f6080820190506110fa5f83018a610a9e565b818103602083015261110d81888a610eca565b90508181036040830152611122818688610f42565b90508181036060830152611137818486610eca565b90509897505050505050505056fe608060405234801561000f575f5ffd5b50604051612ef6380380612ef683398181016040528101906100319190610515565b885f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550876001908051906020019061008692919061017a565b50866002908051906020019061009d929190610201565b5085600390805190602001906100b492919061017a565b508460045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360058190555082600681905550816007819055504260088190555080600d60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d60026101000a81548160ff02191690831515021790555050505050505050505061062d565b828054828255905f5260205f209081019282156101f0579160200282015b828111156101ef578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610198565b5b5090506101fd919061024c565b5090565b828054828255905f5260205f2090810192821561023b579160200282015b8281111561023a57825182559160200191906001019061021f565b5b509050610248919061024c565b5090565b5b80821115610263575f815f90555060010161024d565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102a182610278565b9050919050565b6102b181610297565b81146102bb575f5ffd5b50565b5f815190506102cc816102a8565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61031c826102d6565b810181811067ffffffffffffffff8211171561033b5761033a6102e6565b5b80604052505050565b5f61034d610267565b90506103598282610313565b919050565b5f67ffffffffffffffff821115610378576103776102e6565b5b602082029050602081019050919050565b5f5ffd5b5f61039f61039a8461035e565b610344565b905080838252602082019050602084028301858111156103c2576103c1610389565b5b835b818110156103eb57806103d788826102be565b8452602084019350506020810190506103c4565b5050509392505050565b5f82601f830112610409576104086102d2565b5b815161041984826020860161038d565b91505092915050565b5f67ffffffffffffffff82111561043c5761043b6102e6565b5b602082029050602081019050919050565b5f819050919050565b61045f8161044d565b8114610469575f5ffd5b50565b5f8151905061047a81610456565b92915050565b5f61049261048d84610422565b610344565b905080838252602082019050602084028301858111156104b5576104b4610389565b5b835b818110156104de57806104ca888261046c565b8452602084019350506020810190506104b7565b5050509392505050565b5f82601f8301126104fc576104fb6102d2565b5b815161050c848260208601610480565b91505092915050565b5f5f5f5f5f5f5f5f5f6101208a8c03121561053357610532610270565b5b5f6105408c828d016102be565b99505060208a015167ffffffffffffffff81111561056157610560610274565b5b61056d8c828d016103f5565b98505060408a015167ffffffffffffffff81111561058e5761058d610274565b5b61059a8c828d016104e8565b97505060608a015167ffffffffffffffff8111156105bb576105ba610274565b5b6105c78c828d016103f5565b96505060806105d88c828d016102be565b95505060a06105e98c828d0161046c565b94505060c06105fa8c828d0161046c565b93505060e061060b8c828d0161046c565b92505061010061061d8c828d016102be565b9150509295985092959850929598565b6128bc8061063a5f395ff3fe608060405234801561000f575f5ffd5b50600436106101c2575f3560e01c80635f83129e116100f7578063bfb44bce11610095578063e14891911161006f578063e14891911461047c578063e8e0e37c1461049a578063f7f74b22146104b8578063f8e6fe13146104d4576101c2565b8063bfb44bce14610422578063c23af83214610440578063c45a01551461045e576101c2565b806389a78f1a116100d157806389a78f1a146103845780638c64ea4a146103b65780639a4977d5146103e6578063af00888314610404576101c2565b80635f83129e1461033e57806378e979251461034857806388ba8dd614610366576101c2565b80633f6fa655116101645780634e71d92d1161013e5780634e71d92d146102c85780634f64b2be146102d257806356377d16146103025780635c206f4114610320576101c2565b80633f6fa65514610270578063446471851461028e57806345f0a44f14610298576101c2565b80631758078b116101a05780631758078b1461022057806324600fc31461023e5780632bf45008146102485780633197cbb614610252576101c2565b80630d668087146101c65780630f76c114146101e45780630fb5a6b414610202575b5f5ffd5b6101ce6104de565b6040516101db9190611db5565b60405180910390f35b6101ec6104e4565b6040516101f99190611db5565b60405180910390f35b61020a61067f565b6040516102179190611db5565b60405180910390f35b610228610685565b6040516102359190611e0d565b60405180910390f35b6102466106a9565b005b610250610b14565b005b61025a610c90565b6040516102679190611db5565b60405180910390f35b610278610c96565b6040516102859190611e40565b60405180910390f35b610296610ca9565b005b6102b260048036038101906102ad9190611e87565b610ffd565b6040516102bf9190611db5565b60405180910390f35b6102d061101d565b005b6102ec60048036038101906102e79190611e87565b61133e565b6040516102f99190611e0d565b60405180910390f35b61030a611379565b6040516103179190611db5565b60405180910390f35b61032861137f565b6040516103359190611db5565b60405180910390f35b610346611385565b005b6103506117c2565b60405161035d9190611db5565b60405180910390f35b61036e6117c8565b60405161037b9190611db5565b60405180910390f35b61039e60048036038101906103999190611edc565b6117ce565b6040516103ad93929190611f7a565b60405180910390f35b6103d060048036038101906103cb9190611e87565b61180d565b6040516103dd9190611e0d565b60405180910390f35b6103ee611848565b6040516103fb9190611db5565b60405180910390f35b61040c61184e565b6040516104199190611db5565b60405180910390f35b61042a611854565b6040516104379190611e40565b60405180910390f35b610448611866565b6040516104559190611e0d565b60405180910390f35b61046661188b565b6040516104739190611e0d565b60405180910390f35b6104846118b1565b6040516104919190611db5565b60405180910390f35b6104a26118b7565b6040516104af9190611e40565b60405180910390f35b6104d260048036038101906104cd9190611fd9565b6118ca565b005b6104dc611bed565b005b60095481565b5f5f5f90505b60018054905081101561067b575f6001828154811061050c5761050b612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161056c9190611e0d565b602060405180830381865afa158015610587573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ab9190612058565b9050600182815481106105c1576105c0612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cdad506826040518263ffffffff1660e01b81526004016106219190611db5565b602060405180830381865afa15801561063c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106609190612058565b8361066b91906120b0565b92505080806001019150506104ea565b5090565b60065481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f90505b6001805490508110156109bc57600181815481106106cf576106ce612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b460af946001838154811061072657610725612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce96cb77306040518263ffffffff1660e01b81526004016107869190611e0d565b602060405180830381865afa1580156107a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c59190612058565b30306040518463ffffffff1660e01b81526004016107e5939291906120e3565b6020604051808303815f875af1158015610801573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108259190612058565b506003818154811061083a57610839612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600384815481106108b2576108b1612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109129190611e0d565b602060405180830381865afa15801561092d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190612058565b6040518363ffffffff1660e01b815260040161096e929190612118565b6020604051808303815f875af115801561098a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190612153565b5080806001019150506106ae565b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a759190611e0d565b602060405180830381865afa158015610a90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab49190612058565b6040518363ffffffff1660e01b8152600401610ad1929190612118565b6020604051808303815f875af1158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612153565b50565b600d5f9054906101000a900460ff16610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906121d8565b60405180910390fd5b600d60019054906101000a900460ff1615610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990612240565b60405180910390fd5b600a54421015610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906122a8565b60405180910390fd5b610bff6104e4565b600c819055506001600d60016101000a81548160ff0219169083151502179055505f612710600554612710610c3491906120b0565b600b54610c4191906122c6565b610c4b9190612334565b600c54101590507f435caaa30db039b3daad839380c9219a401e0e1e926b8a2066fbd117c00f630381600c54604051610c85929190612364565b60405180910390a150565b600a5481565b600d60019054906101000a900460ff1681565b600d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d5057505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d86906123d5565b60405180910390fd5b600d60029054906101000a900460ff1615610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd69061243d565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055505f5f90505b600180549050811015610ffa5760038181548110610e2057610e1f612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360018381548110610e7757610e76612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110610eb357610eb2612017565b5b905f5260205f2001546040518363ffffffff1660e01b8152600401610ed9929190612118565b6020604051808303815f875af1158015610ef5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f199190612153565b5060018181548110610f2e57610f2d612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e553f6560028381548110610f8557610f84612017565b5b905f5260205f200154306040518363ffffffff1660e01b8152600401610fac92919061245b565b6020604051808303815f875af1158015610fc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec9190612058565b508080600101915050610dff565b50565b6002818154811061100c575f80fd5b905f5260205f20015f915090505481565b600d60019054906101000a900460ff1661106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906124cc565b60405180910390fd5b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508060010160019054906101000a900460ff16156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612534565b60405180910390fd5b5f815f015411611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061259c565b60405180910390fd5b5f61271060055461271061115791906120b0565b600b5461116491906122c6565b61116e9190612334565b600c54101590505f81611182576002611185565b60015b90505f8261119557601054611199565b600f545b90505f836111a957600f546111ad565b6010545b90505f5f90508360028111156111c6576111c5611f07565b5b866001015f9054906101000a900460ff1660028111156111e9576111e8611f07565b5b1480156111f557505f83115b15611225578183875f015461120a9190612334565b61121491906122c6565b865f015461122291906120b0565b90505b60018660010160016101000a81548160ff0219169083151502179055505f8111156112e85760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016112a6929190612118565b6020604051808303815f875af11580156112c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190612153565b505b3373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a8260405161132e9190611db5565b60405180910390a2505050505050565b6003818154811061134d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600c5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90612604565b60405180910390fd5b600d60019054906101000a900460ff16611462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611459906124cc565b60405180910390fd5b600a544210156114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e906122a8565b60405180910390fd5b5f5f90505b6001805490508110156117bf575f600182815481106114ce576114cd612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce96cb77306040518263ffffffff1660e01b815260040161152e9190611e0d565b602060405180830381865afa158015611549573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156d9190612058565b90506001828154811061158357611582612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b460af948230306040518463ffffffff1660e01b81526004016115e7939291906120e3565b6020604051808303815f875af1158015611603573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190612058565b506003828154811061163c5761163b612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600385815481106116b4576116b3612017565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117149190611e0d565b602060405180830381865afa15801561172f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117539190612058565b6040518363ffffffff1660e01b8152600401611770929190612118565b6020604051808303815f875af115801561178c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b09190612153565b505080806001019150506114ac565b50565b60085481565b600f5481565b600e602052805f5260405f205f91509050805f015490806001015f9054906101000a900460ff16908060010160019054906101000a900460ff16905083565b6001818154811061181c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60105481565b600d5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600d60029054906101000a900460ff1681565b600d5f9054906101000a900460ff1615611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061266c565b60405180910390fd5b5f811161195b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611952906126d4565b60405180910390fd5b5f600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d39061273c565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611a3a9392919061275a565b6020604051808303815f875af1158015611a56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a7a9190612153565b50604051806060016040528082815260200183611a98576002611a9b565b60015b6002811115611aad57611aac611f07565b5b81526020015f1515815250600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015f6101000a81548160ff02191690836002811115611b2757611b26611f07565b5b021790555060408201518160010160016101000a81548160ff0219169083151502179055509050508115611b725780600f5f828254611b6691906120b0565b92505081905550611b8b565b8060105f828254611b8391906120b0565b925050819055505b3373ffffffffffffffffffffffffffffffffffffffff167f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c66808371916683611bcf576002611bd2565b60015b83604051611be192919061278f565b60405180910390a25050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290612604565b60405180910390fd5b600d5f9054906101000a900460ff1615611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190612800565b60405180910390fd5b6202a300600854611cdb91906120b0565b421015611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1490612868565b60405180910390fd5b6001600d5f6101000a81548160ff02191690831515021790555042600981905550600654600954611d4e91906120b0565b600a81905550611d5c6104e4565b600b819055507facc870375c6f27f32904409b6de22b15406d297f25fffc2ebdef807854ee8588600b54604051611d939190611db5565b60405180910390a1565b5f819050919050565b611daf81611d9d565b82525050565b5f602082019050611dc85f830184611da6565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611df782611dce565b9050919050565b611e0781611ded565b82525050565b5f602082019050611e205f830184611dfe565b92915050565b5f8115159050919050565b611e3a81611e26565b82525050565b5f602082019050611e535f830184611e31565b92915050565b5f5ffd5b611e6681611d9d565b8114611e70575f5ffd5b50565b5f81359050611e8181611e5d565b92915050565b5f60208284031215611e9c57611e9b611e59565b5b5f611ea984828501611e73565b91505092915050565b611ebb81611ded565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f60208284031215611ef157611ef0611e59565b5b5f611efe84828501611ec8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110611f4557611f44611f07565b5b50565b5f819050611f5582611f34565b919050565b5f611f6482611f48565b9050919050565b611f7481611f5a565b82525050565b5f606082019050611f8d5f830186611da6565b611f9a6020830185611f6b565b611fa76040830184611e31565b949350505050565b611fb881611e26565b8114611fc2575f5ffd5b50565b5f81359050611fd381611faf565b92915050565b5f5f60408385031215611fef57611fee611e59565b5b5f611ffc85828601611fc5565b925050602061200d85828601611e73565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061205281611e5d565b92915050565b5f6020828403121561206d5761206c611e59565b5b5f61207a84828501612044565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120ba82611d9d565b91506120c583611d9d565b92508282019050808211156120dd576120dc612083565b5b92915050565b5f6060820190506120f65f830186611da6565b6121036020830185611dfe565b6121106040830184611dfe565b949350505050565b5f60408201905061212b5f830185611dfe565b6121386020830184611da6565b9392505050565b5f8151905061214d81611faf565b92915050565b5f6020828403121561216857612167611e59565b5b5f6121758482850161213f565b91505092915050565b5f82825260208201905092915050565b7f62657473206e6f7420636c6f73656400000000000000000000000000000000005f82015250565b5f6121c2600f8361217e565b91506121cd8261218e565b602082019050919050565b5f6020820190508181035f8301526121ef816121b6565b9050919050565b7f616c7265616479207265736f6c766564000000000000000000000000000000005f82015250565b5f61222a60108361217e565b9150612235826121f6565b602082019050919050565b5f6020820190508181035f8301526122578161221e565b9050919050565b7f6e6f742066696e697368656400000000000000000000000000000000000000005f82015250565b5f612292600c8361217e565b915061229d8261225e565b602082019050919050565b5f6020820190508181035f8301526122bf81612286565b9050919050565b5f6122d082611d9d565b91506122db83611d9d565b92508282026122e981611d9d565b91508282048414831517612300576122ff612083565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61233e82611d9d565b915061234983611d9d565b92508261235957612358612307565b5b828204905092915050565b5f6040820190506123775f830185611e31565b6123846020830184611da6565b9392505050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f6123bf600b8361217e565b91506123ca8261238b565b602082019050919050565b5f6020820190508181035f8301526123ec816123b3565b9050919050565b7f616c7265616479206578656375746564000000000000000000000000000000005f82015250565b5f61242760108361217e565b9150612432826123f3565b602082019050919050565b5f6020820190508181035f8301526124548161241b565b9050919050565b5f60408201905061246e5f830185611da6565b61247b6020830184611dfe565b9392505050565b7f6e6f74207265736f6c76656400000000000000000000000000000000000000005f82015250565b5f6124b6600c8361217e565b91506124c182612482565b602082019050919050565b5f6020820190508181035f8301526124e3816124aa565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f61251e600f8361217e565b9150612529826124ea565b602082019050919050565b5f6020820190508181035f83015261254b81612512565b9050919050565b7f6e6f2062657400000000000000000000000000000000000000000000000000005f82015250565b5f61258660068361217e565b915061259182612552565b602082019050919050565b5f6020820190508181035f8301526125b38161257a565b9050919050565b7f6e6f7420747261646572000000000000000000000000000000000000000000005f82015250565b5f6125ee600a8361217e565b91506125f9826125ba565b602082019050919050565b5f6020820190508181035f83015261261b816125e2565b9050919050565b7f6265747320636c6f7365640000000000000000000000000000000000000000005f82015250565b5f612656600b8361217e565b915061266182612622565b602082019050919050565b5f6020820190508181035f8301526126838161264a565b9050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f6126be600b8361217e565b91506126c98261268a565b602082019050919050565b5f6020820190508181035f8301526126eb816126b2565b9050919050565b7f616c7265616479206265740000000000000000000000000000000000000000005f82015250565b5f612726600b8361217e565b9150612731826126f2565b602082019050919050565b5f6020820190508181035f8301526127538161271a565b9050919050565b5f60608201905061276d5f830186611dfe565b61277a6020830185611dfe565b6127876040830184611da6565b949350505050565b5f6040820190506127a25f830185611f6b565b6127af6020830184611da6565b9392505050565b7f616c726561647920636c6f7365640000000000000000000000000000000000005f82015250565b5f6127ea600e8361217e565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b7f62657474696e67207068617365206e6f74206f766572000000000000000000005f82015250565b5f61285260168361217e565b915061285d8261281e565b602082019050919050565b5f6020820190508181035f83015261287f81612846565b905091905056fea264697066735822122050eba432c1815c55211087aa857362f70c9c7d7c39ca6463a54a439eff33a35864736f6c634300081c0033a2646970667358221220c06b5744542005e2cacf011170d6e83171811bf730d53196405a1b5e9d9aef1464736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a
-----Decoded View---------------
Arg [0] : _ausd (address): 0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a

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.