Overview
POL Balance
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TokenSwapSpot
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2024-12-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TokenSwapSpot { // Owner of the contract address public owner; // Oracle address to call for order processing address public oracle; ISwapRouter swapRouter; address public WETH; IFeeTracker public feeTracker; mapping (address => address) public userIntroducer; struct FeeDetails { uint16 percentX10000; uint16 resellerCommissionPercentX10000; } mapping (uint8=>FeeDetails) public feeDetails; uint public oracleFee = 0.02 ether; // Event for order placed event OrderPlaced(address indexed user, address tokenIn, address tokenOut, uint256 limitPrice, uint256 openPrice, uint256 amountIn); // Event for swap triggered via oracle event OrderTriggered(address indexed user, address tokenIn, address tokenOut, uint256 limitPrice, uint256 amountIn); // Event for order cancellation event OrderCancelled(address indexed user, address tokenIn, address tokenOut, uint256 limitPrice, uint256 amountIn); // Struct representing a limit order struct Order { address user; uint256 openPrice; uint256 pairPriceId; uint256 amountIn; // tokenInAmount uint8 status; // 0=>open / 1=>withdrawn / 2=>cancelled uint256 createdAt; uint256 updatedAt; } uint256 public lastOrderId; mapping(uint256 => Order) public orders; mapping (address => uint[]) userOrderIds; mapping (address =>uint) public userOrderCount; struct PairPrice{ address tokenIn; address tokenOut; uint256 limitPrice; uint256 totalAmountIn; uint256 amountOut; // if 0 its open, if more it's done uint256 totalWithdrawn; } uint256 public lastPairId; mapping(uint256 => PairPrice) public pairPrices; mapping(address => mapping(address => mapping(uint=>uint))) pairPriceIds; // Modifier to restrict functions to the contract owner modifier onlyOwner() { require(msg.sender == owner, "Not the contract owner"); _; } // Modifier to restrict functions to the oracle modifier onlyOracle() { require(msg.sender == oracle, "Not the oracle"); _; } constructor(address _swapRouter,address _feeTracker) { // swaprouter Ethereum: 0xE592427A0AEce92De3Edee1F18E0157C05861564 // swapRouter BNB: 0x8ddA5A831C1BaFFc646C8D0351A59709367D7865 // swaprourer Arbitrum: 0xE592427A0AEce92De3Edee1F18E0157C05861564 // swapRouter Polygon: 0xE592427A0AEce92De3Edee1F18E0157C05861564 // swapRouter TRX: TQAvWQpT9H916GckwWDJNhYZvQMkuRL7PN // feeTracker Ethereum: 0x0000000000000000000000000000000000000000 // feeTracker BNB: 0x0000000000000000000000000000000000000000 // feetracker Arbitrum: 0xDDa01a26bFD823fc746607747Ae9BDa760e0983b // feetracker Polygon: 0x9f0022C88314DF8686355CE3e87acc269296C20B // feeTracker Trx: 0x0000000000000000000000000000000000000000 owner = msg.sender; oracle = msg.sender; swapRouter = ISwapRouter(_swapRouter); WETH = swapRouter.WETH9(); feeTracker = IFeeTracker(_feeTracker); setFeeDetails(0,250,0); setFeeDetails(1,150,200); setFeeDetails(2,100,500); setFeeDetails(3,50,1000); } function setFeeDetails(uint8 _vipId,uint16 _percentX10000,uint16 _resellerCommissionPercentX10000) public{ feeDetails[_vipId].percentX10000 = _percentX10000; feeDetails[_vipId].resellerCommissionPercentX10000 = _resellerCommissionPercentX10000; } // Function to place a limit order function placeOrder(address tokenIn, address tokenOut, uint256 limitPrice, uint256 openPrice, uint256 amountIn) external payable { require(msg.value >= oracleFee,"Not enough oracle fee"); require(limitPrice >0,"limit price must be greater than 0"); require(openPrice >0,"open price must be greater than 0"); require(amountIn >0,"amountIn must be greater than 0"); address payable reseller = payable(feeTracker.getUserIntroducer(msg.sender)); if(userIntroducer[msg.sender]==address(0) && reseller!=address(0)) userIntroducer[msg.sender] = reseller; if(tokenIn==address(0)) tokenIn=WETH; if(tokenOut==address(0)) tokenOut=WETH; if (msg.value > oracleFee && tokenIn==address(WETH)) { tokenIn = WETH; amountIn = msg.value - oracleFee; IWETH wethContract = IWETH(WETH); wethContract.deposit{value: amountIn}(); //transfer oracle fee to oracle address (bool sent, ) = oracle.call{value: oracleFee}(""); require(sent, "Failed to send oracle fee"); }else{ require(amountIn > 0, "Must specify an amount to swap"); //transfer token to contract IERC20 token = IERC20(tokenIn); token.transferFrom(msg.sender, address(this), amountIn); //transfer oracle fee to oracle address if(msg.value>0){ (bool sent, ) = oracle.call{value: msg.value}(""); require(sent, "Failed to send oracle fee"); } } uint256 pairPriceId = getPairPriceId(tokenIn,tokenOut,limitPrice); pairPrices[pairPriceId].totalAmountIn += amountIn; //approve tokenIn IERC20 erc20 = IERC20(tokenIn); if(erc20.allowance(address(this), address(swapRouter))<amountIn) erc20.approve(address(swapRouter),type(uint256).max); //place order Order memory newOrder = Order({ user: msg.sender, openPrice: openPrice, pairPriceId:pairPriceId, amountIn: amountIn, status:0,//pending createdAt: block.timestamp, updatedAt: 0 }); lastOrderId++; orders[lastOrderId] = newOrder; userOrderIds[msg.sender].push(lastOrderId); userOrderCount[msg.sender]++; emit OrderPlaced(msg.sender, tokenIn, tokenOut, limitPrice, openPrice, amountIn); } // Function to cancel an order function cancelOrder(uint256 orderIndex) external { //validate inputs require(orderIndex<=userOrderCount[msg.sender],"Order id is not valid"); uint256 orderId = userOrderIds[msg.sender][orderIndex]; require(orders[orderId].status==0 && orders[orderId].amountIn>0,"Order is not open"); //update order status orders[orderId].status=2; orders[orderId].updatedAt=block.timestamp; //rollback the amounts uint256 pairPriceId = orders[orderId].pairPriceId; if(pairPrices[pairPriceId].tokenIn==WETH) { IWETH(WETH).withdraw(orders[orderId].amountIn); (bool success, ) = msg.sender.call{value: orders[orderId].amountIn}(""); require(success, "Failed to send ETH"); }else IERC20(pairPrices[pairPriceId].tokenIn).transfer(msg.sender, orders[orderId].amountIn); pairPrices[pairPriceId].totalAmountIn -= orders[orderId].amountIn; } function withdrawOrder(uint256 orderIndex) public{ //validate inputs require(orderIndex<=userOrderCount[msg.sender],"Order id is not valid"); uint256 orderId = userOrderIds[msg.sender][orderIndex]; require(orders[orderId].status==0 && orders[orderId].amountIn>0,"Order is not open"); //update order status orders[orderId].status=1; //withdrawn orders[orderId].updatedAt=block.timestamp; //pay the swapped amounts uint256 pairPriceId = orders[orderId].pairPriceId; require(pairPrices[pairPriceId].amountOut>0,"Order is not placed yet."); uint256 totalAmountIn = pairPrices[pairPriceId].totalAmountIn; uint256 totalAmountOut = pairPrices[pairPriceId].amountOut; uint256 myAmountIn = orders[orderId].amountIn; uint256 ratio = myAmountIn * 10**18 / totalAmountIn; uint256 myAmountOut = totalAmountOut * ratio / 10**18; uint8 userVipId = feeTracker.getUserVipStatus(msg.sender); uint16 feePercent = feeDetails[userVipId].percentX10000; uint feeAmount = (myAmountOut * feePercent) / 10000; uint amountOutAfterFee = myAmountOut - feeAmount; uint commissionAmount; if(feeAmount>0 && userIntroducer[msg.sender]!=address(0)){ uint8 resellerVipId = feeTracker.getUserVipStatus(userIntroducer[msg.sender]); uint16 resellerCommissionPercent = feeDetails[resellerVipId].resellerCommissionPercentX10000; commissionAmount = (feeAmount * resellerCommissionPercent) / 10000; } if(pairPrices[pairPriceId].tokenOut==WETH) { bool success; //pay withdrawable eth to user (success,) = msg.sender.call{value: amountOutAfterFee}(""); if(commissionAmount>0 && userIntroducer[msg.sender]!=address(0)) //pay introducer commission (success,) = userIntroducer[msg.sender].call{value: commissionAmount}(""); //pay developer share (success,) = owner.call{value: feeAmount-commissionAmount}(""); }else{ //pay withdrawable eth to user IERC20(pairPrices[pairPriceId].tokenOut).transfer(msg.sender, amountOutAfterFee); if(commissionAmount>0 && userIntroducer[msg.sender]!=address(0)) //pay introducer commission IERC20(pairPrices[pairPriceId].tokenOut).transfer(userIntroducer[msg.sender], commissionAmount); //pay developer share IERC20(pairPrices[pairPriceId].tokenOut).transfer(owner, feeAmount-commissionAmount); } pairPrices[pairPriceId].totalWithdrawn += amountOutAfterFee; } // Function to process orders in steps (batch processing) function processPairPrice(uint256 pairPriceId) external onlyOracle { //TODO: //get price and check if it is ok //?????????????????? //place swap order and get received token amount uint256 firstBalance; if(pairPrices[pairPriceId].tokenOut == WETH) firstBalance = address(this).balance; else firstBalance = IERC20(pairPrices[pairPriceId].tokenOut).balanceOf(address(this)); address tokenIn = pairPrices[pairPriceId].tokenIn; address tokenOut = pairPrices[pairPriceId].tokenOut; uint amountIn = pairPrices[pairPriceId].totalAmountIn; uint amountInAfterFee = amountIn;//add fee calculation if(IERC20(tokenIn).allowance(address(this),address(swapRouter)) < amountInAfterFee) IERC20(tokenIn).approve(address(swapRouter), 2**255); ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({ tokenIn: tokenIn, tokenOut: tokenOut, fee: 3000, recipient: address(this), deadline: block.timestamp + 15 minutes, amountIn: amountInAfterFee, amountOutMinimum: 0, sqrtPriceLimitX96: 0 //no limit }); uint amountOut = swapRouter.exactInputSingle(params); // If swapping to ETH, unwrap WETH to ETH and transfer to the recipient if (tokenOut==WETH) { IWETH(WETH).withdraw(amountOut); } uint256 newBalance; if(pairPrices[pairPriceId].tokenOut == WETH) newBalance = address(this).balance; else newBalance = IERC20(pairPrices[pairPriceId].tokenOut).balanceOf(address(this)); uint256 income = newBalance - firstBalance; require(income>0,"Failed to process swap"); //disable old pairPrice and update income pairPrices[pairPriceId].amountOut = income; pairPriceIds[pairPrices[pairPriceId].tokenIn][pairPrices[pairPriceId].tokenOut][pairPrices[pairPriceId].limitPrice]=0; } // Function to get all active orders for a user with pagination struct TmpOrder { uint userOrderIndex; address user; uint256 openPrice; uint256 pairPriceId; uint256 amountIn; // tokenInAmount uint8 status; // 0=>open / 1=>withdrawn / 2=>cancelled uint256 createdAt; uint256 updatedAt; address tokenIn; address tokenOut; uint256 limitPrice; uint256 totalAmountIn; uint256 amountOut; // if 0 its open, if more it's done uint256 totalWithdrawn; } function getUserOrdersPaginated(address user,uint256 fromId, uint256 toId) external view returns (TmpOrder[] memory) { if (toId > userOrderIds[user].length) { toId = userOrderIds[user].length; } require(fromId <= toId, "Invalid pagination range"); uint256 size = toId - fromId; TmpOrder[] memory paginatedOrders = new TmpOrder[](size); for (uint256 i = 0; i < size; i++) { uint256 orderIndex = userOrderIds[user][fromId + i]; uint256 pairPriceId = orders[orderIndex].pairPriceId; TmpOrder memory _tmpOrder = TmpOrder({ userOrderIndex: fromId + i, user: orders[orderIndex].user, openPrice: orders[orderIndex].openPrice, pairPriceId: orders[orderIndex].pairPriceId, amountIn: orders[orderIndex].amountIn, // tokenInAmount status: orders[orderIndex].status, // 0=>open / 1=>withdrawn / 2=>cancelled createdAt: orders[orderIndex].createdAt, updatedAt: orders[orderIndex].updatedAt, tokenIn: pairPrices[pairPriceId].tokenIn, tokenOut: pairPrices[pairPriceId].tokenOut, limitPrice: pairPrices[pairPriceId].limitPrice, totalAmountIn: pairPrices[pairPriceId].totalAmountIn, amountOut: pairPrices[pairPriceId].amountOut, totalWithdrawn: pairPrices[pairPriceId].totalWithdrawn }); // Store the struct in the paginatedOrders array paginatedOrders[i] = _tmpOrder; } return paginatedOrders; } // Function to set a new TokenSwap contract address function setSwapRouter(address _swapRouter) external onlyOwner { // swapRouter = _swapRouter; swapRouter = ISwapRouter(_swapRouter); WETH = swapRouter.WETH9(); } // Function to set the oracle address function setOracle(address _oracle) external onlyOwner { oracle = _oracle; } // Function to set the oracle address function setOracleFee(uint _oracleFee) external onlyOwner { oracleFee = _oracleFee; } // Helper function to round the limitPrice to a smaller step using base 2 function roundPriceBase2(uint256 limitPrice) private pure returns (uint256) { uint256 magnitude = 1 << (log2(limitPrice) - 8); // Shift to create smaller rounding steps uint256 roundedPrice = (limitPrice / magnitude) * magnitude; return roundedPrice; } // Efficient log2 implementation (based on bit-shifting) function log2(uint256 x) private pure returns (uint256) { uint256 result = 0; if (x >= 2**128) { x >>= 128; result += 128; } if (x >= 2**64) { x >>= 64; result += 64; } if (x >= 2**32) { x >>= 32; result += 32; } if (x >= 2**16) { x >>= 16; result += 16; } if (x >= 2**8) { x >>= 8; result += 8; } if (x >= 2**4) { x >>= 4; result += 4; } if (x >= 2**2) { x >>= 2; result += 2; } if (x >= 2**1) { result += 1; } return result; } function getPairPriceId(address tokenIn,address tokenOut,uint256 limitPrice) private returns(uint){ // Round the limitPrice to the nearest 0.1% limitPrice = roundPriceBase2(limitPrice); if(pairPriceIds[tokenIn][tokenOut][limitPrice]>0) return pairPriceIds[tokenIn][tokenOut][limitPrice]; PairPrice memory _pairPrice = PairPrice({ tokenIn:tokenIn, tokenOut:tokenOut, limitPrice:limitPrice, totalAmountIn:0, amountOut:0, // if 0 its open, if more it's done totalWithdrawn:0 }); lastPairId++; pairPrices[lastPairId] = _pairPrice; pairPriceIds[tokenIn][tokenOut][limitPrice] = lastPairId; return lastPairId; } // Emergency withdraw ETH function emergencyWithdrawETH(address payable to) external onlyOwner { uint256 balance = address(this).balance; require(balance > 0, "No ETH to withdraw"); to.transfer(balance); } // Emergency withdraw ERC20 tokens function emergencyWithdrawToken(address token) external onlyOwner { IERC20 erc20 = IERC20(token); uint256 balance = erc20.balanceOf(address(this)); require(balance > 0, "No token balance to withdraw"); erc20.transfer(owner, balance); } function getTokenInfo(address tokenAddress) public view returns (string memory name, string memory symbol, uint8 decimals) { IERC20 tokenMetadata1 = IERC20(tokenAddress); name = tokenMetadata1.name(); symbol = tokenMetadata1.symbol(); decimals = tokenMetadata1.decimals(); } // Fallback function to receive ETH receive() external payable {} } interface IUniswapV3SwapCallback { function uniswapV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata data ) external; } interface ISwapRouter is IUniswapV3SwapCallback { function factory() external view returns (address); function WETH9() external view returns (address); struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; address recipient; uint256 deadline; uint256 amountIn; uint256 amountOutMinimum; uint160 sqrtPriceLimitX96; } function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); struct ExactInputParams { bytes path; address recipient; uint256 deadline; uint256 amountIn; uint256 amountOutMinimum; } function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut); struct ExactOutputSingleParams { address tokenIn; address tokenOut; uint24 fee; address recipient; uint256 deadline; uint256 amountOut; uint256 amountInMaximum; uint160 sqrtPriceLimitX96; } function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn); struct ExactOutputParams { bytes path; address recipient; uint256 deadline; uint256 amountOut; uint256 amountInMaximum; } function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn); } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function allowance(address owner,address spender) external view returns (uint); function approve(address spender, uint256 amount) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface IWETH { function deposit() external payable; function withdraw(uint wad) external; } interface IFeeTracker { function getUserVipStatus(address) external view returns(uint8); function getUserIntroducer(address) external view returns (address); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_feeTracker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"limitPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"limitPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"openPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"OrderPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"limitPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"OrderTriggered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"}],"name":"cancelOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"}],"name":"emergencyWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"feeDetails","outputs":[{"internalType":"uint16","name":"percentX10000","type":"uint16"},{"internalType":"uint16","name":"resellerCommissionPercentX10000","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTracker","outputs":[{"internalType":"contract IFeeTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokenInfo","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"fromId","type":"uint256"},{"internalType":"uint256","name":"toId","type":"uint256"}],"name":"getUserOrdersPaginated","outputs":[{"components":[{"internalType":"uint256","name":"userOrderIndex","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"pairPriceId","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"createdAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"limitPrice","type":"uint256"},{"internalType":"uint256","name":"totalAmountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawn","type":"uint256"}],"internalType":"struct TokenSwapSpot.TmpOrder[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastOrderId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPairId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orders","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"pairPriceId","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"createdAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairPrices","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"limitPrice","type":"uint256"},{"internalType":"uint256","name":"totalAmountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"limitPrice","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"placeOrder","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pairPriceId","type":"uint256"}],"name":"processPairPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_vipId","type":"uint8"},{"internalType":"uint16","name":"_percentX10000","type":"uint16"},{"internalType":"uint16","name":"_resellerCommissionPercentX10000","type":"uint16"}],"name":"setFeeDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oracleFee","type":"uint256"}],"name":"setOracleFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userIntroducer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userOrderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"}],"name":"withdrawOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405266470de4df82000060075534801561001a575f5ffd5b5060405161556a38038061556a833981810160405281019061003c9190610329565b335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610165573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101899190610367565b60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061021a5f60fa5f61025f60201b60201c565b61022e6001609660c861025f60201b60201c565b610243600260646101f461025f60201b60201c565b610258600360326103e861025f60201b60201c565b5050610392565b8160065f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060065f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f8826102cf565b9050919050565b610308816102ee565b8114610312575f5ffd5b50565b5f81519050610323816102ff565b92915050565b5f5f6040838503121561033f5761033e6102cb565b5b5f61034c85828601610315565b925050602061035d85828601610315565b9150509250929050565b5f6020828403121561037c5761037b6102cb565b5b5f61038984828501610315565b91505092915050565b6151cb8061039f5f395ff3fe60806040526004361061014d575f3560e01c80637dc0d1d0116100b5578063b6d9ef601161006e578063b6d9ef6014610499578063c8f5a43b146104c1578063cba1f44d146104fe578063ec4eb4f914610526578063f9cd3ceb14610562578063fb791b0b1461058c57610154565b80637dc0d1d01461036e578063817422c0146103985780638da5cb5b146103d9578063962fba2714610403578063a85c38ef1461042d578063ad5c46481461046f57610154565b806341273657116101075780634127365714610268578063514fcac7146102905780635662ecc7146102b857806366f48cf5146102e25780636e2bd98d1461031e5780637adbf9731461034657610154565b8062517d41146101585780631af03203146101945780631f69565f146101bc578063214ff459146101fa5780633325e1df146102225780633cedc5a51461024c57610154565b3661015457005b5f5ffd5b348015610163575f5ffd5b5061017e60048036038101906101799190613d0d565b6105b4565b60405161018b9190613d47565b60405180910390f35b34801561019f575f5ffd5b506101ba60048036038101906101b59190613d0d565b6105e4565b005b3480156101c7575f5ffd5b506101e260048036038101906101dd9190613d0d565b6107d4565b6040516101f193929190613deb565b60405180910390f35b348015610205575f5ffd5b50610220600480360381019061021b9190613e69565b610937565b005b34801561022d575f5ffd5b50610236610a53565b6040516102439190613eef565b60405180910390f35b61026660048036038101906102619190613f3b565b610a78565b005b348015610273575f5ffd5b5061028e60048036038101906102899190613d0d565b61155b565b005b34801561029b575f5ffd5b506102b660048036038101906102b19190613fb2565b6116f9565b005b3480156102c3575f5ffd5b506102cc611b9f565b6040516102d99190613fec565b60405180910390f35b3480156102ed575f5ffd5b5061030860048036038101906103039190614005565b611ba5565b6040516103159190614249565b60405180910390f35b348015610329575f5ffd5b50610344600480360381019061033f9190613fb2565b611fbf565b005b348015610351575f5ffd5b5061036c60048036038101906103679190613d0d565b612850565b005b348015610379575f5ffd5b50610382612921565b60405161038f9190613d47565b60405180910390f35b3480156103a3575f5ffd5b506103be60048036038101906103b99190613fb2565b612946565b6040516103d096959493929190614269565b60405180910390f35b3480156103e4575f5ffd5b506103ed6129bc565b6040516103fa9190613d47565b60405180910390f35b34801561040e575f5ffd5b506104176129e0565b6040516104249190613fec565b60405180910390f35b348015610438575f5ffd5b50610453600480360381019061044e9190613fb2565b6129e6565b60405161046697969594939291906142c8565b60405180910390f35b34801561047a575f5ffd5b50610483612a4f565b6040516104909190613d47565b60405180910390f35b3480156104a4575f5ffd5b506104bf60048036038101906104ba9190613fb2565b612a74565b005b3480156104cc575f5ffd5b506104e760048036038101906104e2919061435f565b612b0c565b6040516104f59291906143a6565b60405180910390f35b348015610509575f5ffd5b50610524600480360381019061051f91906143f7565b612b46565b005b348015610531575f5ffd5b5061054c60048036038101906105479190613d0d565b612bb2565b6040516105599190613fec565b60405180910390f35b34801561056d575f5ffd5b50610576612bc7565b6040516105839190613fec565b60405180910390f35b348015610597575f5ffd5b506105b260048036038101906105ad9190613fb2565b612bcd565b005b6005602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066990614491565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106b09190613d47565b602060405180830381865afa1580156106cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906144c3565b90505f8111610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90614538565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161078e929190614556565b6020604051808303815f875af11580156107aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce91906145b2565b50505050565b6060805f5f8490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061084c91906146fb565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108be91906146fb565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190614756565b9150509193909250565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90614491565b60405180910390fd5b5f4790505f8111610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a02906147cb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610a4e573d5f5f3e3d5ffd5b505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600754341015610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab490614833565b60405180910390fd5b5f8311610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906148c1565b60405180910390fd5b5f8211610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061494f565b60405180910390fd5b5f8111610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a906149b7565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633149f464336040518263ffffffff1660e01b8152600401610bde9190613d47565b602060405180830381865afa158015610bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1d91906149e9565b90505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610ce257505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15610d63578060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610dbb5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e135760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694505b60075434118015610e70575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15610ffd5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955060075434610ea79190614a41565b91505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015610f14575f5ffd5b505af1158015610f26573d5f5f3e3d5ffd5b50505050505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600754604051610f7390614aa1565b5f6040518083038185875af1925050503d805f8114610fad576040519150601f19603f3d011682016040523d82523d5f602084013e610fb2565b606091505b5050905080610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90614aff565b60405180910390fd5b5050611196565b5f821161103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690614b67565b60405180910390fd5b5f8690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161108093929190614b85565b6020604051808303815f875af115801561109c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c091906145b2565b505f341115611194575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161110f90614aa1565b5f6040518083038185875af1925050503d805f8114611149576040519150601f19603f3d011682016040523d82523d5f602084013e61114e565b606091505b5050905080611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614aff565b60405180910390fd5b505b505b5f6111a287878761379b565b905082600d5f8381526020019081526020015f206003015f8282546111c79190614bba565b925050819055505f879050838173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161122f929190614bed565b602060405180830381865afa15801561124a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e91906144c3565b1015611332578073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112f0929190614556565b6020604051808303815f875af115801561130c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133091906145b2565b505b5f6040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018481526020018681526020015f60ff1681526020014281526020015f815250905060085f81548092919061139390614c14565b91905055508060095f60085481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908360ff16021790555060a0820151816005015560c08201518160060155905050600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600854908060018154018082558091505060019003905f5260205f20015f9091909190915055600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906114f590614c14565b91905055503373ffffffffffffffffffffffffffffffffffffffff167fe72875bba711be65a0326522afdfe196ba92d5068cc13176f9637449515353888a8a8a8a8a604051611548959493929190614c5b565b60405180910390a2505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090614491565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611693573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b791906149e9565b60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090614cf6565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082815481106117c9576117c8614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206004015f9054906101000a900460ff1660ff1614801561181957505f60095f8381526020019081526020015f2060030154115b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614d8b565b60405180910390fd5b600260095f8381526020019081526020015f206004015f6101000a81548160ff021916908360ff1602179055504260095f8381526020019081526020015f20600601819055505f60095f8381526020019081526020015f2060020154905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a995760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d60095f8581526020019081526020015f20600301546040518263ffffffff1660e01b81526004016119aa9190613fec565b5f604051808303815f87803b1580156119c1575f5ffd5b505af11580156119d3573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff1660095f8581526020019081526020015f2060030154604051611a1090614aa1565b5f6040518083038185875af1925050503d805f8114611a4a576040519150601f19603f3d011682016040523d82523d5f602084013e611a4f565b606091505b5050905080611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614df3565b60405180910390fd5b50611b5c565b600d5f8281526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360095f8681526020019081526020015f20600301546040518363ffffffff1660e01b8152600401611b1a929190614556565b6020604051808303815f875af1158015611b36573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a91906145b2565b505b60095f8381526020019081526020015f2060030154600d5f8381526020019081526020015f206003015f828254611b939190614a41565b92505081905550505050565b60085481565b6060600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050821115611c3357600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905091505b81831115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90614e5b565b60405180910390fd5b5f8383611c839190614a41565b90505f8167ffffffffffffffff811115611ca057611c9f6145e5565b5b604051908082528060200260200182016040528015611cd957816020015b611cc6613bfc565b815260200190600190039081611cbe5790505b5090505f5f90505b82811015611fb2575f600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208288611d339190614bba565b81548110611d4457611d43614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206002015490505f604051806101c00160405280858b611d809190614bba565b815260200160095f8681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160095f8681526020019081526020015f2060010154815260200160095f8681526020019081526020015f2060020154815260200160095f8681526020019081526020015f2060030154815260200160095f8681526020019081526020015f206004015f9054906101000a900460ff1660ff16815260200160095f8681526020019081526020015f2060050154815260200160095f8681526020019081526020015f20600601548152602001600d5f8581526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600d5f8581526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600d5f8581526020019081526020015f20600201548152602001600d5f8581526020019081526020015f20600301548152602001600d5f8581526020019081526020015f20600401548152602001600d5f8581526020019081526020015f2060050154815250905080858581518110611f9757611f96614d14565b5b60200260200101819052505050508080600101915050611ce1565b5080925050509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204590614ec3565b60405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8481526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036120de5747905061218c565b600d5f8381526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161214a9190613d47565b602060405180830381865afa158015612165573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218991906144c3565b90505b5f600d5f8481526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600d5f8581526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600d5f8681526020019081526020015f206003015490505f819050808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612272929190614bed565b602060405180830381865afa15801561228d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906144c3565b1015612375578373ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401612333929190614f1a565b6020604051808303815f875af115801561234f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237391906145b2565b505b5f6040518061010001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001610384426123f19190614bba565b81526020018381526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401612479919061500d565b6020604051808303815f875af1158015612495573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b991906144c3565b905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125975760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016125699190613fec565b5f604051808303815f87803b158015612580575f5ffd5b505af1158015612592573d5f5f3e3d5ffd5b505050505b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8b81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612627574790506126d5565b600d5f8a81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126939190613d47565b602060405180830381865afa1580156126ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d291906144c3565b90505b5f88826126e29190614a41565b90505f8111612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90615071565b60405180910390fd5b80600d5f8c81526020019081526020015f20600401819055505f600e5f600d5f8e81526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f8e81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f8e81526020019081526020015f206002015481526020019081526020015f208190555050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d590614491565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154905086565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015490806004015f9054906101000a900460ff16908060050154908060060154905087565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af990614491565b60405180910390fd5b8060078190555050565b6006602052805f5260405f205f91509050805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff16905082565b8160065f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060065f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b600b602052805f5260405f205f915090505481565b60075481565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4490614cf6565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110612c9d57612c9c614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206004015f9054906101000a900460ff1660ff16148015612ced57505f60095f8381526020019081526020015f2060030154115b612d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2390614d8b565b60405180910390fd5b600160095f8381526020019081526020015f206004015f6101000a81548160ff021916908360ff1602179055504260095f8381526020019081526020015f20600601819055505f60095f8381526020019081526020015f206002015490505f600d5f8381526020019081526020015f206004015411612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd7906150d9565b60405180910390fd5b5f600d5f8381526020019081526020015f206003015490505f600d5f8481526020019081526020015f206004015490505f60095f8681526020019081526020015f206003015490505f83670de0b6b3a764000083612e3e91906150f7565b612e489190615165565b90505f670de0b6b3a76400008285612e6091906150f7565b612e6a9190615165565b90505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33336040518263ffffffff1660e01b8152600401612ec79190613d47565b602060405180830381865afa158015612ee2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f069190614756565b90505f60065f8360ff1660ff1681526020019081526020015f205f015f9054906101000a900461ffff1690505f6127108261ffff1685612f4691906150f7565b612f509190615165565b90505f8185612f5f9190614a41565b90505f5f83118015612ff957505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613143575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf3360055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130b59190613d47565b602060405180830381865afa1580156130d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f49190614756565b90505f60065f8360ff1660ff1681526020019081526020015f205f0160029054906101000a900461ffff1690506127108161ffff168661313491906150f7565b61313e9190615165565b925050505b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8d81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613430575f3373ffffffffffffffffffffffffffffffffffffffff16836040516131ef90614aa1565b5f6040518083038185875af1925050503d805f8114613229576040519150601f19603f3d011682016040523d82523d5f602084013e61322e565b606091505b5050809150505f821180156132cb57505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156133965760055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161335090614aa1565b5f6040518083038185875af1925050503d805f811461338a576040519150601f19603f3d011682016040523d82523d5f602084013e61338f565b606091505b5050809150505b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682856133d99190614a41565b6040516133e590614aa1565b5f6040518083038185875af1925050503d805f811461341f576040519150601f19603f3d011682016040523d82523d5f602084013e613424565b606091505b50508091505050613762565b600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161349e929190614556565b6020604051808303815f875af11580156134ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134de91906145b2565b505f8111801561357657505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561368757600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401613645929190614556565b6020604051808303815f875af1158015613661573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061368591906145b2565b505b600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683866137039190614a41565b6040518363ffffffff1660e01b8152600401613720929190614556565b6020604051808303815f875af115801561373c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061376091906145b2565b505b81600d5f8d81526020019081526020015f206005015f8282546137859190614bba565b9250508190555050505050505050505050505050565b5f6137a582613a9d565b91505f600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205411156138c557600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20549050613a96565b5f6040518060c001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f81526020015f81526020015f8152509050600c5f81548092919061393390614c14565b919050555080600d5f600c5481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050155905050600c54600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f2081905550600c549150505b9392505050565b5f5f6008613aaa84613ade565b613ab49190614a41565b6001901b90505f818285613ac89190615165565b613ad291906150f7565b90508092505050919050565b5f5f5f90507001000000000000000000000000000000008310613b1257608083901c9250608081613b0f9190614bba565b90505b680100000000000000008310613b3957604083901c9250604081613b369190614bba565b90505b6401000000008310613b5c57602083901c9250602081613b599190614bba565b90505b620100008310613b7d57601083901c9250601081613b7a9190614bba565b90505b6101008310613b9d57600883901c9250600881613b9a9190614bba565b90505b60108310613bbc57600483901c9250600481613bb99190614bba565b90505b60048310613bdb57600283901c9250600281613bd89190614bba565b90505b60028310613bf357600181613bf09190614bba565b90505b80915050919050565b604051806101c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f60ff1681526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cdc82613cb3565b9050919050565b613cec81613cd2565b8114613cf6575f5ffd5b50565b5f81359050613d0781613ce3565b92915050565b5f60208284031215613d2257613d21613cab565b5b5f613d2f84828501613cf9565b91505092915050565b613d4181613cd2565b82525050565b5f602082019050613d5a5f830184613d38565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613da282613d60565b613dac8185613d6a565b9350613dbc818560208601613d7a565b613dc581613d88565b840191505092915050565b5f60ff82169050919050565b613de581613dd0565b82525050565b5f6060820190508181035f830152613e038186613d98565b90508181036020830152613e178185613d98565b9050613e266040830184613ddc565b949350505050565b5f613e3882613cb3565b9050919050565b613e4881613e2e565b8114613e52575f5ffd5b50565b5f81359050613e6381613e3f565b92915050565b5f60208284031215613e7e57613e7d613cab565b5b5f613e8b84828501613e55565b91505092915050565b5f819050919050565b5f613eb7613eb2613ead84613cb3565b613e94565b613cb3565b9050919050565b5f613ec882613e9d565b9050919050565b5f613ed982613ebe565b9050919050565b613ee981613ecf565b82525050565b5f602082019050613f025f830184613ee0565b92915050565b5f819050919050565b613f1a81613f08565b8114613f24575f5ffd5b50565b5f81359050613f3581613f11565b92915050565b5f5f5f5f5f60a08688031215613f5457613f53613cab565b5b5f613f6188828901613cf9565b9550506020613f7288828901613cf9565b9450506040613f8388828901613f27565b9350506060613f9488828901613f27565b9250506080613fa588828901613f27565b9150509295509295909350565b5f60208284031215613fc757613fc6613cab565b5b5f613fd484828501613f27565b91505092915050565b613fe681613f08565b82525050565b5f602082019050613fff5f830184613fdd565b92915050565b5f5f5f6060848603121561401c5761401b613cab565b5b5f61402986828701613cf9565b935050602061403a86828701613f27565b925050604061404b86828701613f27565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61408781613f08565b82525050565b61409681613cd2565b82525050565b6140a581613dd0565b82525050565b6101c082015f8201516140c05f85018261407e565b5060208201516140d3602085018261408d565b5060408201516140e6604085018261407e565b5060608201516140f9606085018261407e565b50608082015161410c608085018261407e565b5060a082015161411f60a085018261409c565b5060c082015161413260c085018261407e565b5060e082015161414560e085018261407e565b5061010082015161415a61010085018261408d565b5061012082015161416f61012085018261408d565b5061014082015161418461014085018261407e565b5061016082015161419961016085018261407e565b506101808201516141ae61018085018261407e565b506101a08201516141c36101a085018261407e565b50505050565b5f6141d483836140ab565b6101c08301905092915050565b5f602082019050919050565b5f6141f782614055565b614201818561405f565b935061420c8361406f565b805f5b8381101561423c57815161422388826141c9565b975061422e836141e1565b92505060018101905061420f565b5085935050505092915050565b5f6020820190508181035f83015261426181846141ed565b905092915050565b5f60c08201905061427c5f830189613d38565b6142896020830188613d38565b6142966040830187613fdd565b6142a36060830186613fdd565b6142b06080830185613fdd565b6142bd60a0830184613fdd565b979650505050505050565b5f60e0820190506142db5f83018a613d38565b6142e86020830189613fdd565b6142f56040830188613fdd565b6143026060830187613fdd565b61430f6080830186613ddc565b61431c60a0830185613fdd565b61432960c0830184613fdd565b98975050505050505050565b61433e81613dd0565b8114614348575f5ffd5b50565b5f8135905061435981614335565b92915050565b5f6020828403121561437457614373613cab565b5b5f6143818482850161434b565b91505092915050565b5f61ffff82169050919050565b6143a08161438a565b82525050565b5f6040820190506143b95f830185614397565b6143c66020830184614397565b9392505050565b6143d68161438a565b81146143e0575f5ffd5b50565b5f813590506143f1816143cd565b92915050565b5f5f5f6060848603121561440e5761440d613cab565b5b5f61441b8682870161434b565b935050602061442c868287016143e3565b925050604061443d868287016143e3565b9150509250925092565b7f4e6f742074686520636f6e7472616374206f776e6572000000000000000000005f82015250565b5f61447b601683613d6a565b915061448682614447565b602082019050919050565b5f6020820190508181035f8301526144a88161446f565b9050919050565b5f815190506144bd81613f11565b92915050565b5f602082840312156144d8576144d7613cab565b5b5f6144e5848285016144af565b91505092915050565b7f4e6f20746f6b656e2062616c616e636520746f207769746864726177000000005f82015250565b5f614522601c83613d6a565b915061452d826144ee565b602082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b5f6040820190506145695f830185613d38565b6145766020830184613fdd565b9392505050565b5f8115159050919050565b6145918161457d565b811461459b575f5ffd5b50565b5f815190506145ac81614588565b92915050565b5f602082840312156145c7576145c6613cab565b5b5f6145d48482850161459e565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61461b82613d88565b810181811067ffffffffffffffff8211171561463a576146396145e5565b5b80604052505050565b5f61464c613ca2565b90506146588282614612565b919050565b5f67ffffffffffffffff821115614677576146766145e5565b5b61468082613d88565b9050602081019050919050565b5f61469f61469a8461465d565b614643565b9050828152602081018484840111156146bb576146ba6145e1565b5b6146c6848285613d7a565b509392505050565b5f82601f8301126146e2576146e16145dd565b5b81516146f284826020860161468d565b91505092915050565b5f602082840312156147105761470f613cab565b5b5f82015167ffffffffffffffff81111561472d5761472c613caf565b5b614739848285016146ce565b91505092915050565b5f8151905061475081614335565b92915050565b5f6020828403121561476b5761476a613cab565b5b5f61477884828501614742565b91505092915050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f6147b5601283613d6a565b91506147c082614781565b602082019050919050565b5f6020820190508181035f8301526147e2816147a9565b9050919050565b7f4e6f7420656e6f756768206f7261636c652066656500000000000000000000005f82015250565b5f61481d601583613d6a565b9150614828826147e9565b602082019050919050565b5f6020820190508181035f83015261484a81614811565b9050919050565b7f6c696d6974207072696365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ab602283613d6a565b91506148b682614851565b604082019050919050565b5f6020820190508181035f8301526148d88161489f565b9050919050565b7f6f70656e207072696365206d7573742062652067726561746572207468616e205f8201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b5f614939602183613d6a565b9150614944826148df565b604082019050919050565b5f6020820190508181035f8301526149668161492d565b9050919050565b7f616d6f756e74496e206d7573742062652067726561746572207468616e2030005f82015250565b5f6149a1601f83613d6a565b91506149ac8261496d565b602082019050919050565b5f6020820190508181035f8301526149ce81614995565b9050919050565b5f815190506149e381613ce3565b92915050565b5f602082840312156149fe576149fd613cab565b5b5f614a0b848285016149d5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614a4b82613f08565b9150614a5683613f08565b9250828203905081811115614a6e57614a6d614a14565b5b92915050565b5f81905092915050565b50565b5f614a8c5f83614a74565b9150614a9782614a7e565b5f82019050919050565b5f614aab82614a81565b9150819050919050565b7f4661696c656420746f2073656e64206f7261636c6520666565000000000000005f82015250565b5f614ae9601983613d6a565b9150614af482614ab5565b602082019050919050565b5f6020820190508181035f830152614b1681614add565b9050919050565b7f4d757374207370656369667920616e20616d6f756e7420746f207377617000005f82015250565b5f614b51601e83613d6a565b9150614b5c82614b1d565b602082019050919050565b5f6020820190508181035f830152614b7e81614b45565b9050919050565b5f606082019050614b985f830186613d38565b614ba56020830185613d38565b614bb26040830184613fdd565b949350505050565b5f614bc482613f08565b9150614bcf83613f08565b9250828201905080821115614be757614be6614a14565b5b92915050565b5f604082019050614c005f830185613d38565b614c0d6020830184613d38565b9392505050565b5f614c1e82613f08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c5057614c4f614a14565b5b600182019050919050565b5f60a082019050614c6e5f830188613d38565b614c7b6020830187613d38565b614c886040830186613fdd565b614c956060830185613fdd565b614ca26080830184613fdd565b9695505050505050565b7f4f72646572206964206973206e6f742076616c696400000000000000000000005f82015250565b5f614ce0601583613d6a565b9150614ceb82614cac565b602082019050919050565b5f6020820190508181035f830152614d0d81614cd4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f72646572206973206e6f74206f70656e0000000000000000000000000000005f82015250565b5f614d75601183613d6a565b9150614d8082614d41565b602082019050919050565b5f6020820190508181035f830152614da281614d69565b9050919050565b7f4661696c656420746f2073656e642045544800000000000000000000000000005f82015250565b5f614ddd601283613d6a565b9150614de882614da9565b602082019050919050565b5f6020820190508181035f830152614e0a81614dd1565b9050919050565b7f496e76616c696420706167696e6174696f6e2072616e676500000000000000005f82015250565b5f614e45601883613d6a565b9150614e5082614e11565b602082019050919050565b5f6020820190508181035f830152614e7281614e39565b9050919050565b7f4e6f7420746865206f7261636c650000000000000000000000000000000000005f82015250565b5f614ead600e83613d6a565b9150614eb882614e79565b602082019050919050565b5f6020820190508181035f830152614eda81614ea1565b9050919050565b5f819050919050565b5f614f04614eff614efa84614ee1565b613e94565b613f08565b9050919050565b614f1481614eea565b82525050565b5f604082019050614f2d5f830185613d38565b614f3a6020830184614f0b565b9392505050565b5f62ffffff82169050919050565b614f5881614f41565b82525050565b614f6781613cb3565b82525050565b61010082015f820151614f825f85018261408d565b506020820151614f95602085018261408d565b506040820151614fa86040850182614f4f565b506060820151614fbb606085018261408d565b506080820151614fce608085018261407e565b5060a0820151614fe160a085018261407e565b5060c0820151614ff460c085018261407e565b5060e082015161500760e0850182614f5e565b50505050565b5f610100820190506150215f830184614f6d565b92915050565b7f4661696c656420746f2070726f636573732073776170000000000000000000005f82015250565b5f61505b601683613d6a565b915061506682615027565b602082019050919050565b5f6020820190508181035f8301526150888161504f565b9050919050565b7f4f72646572206973206e6f7420706c61636564207965742e00000000000000005f82015250565b5f6150c3601883613d6a565b91506150ce8261508f565b602082019050919050565b5f6020820190508181035f8301526150f0816150b7565b9050919050565b5f61510182613f08565b915061510c83613f08565b925082820261511a81613f08565b9150828204841483151761513157615130614a14565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61516f82613f08565b915061517a83613f08565b92508261518a57615189615138565b5b82820490509291505056fea2646970667358221220e8ed9b79b2b8d0d937a9d5f2ddf0424b65a5e75aed317cea64917ad6427856cc64736f6c634300081c0033000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b
Deployed Bytecode
0x60806040526004361061014d575f3560e01c80637dc0d1d0116100b5578063b6d9ef601161006e578063b6d9ef6014610499578063c8f5a43b146104c1578063cba1f44d146104fe578063ec4eb4f914610526578063f9cd3ceb14610562578063fb791b0b1461058c57610154565b80637dc0d1d01461036e578063817422c0146103985780638da5cb5b146103d9578063962fba2714610403578063a85c38ef1461042d578063ad5c46481461046f57610154565b806341273657116101075780634127365714610268578063514fcac7146102905780635662ecc7146102b857806366f48cf5146102e25780636e2bd98d1461031e5780637adbf9731461034657610154565b8062517d41146101585780631af03203146101945780631f69565f146101bc578063214ff459146101fa5780633325e1df146102225780633cedc5a51461024c57610154565b3661015457005b5f5ffd5b348015610163575f5ffd5b5061017e60048036038101906101799190613d0d565b6105b4565b60405161018b9190613d47565b60405180910390f35b34801561019f575f5ffd5b506101ba60048036038101906101b59190613d0d565b6105e4565b005b3480156101c7575f5ffd5b506101e260048036038101906101dd9190613d0d565b6107d4565b6040516101f193929190613deb565b60405180910390f35b348015610205575f5ffd5b50610220600480360381019061021b9190613e69565b610937565b005b34801561022d575f5ffd5b50610236610a53565b6040516102439190613eef565b60405180910390f35b61026660048036038101906102619190613f3b565b610a78565b005b348015610273575f5ffd5b5061028e60048036038101906102899190613d0d565b61155b565b005b34801561029b575f5ffd5b506102b660048036038101906102b19190613fb2565b6116f9565b005b3480156102c3575f5ffd5b506102cc611b9f565b6040516102d99190613fec565b60405180910390f35b3480156102ed575f5ffd5b5061030860048036038101906103039190614005565b611ba5565b6040516103159190614249565b60405180910390f35b348015610329575f5ffd5b50610344600480360381019061033f9190613fb2565b611fbf565b005b348015610351575f5ffd5b5061036c60048036038101906103679190613d0d565b612850565b005b348015610379575f5ffd5b50610382612921565b60405161038f9190613d47565b60405180910390f35b3480156103a3575f5ffd5b506103be60048036038101906103b99190613fb2565b612946565b6040516103d096959493929190614269565b60405180910390f35b3480156103e4575f5ffd5b506103ed6129bc565b6040516103fa9190613d47565b60405180910390f35b34801561040e575f5ffd5b506104176129e0565b6040516104249190613fec565b60405180910390f35b348015610438575f5ffd5b50610453600480360381019061044e9190613fb2565b6129e6565b60405161046697969594939291906142c8565b60405180910390f35b34801561047a575f5ffd5b50610483612a4f565b6040516104909190613d47565b60405180910390f35b3480156104a4575f5ffd5b506104bf60048036038101906104ba9190613fb2565b612a74565b005b3480156104cc575f5ffd5b506104e760048036038101906104e2919061435f565b612b0c565b6040516104f59291906143a6565b60405180910390f35b348015610509575f5ffd5b50610524600480360381019061051f91906143f7565b612b46565b005b348015610531575f5ffd5b5061054c60048036038101906105479190613d0d565b612bb2565b6040516105599190613fec565b60405180910390f35b34801561056d575f5ffd5b50610576612bc7565b6040516105839190613fec565b60405180910390f35b348015610597575f5ffd5b506105b260048036038101906105ad9190613fb2565b612bcd565b005b6005602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066990614491565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106b09190613d47565b602060405180830381865afa1580156106cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906144c3565b90505f8111610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90614538565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161078e929190614556565b6020604051808303815f875af11580156107aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce91906145b2565b50505050565b6060805f5f8490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061084c91906146fb565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108be91906146fb565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190614756565b9150509193909250565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90614491565b60405180910390fd5b5f4790505f8111610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a02906147cb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610a4e573d5f5f3e3d5ffd5b505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600754341015610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab490614833565b60405180910390fd5b5f8311610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906148c1565b60405180910390fd5b5f8211610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061494f565b60405180910390fd5b5f8111610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a906149b7565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633149f464336040518263ffffffff1660e01b8152600401610bde9190613d47565b602060405180830381865afa158015610bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1d91906149e9565b90505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610ce257505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15610d63578060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610dbb5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e135760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694505b60075434118015610e70575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15610ffd5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955060075434610ea79190614a41565b91505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015610f14575f5ffd5b505af1158015610f26573d5f5f3e3d5ffd5b50505050505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600754604051610f7390614aa1565b5f6040518083038185875af1925050503d805f8114610fad576040519150601f19603f3d011682016040523d82523d5f602084013e610fb2565b606091505b5050905080610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90614aff565b60405180910390fd5b5050611196565b5f821161103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690614b67565b60405180910390fd5b5f8690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161108093929190614b85565b6020604051808303815f875af115801561109c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c091906145b2565b505f341115611194575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161110f90614aa1565b5f6040518083038185875af1925050503d805f8114611149576040519150601f19603f3d011682016040523d82523d5f602084013e61114e565b606091505b5050905080611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614aff565b60405180910390fd5b505b505b5f6111a287878761379b565b905082600d5f8381526020019081526020015f206003015f8282546111c79190614bba565b925050819055505f879050838173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161122f929190614bed565b602060405180830381865afa15801561124a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e91906144c3565b1015611332578073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112f0929190614556565b6020604051808303815f875af115801561130c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133091906145b2565b505b5f6040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018481526020018681526020015f60ff1681526020014281526020015f815250905060085f81548092919061139390614c14565b91905055508060095f60085481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908360ff16021790555060a0820151816005015560c08201518160060155905050600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600854908060018154018082558091505060019003905f5260205f20015f9091909190915055600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906114f590614c14565b91905055503373ffffffffffffffffffffffffffffffffffffffff167fe72875bba711be65a0326522afdfe196ba92d5068cc13176f9637449515353888a8a8a8a8a604051611548959493929190614c5b565b60405180910390a2505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090614491565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611693573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b791906149e9565b60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090614cf6565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082815481106117c9576117c8614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206004015f9054906101000a900460ff1660ff1614801561181957505f60095f8381526020019081526020015f2060030154115b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614d8b565b60405180910390fd5b600260095f8381526020019081526020015f206004015f6101000a81548160ff021916908360ff1602179055504260095f8381526020019081526020015f20600601819055505f60095f8381526020019081526020015f2060020154905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a995760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d60095f8581526020019081526020015f20600301546040518263ffffffff1660e01b81526004016119aa9190613fec565b5f604051808303815f87803b1580156119c1575f5ffd5b505af11580156119d3573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff1660095f8581526020019081526020015f2060030154604051611a1090614aa1565b5f6040518083038185875af1925050503d805f8114611a4a576040519150601f19603f3d011682016040523d82523d5f602084013e611a4f565b606091505b5050905080611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614df3565b60405180910390fd5b50611b5c565b600d5f8281526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360095f8681526020019081526020015f20600301546040518363ffffffff1660e01b8152600401611b1a929190614556565b6020604051808303815f875af1158015611b36573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a91906145b2565b505b60095f8381526020019081526020015f2060030154600d5f8381526020019081526020015f206003015f828254611b939190614a41565b92505081905550505050565b60085481565b6060600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050821115611c3357600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905091505b81831115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90614e5b565b60405180910390fd5b5f8383611c839190614a41565b90505f8167ffffffffffffffff811115611ca057611c9f6145e5565b5b604051908082528060200260200182016040528015611cd957816020015b611cc6613bfc565b815260200190600190039081611cbe5790505b5090505f5f90505b82811015611fb2575f600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208288611d339190614bba565b81548110611d4457611d43614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206002015490505f604051806101c00160405280858b611d809190614bba565b815260200160095f8681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160095f8681526020019081526020015f2060010154815260200160095f8681526020019081526020015f2060020154815260200160095f8681526020019081526020015f2060030154815260200160095f8681526020019081526020015f206004015f9054906101000a900460ff1660ff16815260200160095f8681526020019081526020015f2060050154815260200160095f8681526020019081526020015f20600601548152602001600d5f8581526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600d5f8581526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600d5f8581526020019081526020015f20600201548152602001600d5f8581526020019081526020015f20600301548152602001600d5f8581526020019081526020015f20600401548152602001600d5f8581526020019081526020015f2060050154815250905080858581518110611f9757611f96614d14565b5b60200260200101819052505050508080600101915050611ce1565b5080925050509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204590614ec3565b60405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8481526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036120de5747905061218c565b600d5f8381526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161214a9190613d47565b602060405180830381865afa158015612165573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218991906144c3565b90505b5f600d5f8481526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600d5f8581526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600d5f8681526020019081526020015f206003015490505f819050808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612272929190614bed565b602060405180830381865afa15801561228d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906144c3565b1015612375578373ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401612333929190614f1a565b6020604051808303815f875af115801561234f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237391906145b2565b505b5f6040518061010001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001610384426123f19190614bba565b81526020018381526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401612479919061500d565b6020604051808303815f875af1158015612495573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b991906144c3565b905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125975760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016125699190613fec565b5f604051808303815f87803b158015612580575f5ffd5b505af1158015612592573d5f5f3e3d5ffd5b505050505b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8b81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612627574790506126d5565b600d5f8a81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126939190613d47565b602060405180830381865afa1580156126ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d291906144c3565b90505b5f88826126e29190614a41565b90505f8111612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90615071565b60405180910390fd5b80600d5f8c81526020019081526020015f20600401819055505f600e5f600d5f8e81526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f8e81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f8e81526020019081526020015f206002015481526020019081526020015f208190555050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d590614491565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154905086565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015490806004015f9054906101000a900460ff16908060050154908060060154905087565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af990614491565b60405180910390fd5b8060078190555050565b6006602052805f5260405f205f91509050805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff16905082565b8160065f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060065f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b600b602052805f5260405f205f915090505481565b60075481565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4490614cf6565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110612c9d57612c9c614d14565b5b905f5260205f20015490505f60095f8381526020019081526020015f206004015f9054906101000a900460ff1660ff16148015612ced57505f60095f8381526020019081526020015f2060030154115b612d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2390614d8b565b60405180910390fd5b600160095f8381526020019081526020015f206004015f6101000a81548160ff021916908360ff1602179055504260095f8381526020019081526020015f20600601819055505f60095f8381526020019081526020015f206002015490505f600d5f8381526020019081526020015f206004015411612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd7906150d9565b60405180910390fd5b5f600d5f8381526020019081526020015f206003015490505f600d5f8481526020019081526020015f206004015490505f60095f8681526020019081526020015f206003015490505f83670de0b6b3a764000083612e3e91906150f7565b612e489190615165565b90505f670de0b6b3a76400008285612e6091906150f7565b612e6a9190615165565b90505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33336040518263ffffffff1660e01b8152600401612ec79190613d47565b602060405180830381865afa158015612ee2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f069190614756565b90505f60065f8360ff1660ff1681526020019081526020015f205f015f9054906101000a900461ffff1690505f6127108261ffff1685612f4691906150f7565b612f509190615165565b90505f8185612f5f9190614a41565b90505f5f83118015612ff957505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613143575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf3360055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130b59190613d47565b602060405180830381865afa1580156130d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f49190614756565b90505f60065f8360ff1660ff1681526020019081526020015f205f0160029054906101000a900461ffff1690506127108161ffff168661313491906150f7565b61313e9190615165565b925050505b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5f8d81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613430575f3373ffffffffffffffffffffffffffffffffffffffff16836040516131ef90614aa1565b5f6040518083038185875af1925050503d805f8114613229576040519150601f19603f3d011682016040523d82523d5f602084013e61322e565b606091505b5050809150505f821180156132cb57505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156133965760055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161335090614aa1565b5f6040518083038185875af1925050503d805f811461338a576040519150601f19603f3d011682016040523d82523d5f602084013e61338f565b606091505b5050809150505b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682856133d99190614a41565b6040516133e590614aa1565b5f6040518083038185875af1925050503d805f811461341f576040519150601f19603f3d011682016040523d82523d5f602084013e613424565b606091505b50508091505050613762565b600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161349e929190614556565b6020604051808303815f875af11580156134ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134de91906145b2565b505f8111801561357657505f73ffffffffffffffffffffffffffffffffffffffff1660055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561368757600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401613645929190614556565b6020604051808303815f875af1158015613661573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061368591906145b2565b505b600d5f8c81526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683866137039190614a41565b6040518363ffffffff1660e01b8152600401613720929190614556565b6020604051808303815f875af115801561373c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061376091906145b2565b505b81600d5f8d81526020019081526020015f206005015f8282546137859190614bba565b9250508190555050505050505050505050505050565b5f6137a582613a9d565b91505f600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205411156138c557600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20549050613a96565b5f6040518060c001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f81526020015f81526020015f8152509050600c5f81548092919061393390614c14565b919050555080600d5f600c5481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050155905050600c54600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f2081905550600c549150505b9392505050565b5f5f6008613aaa84613ade565b613ab49190614a41565b6001901b90505f818285613ac89190615165565b613ad291906150f7565b90508092505050919050565b5f5f5f90507001000000000000000000000000000000008310613b1257608083901c9250608081613b0f9190614bba565b90505b680100000000000000008310613b3957604083901c9250604081613b369190614bba565b90505b6401000000008310613b5c57602083901c9250602081613b599190614bba565b90505b620100008310613b7d57601083901c9250601081613b7a9190614bba565b90505b6101008310613b9d57600883901c9250600881613b9a9190614bba565b90505b60108310613bbc57600483901c9250600481613bb99190614bba565b90505b60048310613bdb57600283901c9250600281613bd89190614bba565b90505b60028310613bf357600181613bf09190614bba565b90505b80915050919050565b604051806101c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f60ff1681526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cdc82613cb3565b9050919050565b613cec81613cd2565b8114613cf6575f5ffd5b50565b5f81359050613d0781613ce3565b92915050565b5f60208284031215613d2257613d21613cab565b5b5f613d2f84828501613cf9565b91505092915050565b613d4181613cd2565b82525050565b5f602082019050613d5a5f830184613d38565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613da282613d60565b613dac8185613d6a565b9350613dbc818560208601613d7a565b613dc581613d88565b840191505092915050565b5f60ff82169050919050565b613de581613dd0565b82525050565b5f6060820190508181035f830152613e038186613d98565b90508181036020830152613e178185613d98565b9050613e266040830184613ddc565b949350505050565b5f613e3882613cb3565b9050919050565b613e4881613e2e565b8114613e52575f5ffd5b50565b5f81359050613e6381613e3f565b92915050565b5f60208284031215613e7e57613e7d613cab565b5b5f613e8b84828501613e55565b91505092915050565b5f819050919050565b5f613eb7613eb2613ead84613cb3565b613e94565b613cb3565b9050919050565b5f613ec882613e9d565b9050919050565b5f613ed982613ebe565b9050919050565b613ee981613ecf565b82525050565b5f602082019050613f025f830184613ee0565b92915050565b5f819050919050565b613f1a81613f08565b8114613f24575f5ffd5b50565b5f81359050613f3581613f11565b92915050565b5f5f5f5f5f60a08688031215613f5457613f53613cab565b5b5f613f6188828901613cf9565b9550506020613f7288828901613cf9565b9450506040613f8388828901613f27565b9350506060613f9488828901613f27565b9250506080613fa588828901613f27565b9150509295509295909350565b5f60208284031215613fc757613fc6613cab565b5b5f613fd484828501613f27565b91505092915050565b613fe681613f08565b82525050565b5f602082019050613fff5f830184613fdd565b92915050565b5f5f5f6060848603121561401c5761401b613cab565b5b5f61402986828701613cf9565b935050602061403a86828701613f27565b925050604061404b86828701613f27565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61408781613f08565b82525050565b61409681613cd2565b82525050565b6140a581613dd0565b82525050565b6101c082015f8201516140c05f85018261407e565b5060208201516140d3602085018261408d565b5060408201516140e6604085018261407e565b5060608201516140f9606085018261407e565b50608082015161410c608085018261407e565b5060a082015161411f60a085018261409c565b5060c082015161413260c085018261407e565b5060e082015161414560e085018261407e565b5061010082015161415a61010085018261408d565b5061012082015161416f61012085018261408d565b5061014082015161418461014085018261407e565b5061016082015161419961016085018261407e565b506101808201516141ae61018085018261407e565b506101a08201516141c36101a085018261407e565b50505050565b5f6141d483836140ab565b6101c08301905092915050565b5f602082019050919050565b5f6141f782614055565b614201818561405f565b935061420c8361406f565b805f5b8381101561423c57815161422388826141c9565b975061422e836141e1565b92505060018101905061420f565b5085935050505092915050565b5f6020820190508181035f83015261426181846141ed565b905092915050565b5f60c08201905061427c5f830189613d38565b6142896020830188613d38565b6142966040830187613fdd565b6142a36060830186613fdd565b6142b06080830185613fdd565b6142bd60a0830184613fdd565b979650505050505050565b5f60e0820190506142db5f83018a613d38565b6142e86020830189613fdd565b6142f56040830188613fdd565b6143026060830187613fdd565b61430f6080830186613ddc565b61431c60a0830185613fdd565b61432960c0830184613fdd565b98975050505050505050565b61433e81613dd0565b8114614348575f5ffd5b50565b5f8135905061435981614335565b92915050565b5f6020828403121561437457614373613cab565b5b5f6143818482850161434b565b91505092915050565b5f61ffff82169050919050565b6143a08161438a565b82525050565b5f6040820190506143b95f830185614397565b6143c66020830184614397565b9392505050565b6143d68161438a565b81146143e0575f5ffd5b50565b5f813590506143f1816143cd565b92915050565b5f5f5f6060848603121561440e5761440d613cab565b5b5f61441b8682870161434b565b935050602061442c868287016143e3565b925050604061443d868287016143e3565b9150509250925092565b7f4e6f742074686520636f6e7472616374206f776e6572000000000000000000005f82015250565b5f61447b601683613d6a565b915061448682614447565b602082019050919050565b5f6020820190508181035f8301526144a88161446f565b9050919050565b5f815190506144bd81613f11565b92915050565b5f602082840312156144d8576144d7613cab565b5b5f6144e5848285016144af565b91505092915050565b7f4e6f20746f6b656e2062616c616e636520746f207769746864726177000000005f82015250565b5f614522601c83613d6a565b915061452d826144ee565b602082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b5f6040820190506145695f830185613d38565b6145766020830184613fdd565b9392505050565b5f8115159050919050565b6145918161457d565b811461459b575f5ffd5b50565b5f815190506145ac81614588565b92915050565b5f602082840312156145c7576145c6613cab565b5b5f6145d48482850161459e565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61461b82613d88565b810181811067ffffffffffffffff8211171561463a576146396145e5565b5b80604052505050565b5f61464c613ca2565b90506146588282614612565b919050565b5f67ffffffffffffffff821115614677576146766145e5565b5b61468082613d88565b9050602081019050919050565b5f61469f61469a8461465d565b614643565b9050828152602081018484840111156146bb576146ba6145e1565b5b6146c6848285613d7a565b509392505050565b5f82601f8301126146e2576146e16145dd565b5b81516146f284826020860161468d565b91505092915050565b5f602082840312156147105761470f613cab565b5b5f82015167ffffffffffffffff81111561472d5761472c613caf565b5b614739848285016146ce565b91505092915050565b5f8151905061475081614335565b92915050565b5f6020828403121561476b5761476a613cab565b5b5f61477884828501614742565b91505092915050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f6147b5601283613d6a565b91506147c082614781565b602082019050919050565b5f6020820190508181035f8301526147e2816147a9565b9050919050565b7f4e6f7420656e6f756768206f7261636c652066656500000000000000000000005f82015250565b5f61481d601583613d6a565b9150614828826147e9565b602082019050919050565b5f6020820190508181035f83015261484a81614811565b9050919050565b7f6c696d6974207072696365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ab602283613d6a565b91506148b682614851565b604082019050919050565b5f6020820190508181035f8301526148d88161489f565b9050919050565b7f6f70656e207072696365206d7573742062652067726561746572207468616e205f8201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b5f614939602183613d6a565b9150614944826148df565b604082019050919050565b5f6020820190508181035f8301526149668161492d565b9050919050565b7f616d6f756e74496e206d7573742062652067726561746572207468616e2030005f82015250565b5f6149a1601f83613d6a565b91506149ac8261496d565b602082019050919050565b5f6020820190508181035f8301526149ce81614995565b9050919050565b5f815190506149e381613ce3565b92915050565b5f602082840312156149fe576149fd613cab565b5b5f614a0b848285016149d5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614a4b82613f08565b9150614a5683613f08565b9250828203905081811115614a6e57614a6d614a14565b5b92915050565b5f81905092915050565b50565b5f614a8c5f83614a74565b9150614a9782614a7e565b5f82019050919050565b5f614aab82614a81565b9150819050919050565b7f4661696c656420746f2073656e64206f7261636c6520666565000000000000005f82015250565b5f614ae9601983613d6a565b9150614af482614ab5565b602082019050919050565b5f6020820190508181035f830152614b1681614add565b9050919050565b7f4d757374207370656369667920616e20616d6f756e7420746f207377617000005f82015250565b5f614b51601e83613d6a565b9150614b5c82614b1d565b602082019050919050565b5f6020820190508181035f830152614b7e81614b45565b9050919050565b5f606082019050614b985f830186613d38565b614ba56020830185613d38565b614bb26040830184613fdd565b949350505050565b5f614bc482613f08565b9150614bcf83613f08565b9250828201905080821115614be757614be6614a14565b5b92915050565b5f604082019050614c005f830185613d38565b614c0d6020830184613d38565b9392505050565b5f614c1e82613f08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c5057614c4f614a14565b5b600182019050919050565b5f60a082019050614c6e5f830188613d38565b614c7b6020830187613d38565b614c886040830186613fdd565b614c956060830185613fdd565b614ca26080830184613fdd565b9695505050505050565b7f4f72646572206964206973206e6f742076616c696400000000000000000000005f82015250565b5f614ce0601583613d6a565b9150614ceb82614cac565b602082019050919050565b5f6020820190508181035f830152614d0d81614cd4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f72646572206973206e6f74206f70656e0000000000000000000000000000005f82015250565b5f614d75601183613d6a565b9150614d8082614d41565b602082019050919050565b5f6020820190508181035f830152614da281614d69565b9050919050565b7f4661696c656420746f2073656e642045544800000000000000000000000000005f82015250565b5f614ddd601283613d6a565b9150614de882614da9565b602082019050919050565b5f6020820190508181035f830152614e0a81614dd1565b9050919050565b7f496e76616c696420706167696e6174696f6e2072616e676500000000000000005f82015250565b5f614e45601883613d6a565b9150614e5082614e11565b602082019050919050565b5f6020820190508181035f830152614e7281614e39565b9050919050565b7f4e6f7420746865206f7261636c650000000000000000000000000000000000005f82015250565b5f614ead600e83613d6a565b9150614eb882614e79565b602082019050919050565b5f6020820190508181035f830152614eda81614ea1565b9050919050565b5f819050919050565b5f614f04614eff614efa84614ee1565b613e94565b613f08565b9050919050565b614f1481614eea565b82525050565b5f604082019050614f2d5f830185613d38565b614f3a6020830184614f0b565b9392505050565b5f62ffffff82169050919050565b614f5881614f41565b82525050565b614f6781613cb3565b82525050565b61010082015f820151614f825f85018261408d565b506020820151614f95602085018261408d565b506040820151614fa86040850182614f4f565b506060820151614fbb606085018261408d565b506080820151614fce608085018261407e565b5060a0820151614fe160a085018261407e565b5060c0820151614ff460c085018261407e565b5060e082015161500760e0850182614f5e565b50505050565b5f610100820190506150215f830184614f6d565b92915050565b7f4661696c656420746f2070726f636573732073776170000000000000000000005f82015250565b5f61505b601683613d6a565b915061506682615027565b602082019050919050565b5f6020820190508181035f8301526150888161504f565b9050919050565b7f4f72646572206973206e6f7420706c61636564207965742e00000000000000005f82015250565b5f6150c3601883613d6a565b91506150ce8261508f565b602082019050919050565b5f6020820190508181035f8301526150f0816150b7565b9050919050565b5f61510182613f08565b915061510c83613f08565b925082820261511a81613f08565b9150828204841483151761513157615130614a14565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61516f82613f08565b915061517a83613f08565b92508261518a57615189615138565b5b82820490509291505056fea2646970667358221220e8ed9b79b2b8d0d937a9d5f2ddf0424b65a5e75aed317cea64917ad6427856cc64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b
-----Decoded View---------------
Arg [0] : _swapRouter (address): 0xE592427A0AEce92De3Edee1F18E0157C05861564
Arg [1] : _feeTracker (address): 0x9f0022C88314DF8686355CE3e87acc269296C20B
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
Arg [1] : 0000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b
Deployed Bytecode Sourcemap
60:17979:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17359:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17643:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17100:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;286:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3818:2551;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14785:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6413:1017;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1406:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13005:1709;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10291:2121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15029:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;201:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1860:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;120:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1828:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1439:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;260:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15170:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;495:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3501:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1532:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;549:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7438:2782;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;324:50;;;;;;;;;;;;;;;;;;;;;;:::o;17359:276::-;2114:5;;;;;;;;;;;2100:19;;:10;:19;;;2092:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;17436:12:::1;17458:5;17436:28;;17475:15;17493:5;:15;;;17517:4;17493:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17475:48;;17552:1;17542:7;:11;17534:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17597:5;:14;;;17612:5;;;;;;;;;;;17619:7;17597:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17425:210;;17359:276:::0;:::o;17643:315::-;17708:18;17728:20;17750:14;17777:21;17808:12;17777:44;;17839:14;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17832:28;;17880:14;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17871:32;;17925:14;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17914:36;;17766:192;17643:315;;;;;:::o;17100:211::-;2114:5;;;;;;;;;;;2100:19;;:10;:19;;;2092:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;17180:15:::1;17198:21;17180:39;;17248:1;17238:7;:11;17230:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;17283:2;:11;;:20;17295:7;17283:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17169:142;17100:211:::0;:::o;286:29::-;;;;;;;;;;;;;:::o;3818:2551::-;3979:9;;3966;:22;;3958:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4044:1;4032:10;:13;4024:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4113:1;4102:9;:12;4094:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4180:1;4170:8;:11;4162:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4231:24;4266:10;;;;;;;;;;;:28;;;4295:10;4266:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4231:76;;4357:1;4321:38;;:14;:26;4336:10;4321:26;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;:62;;;;;4381:1;4363:20;;:8;:20;;;;4321:62;4318:117;;;4427:8;4398:14;:26;4413:10;4398:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4318:117;4468:1;4451:19;;:7;:19;;;4448:36;;4480:4;;;;;;;;;;;4472:12;;4448:36;4516:1;4498:20;;:8;:20;;;4495:38;;4529:4;;;;;;;;;;;4520:13;;4495:38;4562:9;;4550;:21;:47;;;;;4592:4;;;;;;;;;;;4575:22;;:7;:22;;;4550:47;4546:892;;;4624:4;;;;;;;;;;;4614:14;;4666:9;;4654;:21;;;;:::i;:::-;4643:32;;4690:18;4717:4;;;;;;;;;;;4690:32;;4737:12;:20;;;4765:8;4737:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4847:9;4862:6;;;;;;;;;;;:11;;4881:9;;4862:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:49;;;4918:4;4910:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4599:365;;4546:892;;;5002:1;4991:8;:12;4983:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5097:12;5119:7;5097:30;;5142:5;:18;;;5161:10;5181:4;5188:8;5142:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5280:1;5270:9;:11;5267:160;;;5302:9;5317:6;;;;;;;;;;;:11;;5336:9;5317:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5301:49;;;5377:4;5369:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;5282:145;5267:160;4968:470;4546:892;5458:19;5480:43;5495:7;5503:8;5512:10;5480:14;:43::i;:::-;5458:65;;5575:8;5534:10;:23;5545:11;5534:23;;;;;;;;;;;:37;;;:49;;;;;;;:::i;:::-;;;;;;;;5623:12;5645:7;5623:30;;5719:8;5667:5;:15;;;5691:4;5706:10;;;;;;;;;;;5667:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;5664:130;;;5742:5;:13;;;5764:10;;;;;;;;;;;5776:17;5742:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5664:130;5830:21;5854:255;;;;;;;;5881:10;5854:255;;;;;;5917:9;5854:255;;;;5953:11;5854:255;;;;5989:8;5854:255;;;;6019:1;5854:255;;;;;;6055:15;5854:255;;;;6096:1;5854:255;;;5830:279;;6122:11;;:13;;;;;;;;;:::i;:::-;;;;;;6168:8;6146:6;:19;6153:11;;6146:19;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6187:12;:24;6200:10;6187:24;;;;;;;;;;;;;;;6217:11;;6187:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6240:14;:26;6255:10;6240:26;;;;;;;;;;;;;;;;:28;;;;;;;;;:::i;:::-;;;;;;6298:10;6286:75;;;6310:7;6319:8;6329:10;6341:9;6352:8;6286:75;;;;;;;;;;:::i;:::-;;;;;;;;3947:2422;;;;3818:2551;;;;;:::o;14785:193::-;2114:5;;;;;;;;;;;2100:19;;:10;:19;;;2092:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14922:11:::1;14897:10;;:37;;;;;;;;;;;;;;;;;;14952:10;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14945:4;;:25;;;;;;;;;;;;;;;;;;14785:193:::0;:::o;6413:1017::-;6521:14;:26;6536:10;6521:26;;;;;;;;;;;;;;;;6509:10;:38;;6501:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6583:15;6601:12;:24;6614:10;6601:24;;;;;;;;;;;;;;;6626:10;6601:36;;;;;;;;:::i;:::-;;;;;;;;;;6583:54;;6680:1;6656:6;:15;6663:7;6656:15;;;;;;;;;;;:22;;;;;;;;;;;;:25;;;:55;;;;;6710:1;6685:6;:15;6692:7;6685:15;;;;;;;;;;;:24;;;:26;6656:55;6648:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;6799:1;6776:6;:15;6783:7;6776:15;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;6837:15;6811:6;:15;6818:7;6811:15;;;;;;;;;;;:25;;:41;;;;6905:19;6927:6;:15;6934:7;6927:15;;;;;;;;;;;:27;;;6905:49;;7001:4;;;;;;;;;;;6968:37;;:10;:23;6979:11;6968:23;;;;;;;;;;;:31;;;;;;;;;;;;:37;;;6965:367;;7037:4;;;;;;;;;;;7031:20;;;7052:6;:15;7059:7;7052:15;;;;;;;;;;;:24;;;7031:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:12;7111:10;:15;;7134:6;:15;7141:7;7134:15;;;;;;;;;;;:24;;;7111:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7092:71;;;7186:7;7178:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7016:212;6965:367;;;7253:10;:23;7264:11;7253:23;;;;;;;;;;;:31;;;;;;;;;;;;7246:48;;;7295:10;7307:6;:15;7314:7;7307:15;;;;;;;;;;;:24;;;7246:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6965:367;7398:6;:15;7405:7;7398:15;;;;;;;;;;;:24;;;7357:10;:23;7368:11;7357:23;;;;;;;;;;;:37;;;:65;;;;;;;:::i;:::-;;;;;;;;6463:967;;6413:1017;:::o;1406:26::-;;;;:::o;13005:1709::-;13103:17;13150:12;:18;13163:4;13150:18;;;;;;;;;;;;;;;:25;;;;13143:4;:32;13139:97;;;13199:12;:18;13212:4;13199:18;;;;;;;;;;;;;;;:25;;;;13192:32;;13139:97;13264:4;13254:6;:14;;13246:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13310:12;13332:6;13325:4;:13;;;;:::i;:::-;13310:28;;13349:33;13400:4;13385:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;13349:56;;13431:9;13443:1;13431:13;;13426:1246;13450:4;13446:1;:8;13426:1246;;;13476:18;13497:12;:18;13510:4;13497:18;;;;;;;;;;;;;;;13525:1;13516:6;:10;;;;:::i;:::-;13497:30;;;;;;;;:::i;:::-;;;;;;;;;;13476:51;;13542:19;13564:6;:18;13571:10;13564:18;;;;;;;;;;;:30;;;13542:52;;13611:25;13639:912;;;;;;;;13692:1;13683:6;:10;;;;:::i;:::-;13639:912;;;;13718:6;:18;13725:10;13718:18;;;;;;;;;;;:23;;;;;;;;;;;;13639:912;;;;;;13771:6;:18;13778:10;13771:18;;;;;;;;;;;:28;;;13639:912;;;;13831:6;:18;13838:10;13831:18;;;;;;;;;;;:30;;;13639:912;;;;13890:6;:18;13897:10;13890:18;;;;;;;;;;;:27;;;13639:912;;;;13961:6;:18;13968:10;13961:18;;;;;;;;;;;:25;;;;;;;;;;;;13639:912;;;;;;14057:6;:18;14064:10;14057:18;;;;;;;;;;;:28;;;13639:912;;;;14115:6;:18;14122:10;14115:18;;;;;;;;;;;:28;;;13639:912;;;;14171:10;:23;14182:11;14171:23;;;;;;;;;;;:31;;;;;;;;;;;;13639:912;;;;;;14231:10;:23;14242:11;14231:23;;;;;;;;;;;:32;;;;;;;;;;;;13639:912;;;;;;14294:10;:23;14305:11;14294:23;;;;;;;;;;;:34;;;13639:912;;;;14362:10;:23;14373:11;14362:23;;;;;;;;;;;:37;;;13639:912;;;;14429:10;:23;14440:11;14429:23;;;;;;;;;;;:33;;;13639:912;;;;14497:10;:23;14508:11;14497:23;;;;;;;;;;;:38;;;13639:912;;;13611:940;;14651:9;14630:15;14646:1;14630:18;;;;;;;;:::i;:::-;;;;;;;:30;;;;13461:1211;;;13456:3;;;;;;;13426:1246;;;;14691:15;14684:22;;;;13005:1709;;;;;:::o;10291:2121::-;2282:6;;;;;;;;;;;2268:20;;:10;:20;;;2260:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10529:20:::1;10599:4;;;;;;;;;;;10563:40;;:10;:23;10574:11;10563:23;;;;;;;;;;;:32;;;;;;;;;;;;:40;;::::0;10560:203:::1;;10633:21;10618:36;;10560:203;;;10705:10;:23;10716:11;10705:23;;;;;;;;;;;:32;;;;;;;;;;;;10698:50;;;10757:4;10698:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10683:80;;10560:203;10776:15;10794:10;:23;10805:11;10794:23;;;;;;;;;;;:31;;;;;;;;;;;;10776:49;;10836:16;10855:10;:23;10866:11;10855:23;;;;;;;;;;;:32;;;;;;;;;;;;10836:51;;10898:13;10914:10;:23;10925:11;10914:23;;;;;;;;;;;:37;;;10898:53;;10962:21;10986:8;10962:32;;11092:16;11036:7;11029:25;;;11063:4;11077:10;;;;;;;;;;;11029:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;11026:149;;;11130:7;11123:23;;;11155:10;;;;;;;;;;;11168:6;11123:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11026:149;11188:48;11239:348;;;;;;;;11298:7;11239:348;;;;;;11330:8;11239:348;;;;;;11358:4;11239:348;;;;;;11396:4;11239:348;;;;;;11444:10;11426:15;:28;;;;:::i;:::-;11239:348;;;;11479:16;11239:348;;;;11528:1;11239:348;;;;11563:1;11239:348;;;;::::0;11188:399:::1;;11600:14;11617:10;;;;;;;;;;;:27;;;11645:6;11617:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11600:52;;11760:4;;;;;;;;;;;11750:14;;:8;:14;;::::0;11746:78:::1;;11787:4;;;;;;;;;;;11781:20;;;11802:9;11781:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11746:78;11836:18;11904:4;;;;;;;;;;;11868:40;;:10;:23;11879:11;11868:23;;;;;;;;;;;:32;;;;;;;;;;;;:40;;::::0;11865:199:::1;;11936:21;11923:34;;11865:199;;;12006:10;:23;12017:11;12006:23;;;;;;;;;;;:32;;;;;;;;;;;;11999:50;;;12058:4;11999:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11986:78;;11865:199;12075:14;12105:12;12092:10;:25;;;;:::i;:::-;12075:42;;12143:1;12136:6;:8;12128:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;12270:6;12234:10;:23;12245:11;12234:23;;;;;;;;;;;:33;;:42;;;;12403:1;12287:12;:45;12300:10;:23;12311:11;12300:23;;;;;;;;;;;:31;;;;;;;;;;;;12287:45;;;;;;;;;;;;;;;:79;12333:10;:23;12344:11;12333:23;;;;;;;;;;;:32;;;;;;;;;;;;12287:79;;;;;;;;;;;;;;;:115;12367:10;:23;12378:11;12367:23;;;;;;;;;;;:34;;;12287:115;;;;;;;;;;;:117;;;;10358:2054;;;;;;;;;10291:2121:::0;:::o;15029:90::-;2114:5;;;;;;;;;;;2100:19;;:10;:19;;;2092:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15104:7:::1;15095:6;;:16;;;;;;;;;;;;;;;;;;15029:90:::0;:::o;201:21::-;;;;;;;;;;;;;:::o;1860:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;120:20::-;;;;;;;;;;;;;:::o;1828:25::-;;;;:::o;1439:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;260:19::-;;;;;;;;;;;;;:::o;15170:99::-;2114:5;;;;;;;;;;;2100:19;;:10;:19;;;2092:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15251:10:::1;15239:9;:22;;;;15170:99:::0;:::o;495:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3501:269::-;3652:14;3617:10;:18;3628:6;3617:18;;;;;;;;;;;;;;;:32;;;:49;;;;;;;;;;;;;;;;;;3730:32;3677:10;:18;3688:6;3677:18;;;;;;;;;;;;;;;:50;;;:85;;;;;;;;;;;;;;;;;;3501:269;;;:::o;1532:46::-;;;;;;;;;;;;;;;;;:::o;549:34::-;;;;:::o;7438:2782::-;7555:14;:26;7570:10;7555:26;;;;;;;;;;;;;;;;7543:10;:38;;7535:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7617:15;7635:12;:24;7648:10;7635:24;;;;;;;;;;;;;;;7660:10;7635:36;;;;;;;;:::i;:::-;;;;;;;;;;7617:54;;7714:1;7690:6;:15;7697:7;7690:15;;;;;;;;;;;:22;;;;;;;;;;;;:25;;;:55;;;;;7744:1;7719:6;:15;7726:7;7719:15;;;;;;;;;;;:24;;;:26;7690:55;7682:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7833:1;7810:6;:15;7817:7;7810:15;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;7883:15;7857:6;:15;7864:7;7857:15;;;;;;;;;;;:25;;:41;;;;7955:19;7977:6;:15;7984:7;7977:15;;;;;;;;;;;:27;;;7955:49;;8057:1;8023:10;:23;8034:11;8023:23;;;;;;;;;;;:33;;;:35;8015:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8097:21;8121:10;:23;8132:11;8121:23;;;;;;;;;;;:37;;;8097:61;;8169:22;8194:10;:23;8205:11;8194:23;;;;;;;;;;;:33;;;8169:58;;8238:18;8259:6;:15;8266:7;8259:15;;;;;;;;;;;:24;;;8238:45;;8294:13;8332;8323:6;8310:10;:19;;;;:::i;:::-;:35;;;;:::i;:::-;8294:51;;8356:19;8403:6;8395:5;8378:14;:22;;;;:::i;:::-;:31;;;;:::i;:::-;8356:53;;8424:15;8442:10;;;;;;;;;;;:27;;;8470:10;8442:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8424:57;;8492:17;8512:10;:21;8523:9;8512:21;;;;;;;;;;;;;;;:35;;;;;;;;;;;;8492:55;;8558:14;8604:5;8590:10;8576:24;;:11;:24;;;;:::i;:::-;8575:34;;;;:::i;:::-;8558:51;;8622:22;8661:9;8647:11;:23;;;;:::i;:::-;8622:48;;8691:21;8736:1;8726:9;:11;:53;;;;;8777:1;8741:38;;:14;:26;8756:10;8741:26;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;8726:53;8723:349;;;8795:19;8817:10;;;;;;;;;;;:27;;;8845:14;:26;8860:10;8845:26;;;;;;;;;;;;;;;;;;;;;;;;;8817:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8795:77;;8887:32;8922:10;:25;8933:13;8922:25;;;;;;;;;;;;;;;:57;;;;;;;;;;;;8887:92;;9055:5;9026:25;9014:37;;:9;:37;;;;:::i;:::-;9013:47;;;;:::i;:::-;8994:66;;8780:292;;8723:349;9121:4;;;;;;;;;;;9087:38;;:10;:23;9098:11;9087:23;;;;;;;;;;;:32;;;;;;;;;;;;:38;;;9084:1059;;9151:12;9235:10;:15;;9258:17;9235:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:58;;;;;9315:1;9298:16;:18;:60;;;;;9356:1;9320:38;;:14;:26;9335:10;9320:26;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;9298:60;9295:200;;;9435:14;:26;9450:10;9435:26;;;;;;;;;;;;;;;;;;;;;;;;;:31;;9474:16;9435:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9422:73;;;;;9295:200;9558:5;;;;;;;;;;;:10;;9586:16;9576:9;:26;;;;:::i;:::-;9558:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9545:62;;;;;9136:483;9084:1059;;;9689:10;:23;9700:11;9689:23;;;;;;;;;;;:32;;;;;;;;;;;;9682:49;;;9732:10;9744:17;9682:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9797:1;9780:16;:18;:60;;;;;9838:1;9802:38;;:14;:26;9817:10;9802:26;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;9780:60;9777:220;;;9909:10;:23;9920:11;9909:23;;;;;;;;;;;:32;;;;;;;;;;;;9902:49;;;9952:14;:26;9967:10;9952:26;;;;;;;;;;;;;;;;;;;;;;;;;9980:16;9902:95;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9777:220;10054:10;:23;10065:11;10054:23;;;;;;;;;;;:32;;;;;;;;;;;;10047:49;;;10097:5;;;;;;;;;;;10114:16;10104:9;:26;;;;:::i;:::-;10047:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9084:1059;10195:17;10153:10;:23;10164:11;10153:23;;;;;;;;;;;:38;;;:59;;;;;;;:::i;:::-;;;;;;;;7487:2733;;;;;;;;;;;;7438:2782;:::o;16259:802::-;16352:4;16434:27;16450:10;16434:15;:27::i;:::-;16421:40;;16529:1;16485:12;:21;16498:7;16485:21;;;;;;;;;;;;;;;:31;16507:8;16485:31;;;;;;;;;;;;;;;:43;16517:10;16485:43;;;;;;;;;;;;:45;16482:113;;;16552:12;:21;16565:7;16552:21;;;;;;;;;;;;;;;:31;16574:8;16552:31;;;;;;;;;;;;;;;:43;16584:10;16552:43;;;;;;;;;;;;16545:50;;;;16482:113;16616:27;16646:243;;;;;;;;16679:7;16646:243;;;;;;16710:8;16646:243;;;;;;16744:10;16646:243;;;;16783:1;16646:243;;;;16809:1;16646:243;;;;16876:1;16646:243;;;16616:273;;16900:10;;:12;;;;;;;;;:::i;:::-;;;;;;16948:10;16923;:22;16934:10;;16923:22;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17015:10;;16969:12;:21;16982:7;16969:21;;;;;;;;;;;;;;;:31;16991:8;16969:31;;;;;;;;;;;;;;;:43;17001:10;16969:43;;;;;;;;;;;:56;;;;17043:10;;17036:17;;;16259:802;;;;;;:::o;15356:284::-;15423:7;15443:17;15488:1;15469:16;15474:10;15469:4;:16::i;:::-;:20;;;;:::i;:::-;15463:1;:27;;15443:47;;15543:20;15593:9;15580;15567:10;:22;;;;:::i;:::-;15566:36;;;;:::i;:::-;15543:59;;15620:12;15613:19;;;;15356:284;;;:::o;15710:537::-;15757:7;15777:14;15794:1;15777:18;;15815:6;15810:1;:11;15806:46;;15831:3;15825:9;;;;;15846:3;15836:13;;;;;:::i;:::-;;;15806:46;15871:5;15866:1;:10;15862:44;;15887:2;15881:8;;;;;15901:2;15891:12;;;;;:::i;:::-;;;15862:44;15925:5;15920:1;:10;15916:44;;15941:2;15935:8;;;;;15955:2;15945:12;;;;;:::i;:::-;;;15916:44;15979:5;15974:1;:10;15970:44;;15995:2;15989:8;;;;;16009:2;15999:12;;;;;:::i;:::-;;;15970:44;16033:4;16028:1;:9;16024:43;;16049:1;16043:7;;;;;16063:1;16053:11;;;;;:::i;:::-;;;16024:43;16086:4;16081:1;:9;16077:43;;16102:1;16096:7;;;;;16116:1;16106:11;;;;;:::i;:::-;;;16077:43;16139:4;16134:1;:9;16130:43;;16155:1;16149:7;;;;;16169:1;16159:11;;;;;:::i;:::-;;;16130:43;16192:4;16187:1;:9;16183:33;;16212:1;16202:11;;;;;:::i;:::-;;;16183:33;16233:6;16226:13;;;15710:537;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:99::-;1580:6;1614:5;1608:12;1598:22;;1528:99;;;:::o;1633:169::-;1717:11;1751:6;1746:3;1739:19;1791:4;1786:3;1782:14;1767:29;;1633:169;;;;:::o;1808:139::-;1897:6;1892:3;1887;1881:23;1938:1;1929:6;1924:3;1920:16;1913:27;1808:139;;;:::o;1953:102::-;1994:6;2045:2;2041:7;2036:2;2029:5;2025:14;2021:28;2011:38;;1953:102;;;:::o;2061:377::-;2149:3;2177:39;2210:5;2177:39;:::i;:::-;2232:71;2296:6;2291:3;2232:71;:::i;:::-;2225:78;;2312:65;2370:6;2365:3;2358:4;2351:5;2347:16;2312:65;:::i;:::-;2402:29;2424:6;2402:29;:::i;:::-;2397:3;2393:39;2386:46;;2153:285;2061:377;;;;:::o;2444:86::-;2479:7;2519:4;2512:5;2508:16;2497:27;;2444:86;;;:::o;2536:112::-;2619:22;2635:5;2619:22;:::i;:::-;2614:3;2607:35;2536:112;;:::o;2654:616::-;2839:4;2877:2;2866:9;2862:18;2854:26;;2926:9;2920:4;2916:20;2912:1;2901:9;2897:17;2890:47;2954:78;3027:4;3018:6;2954:78;:::i;:::-;2946:86;;3079:9;3073:4;3069:20;3064:2;3053:9;3049:18;3042:48;3107:78;3180:4;3171:6;3107:78;:::i;:::-;3099:86;;3195:68;3259:2;3248:9;3244:18;3235:6;3195:68;:::i;:::-;2654:616;;;;;;:::o;3276:104::-;3321:7;3350:24;3368:5;3350:24;:::i;:::-;3339:35;;3276:104;;;:::o;3386:138::-;3467:32;3493:5;3467:32;:::i;:::-;3460:5;3457:43;3447:71;;3514:1;3511;3504:12;3447:71;3386:138;:::o;3530:155::-;3584:5;3622:6;3609:20;3600:29;;3638:41;3673:5;3638:41;:::i;:::-;3530:155;;;;:::o;3691:345::-;3758:6;3807:2;3795:9;3786:7;3782:23;3778:32;3775:119;;;3813:79;;:::i;:::-;3775:119;3933:1;3958:61;4011:7;4002:6;3991:9;3987:22;3958:61;:::i;:::-;3948:71;;3904:125;3691:345;;;;:::o;4042:60::-;4070:3;4091:5;4084:12;;4042:60;;;:::o;4108:142::-;4158:9;4191:53;4209:34;4218:24;4236:5;4218:24;:::i;:::-;4209:34;:::i;:::-;4191:53;:::i;:::-;4178:66;;4108:142;;;:::o;4256:126::-;4306:9;4339:37;4370:5;4339:37;:::i;:::-;4326:50;;4256:126;;;:::o;4388:146::-;4458:9;4491:37;4522:5;4491:37;:::i;:::-;4478:50;;4388:146;;;:::o;4540:171::-;4647:57;4698:5;4647:57;:::i;:::-;4642:3;4635:70;4540:171;;:::o;4717:262::-;4830:4;4868:2;4857:9;4853:18;4845:26;;4881:91;4969:1;4958:9;4954:17;4945:6;4881:91;:::i;:::-;4717:262;;;;:::o;4985:77::-;5022:7;5051:5;5040:16;;4985:77;;;:::o;5068:122::-;5141:24;5159:5;5141:24;:::i;:::-;5134:5;5131:35;5121:63;;5180:1;5177;5170:12;5121:63;5068:122;:::o;5196:139::-;5242:5;5280:6;5267:20;5258:29;;5296:33;5323:5;5296:33;:::i;:::-;5196:139;;;;:::o;5341:911::-;5436:6;5444;5452;5460;5468;5517:3;5505:9;5496:7;5492:23;5488:33;5485:120;;;5524:79;;:::i;:::-;5485:120;5644:1;5669:53;5714:7;5705:6;5694:9;5690:22;5669:53;:::i;:::-;5659:63;;5615:117;5771:2;5797:53;5842:7;5833:6;5822:9;5818:22;5797:53;:::i;:::-;5787:63;;5742:118;5899:2;5925:53;5970:7;5961:6;5950:9;5946:22;5925:53;:::i;:::-;5915:63;;5870:118;6027:2;6053:53;6098:7;6089:6;6078:9;6074:22;6053:53;:::i;:::-;6043:63;;5998:118;6155:3;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6126:119;5341:911;;;;;;;;:::o;6258:329::-;6317:6;6366:2;6354:9;6345:7;6341:23;6337:32;6334:119;;;6372:79;;:::i;:::-;6334:119;6492:1;6517:53;6562:7;6553:6;6542:9;6538:22;6517:53;:::i;:::-;6507:63;;6463:117;6258:329;;;;:::o;6593:118::-;6680:24;6698:5;6680:24;:::i;:::-;6675:3;6668:37;6593:118;;:::o;6717:222::-;6810:4;6848:2;6837:9;6833:18;6825:26;;6861:71;6929:1;6918:9;6914:17;6905:6;6861:71;:::i;:::-;6717:222;;;;:::o;6945:619::-;7022:6;7030;7038;7087:2;7075:9;7066:7;7062:23;7058:32;7055:119;;;7093:79;;:::i;:::-;7055:119;7213:1;7238:53;7283:7;7274:6;7263:9;7259:22;7238:53;:::i;:::-;7228:63;;7184:117;7340:2;7366:53;7411:7;7402:6;7391:9;7387:22;7366:53;:::i;:::-;7356:63;;7311:118;7468:2;7494:53;7539:7;7530:6;7519:9;7515:22;7494:53;:::i;:::-;7484:63;;7439:118;6945:619;;;;;:::o;7570:140::-;7663:6;7697:5;7691:12;7681:22;;7570:140;;;:::o;7716:210::-;7841:11;7875:6;7870:3;7863:19;7915:4;7910:3;7906:14;7891:29;;7716:210;;;;:::o;7932:158::-;8025:4;8048:3;8040:11;;8078:4;8073:3;8069:14;8061:22;;7932:158;;;:::o;8096:108::-;8173:24;8191:5;8173:24;:::i;:::-;8168:3;8161:37;8096:108;;:::o;8210:::-;8287:24;8305:5;8287:24;:::i;:::-;8282:3;8275:37;8210:108;;:::o;8324:102::-;8397:22;8413:5;8397:22;:::i;:::-;8392:3;8385:35;8324:102;;:::o;8502:2684::-;8641:6;8636:3;8632:16;8740:4;8733:5;8729:16;8723:23;8759:63;8816:4;8811:3;8807:14;8793:12;8759:63;:::i;:::-;8658:174;8914:4;8907:5;8903:16;8897:23;8933:63;8990:4;8985:3;8981:14;8967:12;8933:63;:::i;:::-;8842:164;9093:4;9086:5;9082:16;9076:23;9112:63;9169:4;9164:3;9160:14;9146:12;9112:63;:::i;:::-;9016:169;9274:4;9267:5;9263:16;9257:23;9293:63;9350:4;9345:3;9341:14;9327:12;9293:63;:::i;:::-;9195:171;9452:4;9445:5;9441:16;9435:23;9471:63;9528:4;9523:3;9519:14;9505:12;9471:63;:::i;:::-;9376:168;9628:4;9621:5;9617:16;9611:23;9647:59;9700:4;9695:3;9691:14;9677:12;9647:59;:::i;:::-;9554:162;9803:4;9796:5;9792:16;9786:23;9822:63;9879:4;9874:3;9870:14;9856:12;9822:63;:::i;:::-;9726:169;9982:4;9975:5;9971:16;9965:23;10001:63;10058:4;10053:3;10049:14;10035:12;10001:63;:::i;:::-;9905:169;10159:6;10152:5;10148:18;10142:25;10180:65;10237:6;10232:3;10228:16;10214:12;10180:65;:::i;:::-;10084:171;10341:6;10334:5;10330:18;10324:25;10362:65;10419:6;10414:3;10410:16;10396:12;10362:65;:::i;:::-;10265:172;10525:6;10518:5;10514:18;10508:25;10546:65;10603:6;10598:3;10594:16;10580:12;10546:65;:::i;:::-;10447:174;10712:6;10705:5;10701:18;10695:25;10733:65;10790:6;10785:3;10781:16;10767:12;10733:65;:::i;:::-;10631:177;10895:6;10888:5;10884:18;10878:25;10916:65;10973:6;10968:3;10964:16;10950:12;10916:65;:::i;:::-;10818:173;11083:6;11076:5;11072:18;11066:25;11104:65;11161:6;11156:3;11152:16;11138:12;11104:65;:::i;:::-;11001:178;8610:2576;8502:2684;;:::o;11192:285::-;11313:10;11334:98;11428:3;11420:6;11334:98;:::i;:::-;11464:6;11459:3;11455:16;11441:30;;11192:285;;;;:::o;11483:139::-;11579:4;11611;11606:3;11602:14;11594:22;;11483:139;;;:::o;11702:940::-;11873:3;11902:80;11976:5;11902:80;:::i;:::-;11998:112;12103:6;12098:3;11998:112;:::i;:::-;11991:119;;12134:82;12210:5;12134:82;:::i;:::-;12239:7;12270:1;12255:362;12280:6;12277:1;12274:13;12255:362;;;12356:6;12350:13;12383:115;12494:3;12479:13;12383:115;:::i;:::-;12376:122;;12521:86;12600:6;12521:86;:::i;:::-;12511:96;;12315:302;12302:1;12299;12295:9;12290:14;;12255:362;;;12259:14;12633:3;12626:10;;11878:764;;;11702:940;;;;:::o;12648:477::-;12843:4;12881:2;12870:9;12866:18;12858:26;;12930:9;12924:4;12920:20;12916:1;12905:9;12901:17;12894:47;12958:160;13113:4;13104:6;12958:160;:::i;:::-;12950:168;;12648:477;;;;:::o;13131:775::-;13364:4;13402:3;13391:9;13387:19;13379:27;;13416:71;13484:1;13473:9;13469:17;13460:6;13416:71;:::i;:::-;13497:72;13565:2;13554:9;13550:18;13541:6;13497:72;:::i;:::-;13579;13647:2;13636:9;13632:18;13623:6;13579:72;:::i;:::-;13661;13729:2;13718:9;13714:18;13705:6;13661:72;:::i;:::-;13743:73;13811:3;13800:9;13796:19;13787:6;13743:73;:::i;:::-;13826;13894:3;13883:9;13879:19;13870:6;13826:73;:::i;:::-;13131:775;;;;;;;;;:::o;13912:878::-;14169:4;14207:3;14196:9;14192:19;14184:27;;14221:71;14289:1;14278:9;14274:17;14265:6;14221:71;:::i;:::-;14302:72;14370:2;14359:9;14355:18;14346:6;14302:72;:::i;:::-;14384;14452:2;14441:9;14437:18;14428:6;14384:72;:::i;:::-;14466;14534:2;14523:9;14519:18;14510:6;14466:72;:::i;:::-;14548:69;14612:3;14601:9;14597:19;14588:6;14548:69;:::i;:::-;14627:73;14695:3;14684:9;14680:19;14671:6;14627:73;:::i;:::-;14710;14778:3;14767:9;14763:19;14754:6;14710:73;:::i;:::-;13912:878;;;;;;;;;;:::o;14796:118::-;14867:22;14883:5;14867:22;:::i;:::-;14860:5;14857:33;14847:61;;14904:1;14901;14894:12;14847:61;14796:118;:::o;14920:135::-;14964:5;15002:6;14989:20;14980:29;;15018:31;15043:5;15018:31;:::i;:::-;14920:135;;;;:::o;15061:325::-;15118:6;15167:2;15155:9;15146:7;15142:23;15138:32;15135:119;;;15173:79;;:::i;:::-;15135:119;15293:1;15318:51;15361:7;15352:6;15341:9;15337:22;15318:51;:::i;:::-;15308:61;;15264:115;15061:325;;;;:::o;15392:89::-;15428:7;15468:6;15461:5;15457:18;15446:29;;15392:89;;;:::o;15487:115::-;15572:23;15589:5;15572:23;:::i;:::-;15567:3;15560:36;15487:115;;:::o;15608:324::-;15725:4;15763:2;15752:9;15748:18;15740:26;;15776:69;15842:1;15831:9;15827:17;15818:6;15776:69;:::i;:::-;15855:70;15921:2;15910:9;15906:18;15897:6;15855:70;:::i;:::-;15608:324;;;;;:::o;15938:120::-;16010:23;16027:5;16010:23;:::i;:::-;16003:5;16000:34;15990:62;;16048:1;16045;16038:12;15990:62;15938:120;:::o;16064:137::-;16109:5;16147:6;16134:20;16125:29;;16163:32;16189:5;16163:32;:::i;:::-;16064:137;;;;:::o;16207:611::-;16280:6;16288;16296;16345:2;16333:9;16324:7;16320:23;16316:32;16313:119;;;16351:79;;:::i;:::-;16313:119;16471:1;16496:51;16539:7;16530:6;16519:9;16515:22;16496:51;:::i;:::-;16486:61;;16442:115;16596:2;16622:52;16666:7;16657:6;16646:9;16642:22;16622:52;:::i;:::-;16612:62;;16567:117;16723:2;16749:52;16793:7;16784:6;16773:9;16769:22;16749:52;:::i;:::-;16739:62;;16694:117;16207:611;;;;;:::o;16824:172::-;16964:24;16960:1;16952:6;16948:14;16941:48;16824:172;:::o;17002:366::-;17144:3;17165:67;17229:2;17224:3;17165:67;:::i;:::-;17158:74;;17241:93;17330:3;17241:93;:::i;:::-;17359:2;17354:3;17350:12;17343:19;;17002:366;;;:::o;17374:419::-;17540:4;17578:2;17567:9;17563:18;17555:26;;17627:9;17621:4;17617:20;17613:1;17602:9;17598:17;17591:47;17655:131;17781:4;17655:131;:::i;:::-;17647:139;;17374:419;;;:::o;17799:143::-;17856:5;17887:6;17881:13;17872:22;;17903:33;17930:5;17903:33;:::i;:::-;17799:143;;;;:::o;17948:351::-;18018:6;18067:2;18055:9;18046:7;18042:23;18038:32;18035:119;;;18073:79;;:::i;:::-;18035:119;18193:1;18218:64;18274:7;18265:6;18254:9;18250:22;18218:64;:::i;:::-;18208:74;;18164:128;17948:351;;;;:::o;18305:178::-;18445:30;18441:1;18433:6;18429:14;18422:54;18305:178;:::o;18489:366::-;18631:3;18652:67;18716:2;18711:3;18652:67;:::i;:::-;18645:74;;18728:93;18817:3;18728:93;:::i;:::-;18846:2;18841:3;18837:12;18830:19;;18489:366;;;:::o;18861:419::-;19027:4;19065:2;19054:9;19050:18;19042:26;;19114:9;19108:4;19104:20;19100:1;19089:9;19085:17;19078:47;19142:131;19268:4;19142:131;:::i;:::-;19134:139;;18861:419;;;:::o;19286:332::-;19407:4;19445:2;19434:9;19430:18;19422:26;;19458:71;19526:1;19515:9;19511:17;19502:6;19458:71;:::i;:::-;19539:72;19607:2;19596:9;19592:18;19583:6;19539:72;:::i;:::-;19286:332;;;;;:::o;19624:90::-;19658:7;19701:5;19694:13;19687:21;19676:32;;19624:90;;;:::o;19720:116::-;19790:21;19805:5;19790:21;:::i;:::-;19783:5;19780:32;19770:60;;19826:1;19823;19816:12;19770:60;19720:116;:::o;19842:137::-;19896:5;19927:6;19921:13;19912:22;;19943:30;19967:5;19943:30;:::i;:::-;19842:137;;;;:::o;19985:345::-;20052:6;20101:2;20089:9;20080:7;20076:23;20072:32;20069:119;;;20107:79;;:::i;:::-;20069:119;20227:1;20252:61;20305:7;20296:6;20285:9;20281:22;20252:61;:::i;:::-;20242:71;;20198:125;19985:345;;;;:::o;20336:117::-;20445:1;20442;20435:12;20459:117;20568:1;20565;20558:12;20582:180;20630:77;20627:1;20620:88;20727:4;20724:1;20717:15;20751:4;20748:1;20741:15;20768:281;20851:27;20873:4;20851:27;:::i;:::-;20843:6;20839:40;20981:6;20969:10;20966:22;20945:18;20933:10;20930:34;20927:62;20924:88;;;20992:18;;:::i;:::-;20924:88;21032:10;21028:2;21021:22;20811:238;20768:281;;:::o;21055:129::-;21089:6;21116:20;;:::i;:::-;21106:30;;21145:33;21173:4;21165:6;21145:33;:::i;:::-;21055:129;;;:::o;21190:308::-;21252:4;21342:18;21334:6;21331:30;21328:56;;;21364:18;;:::i;:::-;21328:56;21402:29;21424:6;21402:29;:::i;:::-;21394:37;;21486:4;21480;21476:15;21468:23;;21190:308;;;:::o;21504:434::-;21593:5;21618:66;21634:49;21676:6;21634:49;:::i;:::-;21618:66;:::i;:::-;21609:75;;21707:6;21700:5;21693:21;21745:4;21738:5;21734:16;21783:3;21774:6;21769:3;21765:16;21762:25;21759:112;;;21790:79;;:::i;:::-;21759:112;21880:52;21925:6;21920:3;21915;21880:52;:::i;:::-;21599:339;21504:434;;;;;:::o;21958:355::-;22025:5;22074:3;22067:4;22059:6;22055:17;22051:27;22041:122;;22082:79;;:::i;:::-;22041:122;22192:6;22186:13;22217:90;22303:3;22295:6;22288:4;22280:6;22276:17;22217:90;:::i;:::-;22208:99;;22031:282;21958:355;;;;:::o;22319:524::-;22399:6;22448:2;22436:9;22427:7;22423:23;22419:32;22416:119;;;22454:79;;:::i;:::-;22416:119;22595:1;22584:9;22580:17;22574:24;22625:18;22617:6;22614:30;22611:117;;;22647:79;;:::i;:::-;22611:117;22752:74;22818:7;22809:6;22798:9;22794:22;22752:74;:::i;:::-;22742:84;;22545:291;22319:524;;;;:::o;22849:139::-;22904:5;22935:6;22929:13;22920:22;;22951:31;22976:5;22951:31;:::i;:::-;22849:139;;;;:::o;22994:347::-;23062:6;23111:2;23099:9;23090:7;23086:23;23082:32;23079:119;;;23117:79;;:::i;:::-;23079:119;23237:1;23262:62;23316:7;23307:6;23296:9;23292:22;23262:62;:::i;:::-;23252:72;;23208:126;22994:347;;;;:::o;23347:168::-;23487:20;23483:1;23475:6;23471:14;23464:44;23347:168;:::o;23521:366::-;23663:3;23684:67;23748:2;23743:3;23684:67;:::i;:::-;23677:74;;23760:93;23849:3;23760:93;:::i;:::-;23878:2;23873:3;23869:12;23862:19;;23521:366;;;:::o;23893:419::-;24059:4;24097:2;24086:9;24082:18;24074:26;;24146:9;24140:4;24136:20;24132:1;24121:9;24117:17;24110:47;24174:131;24300:4;24174:131;:::i;:::-;24166:139;;23893:419;;;:::o;24318:171::-;24458:23;24454:1;24446:6;24442:14;24435:47;24318:171;:::o;24495:366::-;24637:3;24658:67;24722:2;24717:3;24658:67;:::i;:::-;24651:74;;24734:93;24823:3;24734:93;:::i;:::-;24852:2;24847:3;24843:12;24836:19;;24495:366;;;:::o;24867:419::-;25033:4;25071:2;25060:9;25056:18;25048:26;;25120:9;25114:4;25110:20;25106:1;25095:9;25091:17;25084:47;25148:131;25274:4;25148:131;:::i;:::-;25140:139;;24867:419;;;:::o;25292:221::-;25432:34;25428:1;25420:6;25416:14;25409:58;25501:4;25496:2;25488:6;25484:15;25477:29;25292:221;:::o;25519:366::-;25661:3;25682:67;25746:2;25741:3;25682:67;:::i;:::-;25675:74;;25758:93;25847:3;25758:93;:::i;:::-;25876:2;25871:3;25867:12;25860:19;;25519:366;;;:::o;25891:419::-;26057:4;26095:2;26084:9;26080:18;26072:26;;26144:9;26138:4;26134:20;26130:1;26119:9;26115:17;26108:47;26172:131;26298:4;26172:131;:::i;:::-;26164:139;;25891:419;;;:::o;26316:220::-;26456:34;26452:1;26444:6;26440:14;26433:58;26525:3;26520:2;26512:6;26508:15;26501:28;26316:220;:::o;26542:366::-;26684:3;26705:67;26769:2;26764:3;26705:67;:::i;:::-;26698:74;;26781:93;26870:3;26781:93;:::i;:::-;26899:2;26894:3;26890:12;26883:19;;26542:366;;;:::o;26914:419::-;27080:4;27118:2;27107:9;27103:18;27095:26;;27167:9;27161:4;27157:20;27153:1;27142:9;27138:17;27131:47;27195:131;27321:4;27195:131;:::i;:::-;27187:139;;26914:419;;;:::o;27339:181::-;27479:33;27475:1;27467:6;27463:14;27456:57;27339:181;:::o;27526:366::-;27668:3;27689:67;27753:2;27748:3;27689:67;:::i;:::-;27682:74;;27765:93;27854:3;27765:93;:::i;:::-;27883:2;27878:3;27874:12;27867:19;;27526:366;;;:::o;27898:419::-;28064:4;28102:2;28091:9;28087:18;28079:26;;28151:9;28145:4;28141:20;28137:1;28126:9;28122:17;28115:47;28179:131;28305:4;28179:131;:::i;:::-;28171:139;;27898:419;;;:::o;28323:143::-;28380:5;28411:6;28405:13;28396:22;;28427:33;28454:5;28427:33;:::i;:::-;28323:143;;;;:::o;28472:351::-;28542:6;28591:2;28579:9;28570:7;28566:23;28562:32;28559:119;;;28597:79;;:::i;:::-;28559:119;28717:1;28742:64;28798:7;28789:6;28778:9;28774:22;28742:64;:::i;:::-;28732:74;;28688:128;28472:351;;;;:::o;28829:180::-;28877:77;28874:1;28867:88;28974:4;28971:1;28964:15;28998:4;28995:1;28988:15;29015:194;29055:4;29075:20;29093:1;29075:20;:::i;:::-;29070:25;;29109:20;29127:1;29109:20;:::i;:::-;29104:25;;29153:1;29150;29146:9;29138:17;;29177:1;29171:4;29168:11;29165:37;;;29182:18;;:::i;:::-;29165:37;29015:194;;;;:::o;29215:147::-;29316:11;29353:3;29338:18;;29215:147;;;;:::o;29368:114::-;;:::o;29488:398::-;29647:3;29668:83;29749:1;29744:3;29668:83;:::i;:::-;29661:90;;29760:93;29849:3;29760:93;:::i;:::-;29878:1;29873:3;29869:11;29862:18;;29488:398;;;:::o;29892:379::-;30076:3;30098:147;30241:3;30098:147;:::i;:::-;30091:154;;30262:3;30255:10;;29892:379;;;:::o;30277:175::-;30417:27;30413:1;30405:6;30401:14;30394:51;30277:175;:::o;30458:366::-;30600:3;30621:67;30685:2;30680:3;30621:67;:::i;:::-;30614:74;;30697:93;30786:3;30697:93;:::i;:::-;30815:2;30810:3;30806:12;30799:19;;30458:366;;;:::o;30830:419::-;30996:4;31034:2;31023:9;31019:18;31011:26;;31083:9;31077:4;31073:20;31069:1;31058:9;31054:17;31047:47;31111:131;31237:4;31111:131;:::i;:::-;31103:139;;30830:419;;;:::o;31255:180::-;31395:32;31391:1;31383:6;31379:14;31372:56;31255:180;:::o;31441:366::-;31583:3;31604:67;31668:2;31663:3;31604:67;:::i;:::-;31597:74;;31680:93;31769:3;31680:93;:::i;:::-;31798:2;31793:3;31789:12;31782:19;;31441:366;;;:::o;31813:419::-;31979:4;32017:2;32006:9;32002:18;31994:26;;32066:9;32060:4;32056:20;32052:1;32041:9;32037:17;32030:47;32094:131;32220:4;32094:131;:::i;:::-;32086:139;;31813:419;;;:::o;32238:442::-;32387:4;32425:2;32414:9;32410:18;32402:26;;32438:71;32506:1;32495:9;32491:17;32482:6;32438:71;:::i;:::-;32519:72;32587:2;32576:9;32572:18;32563:6;32519:72;:::i;:::-;32601;32669:2;32658:9;32654:18;32645:6;32601:72;:::i;:::-;32238:442;;;;;;:::o;32686:191::-;32726:3;32745:20;32763:1;32745:20;:::i;:::-;32740:25;;32779:20;32797:1;32779:20;:::i;:::-;32774:25;;32822:1;32819;32815:9;32808:16;;32843:3;32840:1;32837:10;32834:36;;;32850:18;;:::i;:::-;32834:36;32686:191;;;;:::o;32883:332::-;33004:4;33042:2;33031:9;33027:18;33019:26;;33055:71;33123:1;33112:9;33108:17;33099:6;33055:71;:::i;:::-;33136:72;33204:2;33193:9;33189:18;33180:6;33136:72;:::i;:::-;32883:332;;;;;:::o;33221:233::-;33260:3;33283:24;33301:5;33283:24;:::i;:::-;33274:33;;33329:66;33322:5;33319:77;33316:103;;33399:18;;:::i;:::-;33316:103;33446:1;33439:5;33435:13;33428:20;;33221:233;;;:::o;33460:664::-;33665:4;33703:3;33692:9;33688:19;33680:27;;33717:71;33785:1;33774:9;33770:17;33761:6;33717:71;:::i;:::-;33798:72;33866:2;33855:9;33851:18;33842:6;33798:72;:::i;:::-;33880;33948:2;33937:9;33933:18;33924:6;33880:72;:::i;:::-;33962;34030:2;34019:9;34015:18;34006:6;33962:72;:::i;:::-;34044:73;34112:3;34101:9;34097:19;34088:6;34044:73;:::i;:::-;33460:664;;;;;;;;:::o;34130:171::-;34270:23;34266:1;34258:6;34254:14;34247:47;34130:171;:::o;34307:366::-;34449:3;34470:67;34534:2;34529:3;34470:67;:::i;:::-;34463:74;;34546:93;34635:3;34546:93;:::i;:::-;34664:2;34659:3;34655:12;34648:19;;34307:366;;;:::o;34679:419::-;34845:4;34883:2;34872:9;34868:18;34860:26;;34932:9;34926:4;34922:20;34918:1;34907:9;34903:17;34896:47;34960:131;35086:4;34960:131;:::i;:::-;34952:139;;34679:419;;;:::o;35104:180::-;35152:77;35149:1;35142:88;35249:4;35246:1;35239:15;35273:4;35270:1;35263:15;35290:167;35430:19;35426:1;35418:6;35414:14;35407:43;35290:167;:::o;35463:366::-;35605:3;35626:67;35690:2;35685:3;35626:67;:::i;:::-;35619:74;;35702:93;35791:3;35702:93;:::i;:::-;35820:2;35815:3;35811:12;35804:19;;35463:366;;;:::o;35835:419::-;36001:4;36039:2;36028:9;36024:18;36016:26;;36088:9;36082:4;36078:20;36074:1;36063:9;36059:17;36052:47;36116:131;36242:4;36116:131;:::i;:::-;36108:139;;35835:419;;;:::o;36260:168::-;36400:20;36396:1;36388:6;36384:14;36377:44;36260:168;:::o;36434:366::-;36576:3;36597:67;36661:2;36656:3;36597:67;:::i;:::-;36590:74;;36673:93;36762:3;36673:93;:::i;:::-;36791:2;36786:3;36782:12;36775:19;;36434:366;;;:::o;36806:419::-;36972:4;37010:2;36999:9;36995:18;36987:26;;37059:9;37053:4;37049:20;37045:1;37034:9;37030:17;37023:47;37087:131;37213:4;37087:131;:::i;:::-;37079:139;;36806:419;;;:::o;37231:174::-;37371:26;37367:1;37359:6;37355:14;37348:50;37231:174;:::o;37411:366::-;37553:3;37574:67;37638:2;37633:3;37574:67;:::i;:::-;37567:74;;37650:93;37739:3;37650:93;:::i;:::-;37768:2;37763:3;37759:12;37752:19;;37411:366;;;:::o;37783:419::-;37949:4;37987:2;37976:9;37972:18;37964:26;;38036:9;38030:4;38026:20;38022:1;38011:9;38007:17;38000:47;38064:131;38190:4;38064:131;:::i;:::-;38056:139;;37783:419;;;:::o;38208:164::-;38348:16;38344:1;38336:6;38332:14;38325:40;38208:164;:::o;38378:366::-;38520:3;38541:67;38605:2;38600:3;38541:67;:::i;:::-;38534:74;;38617:93;38706:3;38617:93;:::i;:::-;38735:2;38730:3;38726:12;38719:19;;38378:366;;;:::o;38750:419::-;38916:4;38954:2;38943:9;38939:18;38931:26;;39003:9;38997:4;38993:20;38989:1;38978:9;38974:17;38967:47;39031:131;39157:4;39031:131;:::i;:::-;39023:139;;38750:419;;;:::o;39175:161::-;39296:7;39325:5;39314:16;;39175:161;;;:::o;39342:310::-;39476:9;39509:137;39527:118;39536:108;39638:5;39536:108;:::i;:::-;39527:118;:::i;:::-;39509:137;:::i;:::-;39496:150;;39342:310;;;:::o;39658:299::-;39829:121;39944:5;39829:121;:::i;:::-;39824:3;39817:134;39658:299;;:::o;39963:500::-;40168:4;40206:2;40195:9;40191:18;40183:26;;40219:71;40287:1;40276:9;40272:17;40263:6;40219:71;:::i;:::-;40300:156;40452:2;40441:9;40437:18;40428:6;40300:156;:::i;:::-;39963:500;;;;;:::o;40469:91::-;40505:7;40545:8;40538:5;40534:20;40523:31;;40469:91;;;:::o;40566:105::-;40641:23;40658:5;40641:23;:::i;:::-;40636:3;40629:36;40566:105;;:::o;40677:108::-;40754:24;40772:5;40754:24;:::i;:::-;40749:3;40742:37;40677:108;;:::o;40885:1625::-;41062:6;41057:3;41053:16;41154:4;41147:5;41143:16;41137:23;41173:63;41230:4;41225:3;41221:14;41207:12;41173:63;:::i;:::-;41079:167;41332:4;41325:5;41321:16;41315:23;41351:63;41408:4;41403:3;41399:14;41385:12;41351:63;:::i;:::-;41256:168;41505:4;41498:5;41494:16;41488:23;41524:61;41579:4;41574:3;41570:14;41556:12;41524:61;:::i;:::-;41434:161;41682:4;41675:5;41671:16;41665:23;41701:63;41758:4;41753:3;41749:14;41735:12;41701:63;:::i;:::-;41605:169;41860:4;41853:5;41849:16;41843:23;41879:63;41936:4;41931:3;41927:14;41913:12;41879:63;:::i;:::-;41784:168;42038:4;42031:5;42027:16;42021:23;42057:63;42114:4;42109:3;42105:14;42091:12;42057:63;:::i;:::-;41962:168;42224:4;42217:5;42213:16;42207:23;42243:63;42300:4;42295:3;42291:14;42277:12;42243:63;:::i;:::-;42140:176;42411:4;42404:5;42400:16;42394:23;42430:63;42487:4;42482:3;42478:14;42464:12;42430:63;:::i;:::-;42326:177;41031:1479;40885:1625;;:::o;42516:383::-;42689:4;42727:3;42716:9;42712:19;42704:27;;42741:151;42889:1;42878:9;42874:17;42865:6;42741:151;:::i;:::-;42516:383;;;;:::o;42905:172::-;43045:24;43041:1;43033:6;43029:14;43022:48;42905:172;:::o;43083:366::-;43225:3;43246:67;43310:2;43305:3;43246:67;:::i;:::-;43239:74;;43322:93;43411:3;43322:93;:::i;:::-;43440:2;43435:3;43431:12;43424:19;;43083:366;;;:::o;43455:419::-;43621:4;43659:2;43648:9;43644:18;43636:26;;43708:9;43702:4;43698:20;43694:1;43683:9;43679:17;43672:47;43736:131;43862:4;43736:131;:::i;:::-;43728:139;;43455:419;;;:::o;43880:174::-;44020:26;44016:1;44008:6;44004:14;43997:50;43880:174;:::o;44060:366::-;44202:3;44223:67;44287:2;44282:3;44223:67;:::i;:::-;44216:74;;44299:93;44388:3;44299:93;:::i;:::-;44417:2;44412:3;44408:12;44401:19;;44060:366;;;:::o;44432:419::-;44598:4;44636:2;44625:9;44621:18;44613:26;;44685:9;44679:4;44675:20;44671:1;44660:9;44656:17;44649:47;44713:131;44839:4;44713:131;:::i;:::-;44705:139;;44432:419;;;:::o;44857:410::-;44897:7;44920:20;44938:1;44920:20;:::i;:::-;44915:25;;44954:20;44972:1;44954:20;:::i;:::-;44949:25;;45009:1;45006;45002:9;45031:30;45049:11;45031:30;:::i;:::-;45020:41;;45210:1;45201:7;45197:15;45194:1;45191:22;45171:1;45164:9;45144:83;45121:139;;45240:18;;:::i;:::-;45121:139;44905:362;44857:410;;;;:::o;45273:180::-;45321:77;45318:1;45311:88;45418:4;45415:1;45408:15;45442:4;45439:1;45432:15;45459:185;45499:1;45516:20;45534:1;45516:20;:::i;:::-;45511:25;;45550:20;45568:1;45550:20;:::i;:::-;45545:25;;45589:1;45579:35;;45594:18;;:::i;:::-;45579:35;45636:1;45633;45629:9;45624:14;;45459:185;;;;:::o
Swarm Source
ipfs://e8ed9b79b2b8d0d937a9d5f2ddf0424b65a5e75aed317cea64917ad6427856cc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.