More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 661 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Lock | 18988798 | 175 days ago | IN | 0 ETH | 0.00130676 | ||||
Lock | 18777903 | 205 days ago | IN | 0 ETH | 0.00462635 | ||||
Release | 17743719 | 350 days ago | IN | 0 ETH | 0.00123709 | ||||
Set Minimum Usd ... | 17743692 | 350 days ago | IN | 0 ETH | 0.00114748 | ||||
Set Minimum Usd ... | 17743685 | 350 days ago | IN | 0 ETH | 0.00112809 | ||||
Withdraw Eth | 17742873 | 350 days ago | IN | 0 ETH | 0.00171106 | ||||
Withdraw | 17571339 | 374 days ago | IN | 0.02393 ETH | 0.00248898 | ||||
Release | 17571296 | 374 days ago | IN | 0 ETH | 0.00109164 | ||||
Release | 17571268 | 374 days ago | IN | 0 ETH | 0.00136966 | ||||
Withdraw | 17190049 | 428 days ago | IN | 0.023955 ETH | 0.00919196 | ||||
Withdraw | 17153832 | 433 days ago | IN | 0.023713 ETH | 0.00421818 | ||||
Release | 17153329 | 433 days ago | IN | 0 ETH | 0.00306234 | ||||
Release | 17140064 | 435 days ago | IN | 0 ETH | 0.00306004 | ||||
Withdraw | 17077767 | 444 days ago | IN | 0.021443 ETH | 0.00453623 | ||||
Release | 17077755 | 444 days ago | IN | 0 ETH | 0.00320587 | ||||
Withdraw | 17052889 | 447 days ago | IN | 0.021437 ETH | 0.00320086 | ||||
Release | 17052684 | 447 days ago | IN | 0 ETH | 0.00212338 | ||||
Withdraw | 17050021 | 447 days ago | IN | 0.021521 ETH | 0.00244183 | ||||
Release | 17045525 | 448 days ago | IN | 0 ETH | 0.00221527 | ||||
Withdraw | 17019190 | 452 days ago | IN | 0.02363 ETH | 0.00455379 | ||||
Withdraw | 16880700 | 471 days ago | IN | 0.02492 ETH | 0.00155861 | ||||
Lock | 16876244 | 472 days ago | IN | 0 ETH | 0.00326967 | ||||
Withdraw | 16621869 | 508 days ago | IN | 0.030189 ETH | 0.00328085 | ||||
Release | 16621833 | 508 days ago | IN | 0 ETH | 0.00282867 | ||||
Withdraw | 16567882 | 515 days ago | IN | 0.02777 ETH | 0.00181635 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
17742873 | 350 days ago | 0.047885 ETH | ||||
17153832 | 433 days ago | 0.066593 ETH | ||||
17050021 | 447 days ago | 0.070071 ETH | ||||
16621869 | 508 days ago | 0.057959 ETH | ||||
16565793 | 516 days ago | 0.054305 ETH | ||||
16549604 | 518 days ago | 0.054123 ETH | ||||
16488845 | 526 days ago | 0.055738 ETH | ||||
16464753 | 530 days ago | 0.05529 ETH | ||||
16462727 | 530 days ago | 0.054666 ETH | ||||
16448074 | 532 days ago | 0.05738 ETH | ||||
16417768 | 536 days ago | 0.057834 ETH | ||||
16411862 | 537 days ago | 0.065163 ETH | ||||
16239612 | 561 days ago | 0.074046 ETH | ||||
16236038 | 562 days ago | 0.074322 ETH | ||||
16235935 | 562 days ago | 0.075248 ETH | ||||
16204081 | 566 days ago | 0.073702 ETH | ||||
16164193 | 572 days ago | 0.071048 ETH | ||||
16125681 | 577 days ago | 0.071013 ETH | ||||
16000824 | 595 days ago | 0.074351 ETH | ||||
15991738 | 596 days ago | 0.074911 ETH | ||||
15963836 | 600 days ago | 0.06565 ETH | ||||
15887895 | 610 days ago | 0.058049 ETH | ||||
15880794 | 611 days ago | 0.056874 ETH | ||||
15870101 | 613 days ago | 0.056482 ETH | ||||
15862759 | 614 days ago | 0.056728 ETH |
Loading...
Loading
Contract Name:
BridgeEth
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-25 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/security/[email protected] // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File @chainlink/contracts/src/v0.8/interfaces/[email protected] pragma solidity ^0.8.0; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); } // File contracts/BridgeEth.sol pragma solidity 0.8.7; /** @title This bridge operates on the Binance Smart Chain blockchain. It locks BabyDoge, initiated by a user, * and subject to a flat fee in BNB and a percentage fee in BabyDoge. Unlock is initiated through an external bot and * processed on a different blockchain. */ contract BridgeEth is Ownable, ReentrancyGuard { uint256 public nonce; uint256 minimumUSD = 10 * 10 ** 18; uint256 public feeReleaseThreshold = 0.1 ether; mapping(IERC20 => TokenConfig) private _tokenConfig; mapping(IERC20 => mapping(address => uint256)) private _balances; mapping(uint256 => bool) private _processedNonces; IERC20 private _sokuToken; IERC20 private _sutekuToken; bool public paused = false; address payable private _unlocker_bot; address private _pauser_bot; uint256 constant private DAILY_TRANSFER_INTERVAL_ONE_DAY = 86400; uint256 private _dailyTransferNextTimestamp = block.timestamp + DAILY_TRANSFER_INTERVAL_ONE_DAY; address private _newProposedOwner; uint256 private _newOwnerConfirmationTimestamp = block.timestamp; enum ErrorType {UnexpectedRequest, NoBalanceRequest, MigrateBridge} event BridgeTransfer( address indexed token, address indexed from, address indexed to, uint256 amount, uint256 date, uint256 nonce ); event BridgeTokensUnlocked( address indexed token, address indexed from, address indexed to, uint256 amount, uint256 date ); event FeesReleasedToOwner( uint256 amount, uint256 date ); struct TokenConfig{ uint256 maximumTransferAmount; uint256 collectedFees; uint256 unlockTokenPercentageFee; uint256 dailyLockTotal; uint256 dailyWithdrawTotal; uint256 dailyTransferLimit; bool exists; } event UnexpectedRequest( address indexed from, address indexed to, uint256 amount, uint256 date, ErrorType indexed error ); /** @dev Creates a cross-blockchain bridge. * @param soku -- BEP20 token to bridge. * @param suteku -- BEP20 token to bridge. * @param unlockerBot -- address of account that mints/burns. * @param pauserBot -- address of account that pauses bridge in emergencies. */ constructor(address soku, address suteku, address payable unlockerBot, address pauserBot) { require(soku!=address(0) && suteku!=address(0) && unlockerBot != address(0) && pauserBot!= address(0) ); _unlocker_bot = unlockerBot; _pauser_bot = pauserBot; _sokuToken = IERC20(soku); _sutekuToken = IERC20(suteku); configTokens(); } function configTokens() internal{ _tokenConfig[_sokuToken] = TokenConfig({ maximumTransferAmount :10000000000000000000000000, collectedFees:0, unlockTokenPercentageFee:0, dailyLockTotal:0, dailyWithdrawTotal:0, dailyTransferLimit:1000000000000000000000000000, exists:true }); _tokenConfig[_sutekuToken] = TokenConfig({ maximumTransferAmount:10000000000000000000000000, collectedFees:0, unlockTokenPercentageFee:0, dailyLockTotal:0, dailyWithdrawTotal:0, dailyTransferLimit:1000000000000000000000000000, exists:true }); } modifier Pausable() { require( !paused, "Bridge: Paused."); _; } modifier OnlyUnlocker() { require(msg.sender == _unlocker_bot, "Bridge: You can't call this function."); _; } modifier OnlyPauserAndOwner() { require((msg.sender == _pauser_bot || msg.sender == owner()), "Bridge: You can't call this function."); _; } modifier onlySokuTokens(IERC20 token) { require( address(token) == address(_sutekuToken) || address(token) == address(_sokuToken), "Bridge: Token not authorized."); _; } function resetTransferCounter(IERC20 token) internal { _dailyTransferNextTimestamp = block.timestamp + DAILY_TRANSFER_INTERVAL_ONE_DAY; TokenConfig storage config = _tokenConfig[token]; config.dailyLockTotal = 0; config.dailyWithdrawTotal = 0; } /** @dev Locks tokens to bridge. External bot initiates unlock on other blockchain. * @param amount -- Amount of BabyDoge to lock. */ function lock(IERC20 token, uint256 amount) external onlySokuTokens(token) Pausable { address sender = msg.sender; require(_tokenConfig[token].exists == true, "Bridge: access denied."); require(token.balanceOf(sender) >= amount, "Bridge: Account has insufficient balance."); TokenConfig storage config = _tokenConfig[token]; require(amount <= config.maximumTransferAmount, "Bridge: Please reduce the amount of tokens."); if (block.timestamp >= _dailyTransferNextTimestamp) { resetTransferCounter(token); } config.dailyLockTotal = config.dailyLockTotal + amount; if(config.dailyLockTotal > config.dailyTransferLimit) { revert("Bridge: Daily transfer limit reached."); } require(token.transferFrom(sender, address(this), amount), "Bridge: Transfer failed."); emit BridgeTransfer( address(token), sender, address(this), amount, block.timestamp, nonce ); nonce++; } // Verificar limite transacao function release(IERC20 token, address to, uint256 amount, uint256 otherChainNonce) external OnlyUnlocker() onlySokuTokens(token) Pausable { require(!_processedNonces[otherChainNonce], "Bridge: Transaction processed."); require(to!= address(0), "Bridge: access denied."); TokenConfig storage config = _tokenConfig[token]; require(amount <= config.maximumTransferAmount, "Bridge: Transfer blocked."); _processedNonces[otherChainNonce] = true; _balances[token][to] = _balances[token][to] + amount; } function getPrice() public view returns(uint256){ AggregatorV3Interface priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419); (,int256 answer,,,) = priceFeed.latestRoundData(); return uint256(answer * 10000000000); } function getConversionRate(uint256 ethAmount) public view returns (uint256 ethAmountInUsd){ //wei unit uint256 ethPrice = getPrice(); return (ethPrice*ethAmount) / 1000000000000000000; // otherwise 18 + 18 = 36 decimal - need to remove 18 decimal } function getFee() view public returns (uint256 result) { uint256 ethPrice = getPrice(); return (((minimumUSD*100000000000000000000) / ethPrice))/100; } function withdraw(IERC20 token) external onlySokuTokens(token) payable Pausable { require(getConversionRate(msg.value) >= getFee(), "You need to spend more ETH"); // otherwise reverts address claimer = msg.sender; uint256 claimerBalance = _balances[token][claimer]; require(claimerBalance > 0, "Bridge: No balance."); TokenConfig storage config = _tokenConfig[token]; if (block.timestamp >= _dailyTransferNextTimestamp) { resetTransferCounter(token); } config.dailyWithdrawTotal = config.dailyWithdrawTotal + claimerBalance; if(config.dailyWithdrawTotal > config.dailyTransferLimit) { revert("Bridge: Daily transfer limit reached."); } if(claimerBalance > token.balanceOf(address(this))) { revert('Bridge: No funds in the bridge.'); } if (claimerBalance >= config.dailyTransferLimit) { pauseBridge(msg.sender, address(this), claimerBalance); revert('Bridge: Paused.'); } if (address(this).balance >= feeReleaseThreshold) { uint256 amountReleased = address(this).balance; (bool success, ) = _unlocker_bot.call{value : amountReleased}("Releasing fee to unlocker"); require(success, "Transfer failed."); emit FeesReleasedToOwner(amountReleased, block.timestamp); } _balances[token][claimer] = _balances[token][claimer] - claimerBalance; if (config.unlockTokenPercentageFee > 0) { uint256 amountFee = (claimerBalance * config.unlockTokenPercentageFee) / 100; claimerBalance = claimerBalance - amountFee; config.collectedFees = config.collectedFees + amountFee; } require(token.transfer(claimer, claimerBalance), "Bridge: Transfer failed"); emit BridgeTokensUnlocked(address(token), address(this), msg.sender, claimerBalance, block.timestamp); } function getBalance(IERC20 token) public view onlySokuTokens(token) returns (uint256 balance) { return _balances[token][msg.sender]; } function getTokenConfig(IERC20 token) public view onlySokuTokens(token) returns (TokenConfig memory) { return _tokenConfig[token]; } function setTokenConfig( IERC20 token, uint256 maximumTransferAmount, uint256 unlockTokenPercentageFee, uint256 dailyTransferLimit) external onlySokuTokens(token) onlyOwner() { TokenConfig storage config = _tokenConfig[token]; config.maximumTransferAmount = maximumTransferAmount; config.unlockTokenPercentageFee = unlockTokenPercentageFee; config.dailyTransferLimit = dailyTransferLimit; } function resetDailyTotals(IERC20 token) external onlySokuTokens(token) onlyOwner() { resetTransferCounter(token); } function setMinimumUsdFee(uint256 usd) external onlyOwner() { require(usd > 0, "Can't be zero"); minimumUSD = usd * 10 ** 18; } function setTokenPercentageFee(IERC20 token, uint256 tokenFee) external onlyOwner() onlySokuTokens(token) { require(tokenFee < 25, "Bridge: Gotta be smaller then 25") ; TokenConfig storage config = _tokenConfig[token]; require(config.exists, "Bridge: Token not found"); config.unlockTokenPercentageFee = tokenFee; } function setFeeReleaseThreshold(uint256 amount) external onlyOwner() { require(amount > 0, "Bridge: Can't be zero"); feeReleaseThreshold = amount; } function withdrawEth() external onlyOwner() { uint256 amountReleased = address(this).balance; (bool success, ) = owner().call{value : amountReleased}("Releasing eth to owner"); require(success, "Transfer failed"); } function withdrawERC20(IERC20 token) external onlyOwner() nonReentrant { require(address(token) != address(0), "Bridge: Can't be zero"); require(token.balanceOf(address(this)) >= 0, "Bridge: Account has insufficient balance."); require(token.transfer(owner(), token.balanceOf(address(this))), "Bridge: Transfer failed."); } function withdrawCollectedFees(IERC20 token) external onlyOwner() onlySokuTokens(token) nonReentrant { TokenConfig storage config = _tokenConfig[token]; require(config.exists, "Bridge: Token not found"); require(token.balanceOf(address(this)) >= config.collectedFees, "Bridge: Account has insufficient balance."); require(token.transfer(owner(), config.collectedFees), "Bridge: Transfer failed."); config.collectedFees = 0; } function setUnlocker(address _unlocker) external onlyOwner { require(_unlocker != _unlocker_bot, "This address is already set as unlocker."); _unlocker_bot = payable(_unlocker); } function setPauser(address _pauser) external onlyOwner { require(_pauser != _pauser_bot, "This address is already set as pauser."); _pauser_bot = _pauser; } function setPausedState(bool state) external onlyOwner() { paused = state; } function pauseBridge(address from, address to, uint256 amount) internal { paused = true; emit UnexpectedRequest( from, to, amount, block.timestamp, ErrorType.UnexpectedRequest ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"soku","type":"address"},{"internalType":"address","name":"suteku","type":"address"},{"internalType":"address payable","name":"unlockerBot","type":"address"},{"internalType":"address","name":"pauserBot","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"BridgeTokensUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"BridgeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"FeesReleasedToOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"},{"indexed":true,"internalType":"enum BridgeEth.ErrorType","name":"error","type":"uint8"}],"name":"UnexpectedRequest","type":"event"},{"inputs":[],"name":"feeReleaseThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"getConversionRate","outputs":[{"internalType":"uint256","name":"ethAmountInUsd","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFee","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenConfig","outputs":[{"components":[{"internalType":"uint256","name":"maximumTransferAmount","type":"uint256"},{"internalType":"uint256","name":"collectedFees","type":"uint256"},{"internalType":"uint256","name":"unlockTokenPercentageFee","type":"uint256"},{"internalType":"uint256","name":"dailyLockTotal","type":"uint256"},{"internalType":"uint256","name":"dailyWithdrawTotal","type":"uint256"},{"internalType":"uint256","name":"dailyTransferLimit","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct BridgeEth.TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"otherChainNonce","type":"uint256"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"resetDailyTotals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setFeeReleaseThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usd","type":"uint256"}],"name":"setMinimumUsdFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pauser","type":"address"}],"name":"setPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"maximumTransferAmount","type":"uint256"},{"internalType":"uint256","name":"unlockTokenPercentageFee","type":"uint256"},{"internalType":"uint256","name":"dailyTransferLimit","type":"uint256"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"tokenFee","type":"uint256"}],"name":"setTokenPercentageFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_unlocker","type":"address"}],"name":"setUnlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052678ac7230489e8000060035567016345785d8a00006004556000600960146101000a81548160ff021916908315150217905550620151804262000048919062000640565b600c5542600e553480156200005c57600080fd5b5060405162004f6338038062004f638339818101604052810190620000829190620005ce565b620000a262000096620002b060201b60201c565b620002b860201b60201c565b60018081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015620001145750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156200014e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620001885750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6200019257600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002a66200037c60201b60201c565b5050505062000757565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6040518060e001604052806a084595161401484a0000008152602001600081526020016000815260200160008152602001600081526020016b033b2e3c9fd0803ce800000081526020016001151581525060056000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055509050506040518060e001604052806a084595161401484a0000008152602001600081526020016000815260200160008152602001600081526020016b033b2e3c9fd0803ce800000081526020016001151581525060056000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050565b600081519050620005b18162000723565b92915050565b600081519050620005c8816200073d565b92915050565b60008060008060808587031215620005eb57620005ea6200071e565b5b6000620005fb87828801620005a0565b94505060206200060e87828801620005a0565b93505060406200062187828801620005b7565b92505060606200063487828801620005a0565b91505092959194509250565b60006200064d82620006e5565b91506200065a83620006e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006925762000691620006ef565b5b828201905092915050565b6000620006aa82620006c5565b9050919050565b6000620006be82620006c5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6200072e816200069d565b81146200073a57600080fd5b50565b6200074881620006b1565b81146200075457600080fd5b50565b6147fc80620007676000396000f3fe6080604052600436106101665760003560e01c806398d5fdca116100d1578063ced72f871161008a578063ea40cec711610064578063ea40cec7146104cb578063f2fde38b146104f4578063f4f3b2001461051d578063f8b2cb4f1461054657610166565b8063ced72f871461044e578063d9ab6bed14610479578063db9f60ff146104a257610166565b806398d5fdca14610352578063a0ef91df1461037d578063a788a03014610394578063affed0e0146103bd578063bd15bbc3146103e8578063cb67e3b11461041157610166565b80635c975abb116101235780635c975abb146102565780636e5b6b2814610281578063715018a6146102be5780637b9ac3dc146102d557806386935d9b146102fe5780638da5cb5b1461032757610166565b806316afdf8e1461016b5780631868d44c14610194578063282d3fdf146101bf5780632d88af4a146101e85780633f954f3b1461021157806351cff8d91461023a575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d919061335f565b610583565b005b3480156101a057600080fd5b506101a96109e3565b6040516101b69190613dc7565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906133c6565b6109e9565b005b3480156101f457600080fd5b5061020f600480360381019061020a91906132ab565b610ef7565b005b34801561021d57600080fd5b5061023860048036038101906102339190613406565b611048565b005b610254600480360381019061024f9190613332565b611213565b005b34801561026257600080fd5b5061026b611a02565b6040516102789190613a71565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a3919061346d565b611a15565b6040516102b59190613dc7565b60405180910390f35b3480156102ca57600080fd5b506102d3611a49565b005b3480156102e157600080fd5b506102fc60048036038101906102f79190613332565b611ad1565b005b34801561030a57600080fd5b5061032560048036038101906103209190613332565b611c43565b005b34801561033357600080fd5b5061033c612046565b60405161034991906139f6565b60405180910390f35b34801561035e57600080fd5b5061036761206f565b6040516103749190613dc7565b60405180910390f35b34801561038957600080fd5b50610392612127565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906133c6565b61225f565b005b3480156103c957600080fd5b506103d26124aa565b6040516103df9190613dc7565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061346d565b6124b0565b005b34801561041d57600080fd5b5061043860048036038101906104339190613332565b61258c565b6040516104459190613dac565b60405180910390f35b34801561045a57600080fd5b50610463612726565b6040516104709190613dc7565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b919061346d565b612767565b005b3480156104ae57600080fd5b506104c960048036038101906104c491906132d8565b612830565b005b3480156104d757600080fd5b506104f260048036038101906104ed91906132ab565b6128c9565b005b34801561050057600080fd5b5061051b600480360381019061051691906132ab565b612a1a565b005b34801561052957600080fd5b50610544600480360381019061053f9190613332565b612b12565b005b34801561055257600080fd5b5061056d60048036038101906105689190613332565b612e7d565b60405161057a9190613dc7565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a90613d0c565b60405180910390fd5b83600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806106bd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390613d4c565b60405180910390fd5b600960149054906101000a900460ff161561074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390613acc565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff16156107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490613bec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490613c2c565b60405180910390fd5b6000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001548411156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613b8c565b60405180910390fd5b60016007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555083600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095b9190613e5e565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60045481565b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a935750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990613d4c565b60405180910390fd5b600960149054906101000a900460ff1615610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613acc565b60405180910390fd5b600033905060011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160009054906101000a900460ff16151514610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613c2c565b60405180910390fd5b828473ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610bf791906139f6565b60206040518083038186803b158015610c0f57600080fd5b505afa158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c47919061349a565b1015610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90613c6c565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154841115610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990613aec565b60405180910390fd5b600c544210610d2557610d2485612fed565b5b838160030154610d359190613e5e565b8160030181905550806005015481600301541115610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90613bac565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8330876040518463ffffffff1660e01b8152600401610dc593929190613a11565b602060405180830381600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190613305565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90613b4c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb584e8890af237b62fc1449dabf078fd6e0bdb272055d1b850985126a340a3c98742600254604051610ed093929190613e0b565b60405180910390a460026000815480929190610eeb90614104565b91905055505050505050565b610eff61305d565b73ffffffffffffffffffffffffffffffffffffffff16610f1d612046565b73ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90613c4c565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613d8c565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b83600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806110f25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890613d4c565b60405180910390fd5b61113961305d565b73ffffffffffffffffffffffffffffffffffffffff16611157612046565b73ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613c4c565b60405180910390fd5b6000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160000181905550838160020181905550828160050181905550505050505050565b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112bd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613d4c565b60405180910390fd5b600960149054906101000a900460ff161561134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390613acc565b60405180910390fd5b611354612726565b61135d34611a15565b101561139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139590613c0c565b60405180910390fd5b60003390506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613bcc565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600c5442106114bd576114bc85612fed565b5b8181600401546114cd9190613e5e565b8160040181905550806005015481600401541115611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613bac565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161155991906139f6565b60206040518083038186803b15801561157157600080fd5b505afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a9919061349a565b8211156115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290613aac565b60405180910390fd5b8060050154821061163c57611601333084613065565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613acc565b60405180910390fd5b60045447106117545760004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611692906139cc565b60006040518083038185875af1925050503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5050905080611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613cac565b60405180910390fd5b7f61d3da413a6762a78905cfbd33c4f795c59c5b8e1ac7e668b0616ffda0cfa4aa8242604051611749929190613de2565b60405180910390a150505b81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117dc9190614056565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000816002015411156118b1576000606482600201548461187d9190613ffc565b6118879190613eb4565b905080836118959190614056565b92508082600101546118a79190613e5e565b8260010181905550505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016118ec929190613a48565b602060405180830381600087803b15801561190657600080fd5b505af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190613305565b61197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613c8c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ff0763d178c661ec43c402a145817e15dacf1c451024c9657c548da71e84df32385426040516119f3929190613de2565b60405180910390a45050505050565b600960149054906101000a900460ff1681565b600080611a2061206f565b9050670de0b6b3a76400008382611a379190613ffc565b611a419190613eb4565b915050919050565b611a5161305d565b73ffffffffffffffffffffffffffffffffffffffff16611a6f612046565b73ffffffffffffffffffffffffffffffffffffffff1614611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90613c4c565b60405180910390fd5b611acf6000613100565b565b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b7b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613d4c565b60405180910390fd5b611bc261305d565b73ffffffffffffffffffffffffffffffffffffffff16611be0612046565b73ffffffffffffffffffffffffffffffffffffffff1614611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90613c4c565b60405180910390fd5b611c3f82612fed565b5050565b611c4b61305d565b73ffffffffffffffffffffffffffffffffffffffff16611c69612046565b73ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb690613c4c565b60405180910390fd5b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611d695750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90613d4c565b60405180910390fd5b60026001541415611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613d6c565b60405180910390fd5b60026001819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060160009054906101000a900460ff16611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613a8c565b60405180910390fd5b80600101548373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ec891906139f6565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061349a565b1015611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613c6c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611f7d612046565b83600101546040518363ffffffff1660e01b8152600401611f9f929190613a48565b602060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613305565b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613b4c565b60405180910390fd5b6000816001018190555050600180819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080735f4ec3df9cbd43714fe2740f5e3616155c5b8419905060008173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156120d157600080fd5b505afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210991906134c7565b5050509150506402540be400816121209190613ee5565b9250505090565b61212f61305d565b73ffffffffffffffffffffffffffffffffffffffff1661214d612046565b73ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613c4c565b60405180910390fd5b600047905060006121b2612046565b73ffffffffffffffffffffffffffffffffffffffff16826040516121d5906139e1565b60006040518083038185875af1925050503d8060008114612212576040519150601f19603f3d011682016040523d82523d6000602084013e612217565b606091505b505090508061225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613b2c565b60405180910390fd5b5050565b61226761305d565b73ffffffffffffffffffffffffffffffffffffffff16612285612046565b73ffffffffffffffffffffffffffffffffffffffff16146122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290613c4c565b60405180910390fd5b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123855750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb90613d4c565b60405180910390fd5b60198210612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe90613ccc565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060160009054906101000a900460ff1661249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613a8c565b60405180910390fd5b82816002018190555050505050565b60025481565b6124b861305d565b73ffffffffffffffffffffffffffffffffffffffff166124d6612046565b73ffffffffffffffffffffffffffffffffffffffff161461252c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252390613c4c565b60405180910390fd5b6000811161256f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256690613cec565b60405180910390fd5b670de0b6b3a7640000816125839190613ffc565b60038190555050565b6125946131c4565b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061263e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490613d4c565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050915050919050565b60008061273161206f565b905060648168056bc75e2d6310000060035461274d9190613ffc565b6127579190613eb4565b6127619190613eb4565b91505090565b61276f61305d565b73ffffffffffffffffffffffffffffffffffffffff1661278d612046565b73ffffffffffffffffffffffffffffffffffffffff16146127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90613c4c565b60405180910390fd5b60008111612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90613d2c565b60405180910390fd5b8060048190555050565b61283861305d565b73ffffffffffffffffffffffffffffffffffffffff16612856612046565b73ffffffffffffffffffffffffffffffffffffffff16146128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390613c4c565b60405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b6128d161305d565b73ffffffffffffffffffffffffffffffffffffffff166128ef612046565b73ffffffffffffffffffffffffffffffffffffffff1614612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c90613c4c565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cd90613b6c565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a2261305d565b73ffffffffffffffffffffffffffffffffffffffff16612a40612046565b73ffffffffffffffffffffffffffffffffffffffff1614612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613c4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90613b0c565b60405180910390fd5b612b0f81613100565b50565b612b1a61305d565b73ffffffffffffffffffffffffffffffffffffffff16612b38612046565b73ffffffffffffffffffffffffffffffffffffffff1614612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613c4c565b60405180910390fd5b60026001541415612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb90613d6c565b60405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390613d2c565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c8791906139f6565b60206040518083038186803b158015612c9f57600080fd5b505afa158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd7919061349a565b1015612d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0f90613c6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612d3c612046565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612d7591906139f6565b60206040518083038186803b158015612d8d57600080fd5b505afa158015612da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc5919061349a565b6040518363ffffffff1660e01b8152600401612de2929190613a48565b602060405180830381600087803b158015612dfc57600080fd5b505af1158015612e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e349190613305565b612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90613b4c565b60405180910390fd5b6001808190555050565b600081600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612f295750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5f90613d4c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b6201518042612ffc9190613e5e565b600c819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030181905550600081600401819055505050565b600033905090565b6001600960146101000a81548160ff02191690831515021790555060006002811115613094576130936141ab565b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f36347e3e57dc39692dc597eb7f86e17e94ecda48d85c4f7bfa0e4631fb16bb2784426040516130f3929190613de2565b60405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6000813590506132128161473c565b92915050565b60008135905061322781614753565b92915050565b60008151905061323c81614753565b92915050565b6000813590506132518161476a565b92915050565b60008151905061326681614781565b92915050565b60008135905061327b81614798565b92915050565b60008151905061329081614798565b92915050565b6000815190506132a5816147af565b92915050565b6000602082840312156132c1576132c06141da565b5b60006132cf84828501613203565b91505092915050565b6000602082840312156132ee576132ed6141da565b5b60006132fc84828501613218565b91505092915050565b60006020828403121561331b5761331a6141da565b5b60006133298482850161322d565b91505092915050565b600060208284031215613348576133476141da565b5b600061335684828501613242565b91505092915050565b60008060008060808587031215613379576133786141da565b5b600061338787828801613242565b945050602061339887828801613203565b93505060406133a98782880161326c565b92505060606133ba8782880161326c565b91505092959194509250565b600080604083850312156133dd576133dc6141da565b5b60006133eb85828601613242565b92505060206133fc8582860161326c565b9150509250929050565b600080600080608085870312156134205761341f6141da565b5b600061342e87828801613242565b945050602061343f8782880161326c565b93505060406134508782880161326c565b92505060606134618782880161326c565b91505092959194509250565b600060208284031215613483576134826141da565b5b60006134918482850161326c565b91505092915050565b6000602082840312156134b0576134af6141da565b5b60006134be84828501613281565b91505092915050565b600080600080600060a086880312156134e3576134e26141da565b5b60006134f188828901613296565b955050602061350288828901613257565b945050604061351388828901613281565b935050606061352488828901613281565b925050608061353588828901613296565b9150509295509295909350565b61354b8161408a565b82525050565b61355a8161409c565b82525050565b6135698161409c565b82525050565b600061357c601783613e4d565b9150613587826141df565b602082019050919050565b600061359f601f83613e4d565b91506135aa82614208565b602082019050919050565b60006135c2600f83613e4d565b91506135cd82614231565b602082019050919050565b60006135e5601983613e42565b91506135f08261425a565b601982019050919050565b6000613608602b83613e4d565b915061361382614283565b604082019050919050565b600061362b602683613e4d565b9150613636826142d2565b604082019050919050565b600061364e600f83613e4d565b915061365982614321565b602082019050919050565b6000613671601883613e4d565b915061367c8261434a565b602082019050919050565b6000613694602883613e4d565b915061369f82614373565b604082019050919050565b60006136b7601983613e4d565b91506136c2826143c2565b602082019050919050565b60006136da602583613e4d565b91506136e5826143eb565b604082019050919050565b60006136fd601383613e4d565b91506137088261443a565b602082019050919050565b6000613720601e83613e4d565b915061372b82614463565b602082019050919050565b6000613743601a83613e4d565b915061374e8261448c565b602082019050919050565b6000613766601683613e4d565b9150613771826144b5565b602082019050919050565b6000613789602083613e4d565b9150613794826144de565b602082019050919050565b60006137ac602983613e4d565b91506137b782614507565b604082019050919050565b60006137cf601783613e4d565b91506137da82614556565b602082019050919050565b60006137f2601083613e4d565b91506137fd8261457f565b602082019050919050565b6000613815602083613e4d565b9150613820826145a8565b602082019050919050565b6000613838600d83613e4d565b9150613843826145d1565b602082019050919050565b600061385b602583613e4d565b9150613866826145fa565b604082019050919050565b600061387e601683613e42565b915061388982614649565b601682019050919050565b60006138a1601583613e4d565b91506138ac82614672565b602082019050919050565b60006138c4601d83613e4d565b91506138cf8261469b565b602082019050919050565b60006138e7601f83613e4d565b91506138f2826146c4565b602082019050919050565b600061390a602683613e4d565b9150613915826146ed565b604082019050919050565b60e08201600082015161393660008501826139ae565b50602082015161394960208501826139ae565b50604082015161395c60408501826139ae565b50606082015161396f60608501826139ae565b50608082015161398260808501826139ae565b5060a082015161399560a08501826139ae565b5060c08201516139a860c0850182613551565b50505050565b6139b7816140e4565b82525050565b6139c6816140e4565b82525050565b60006139d7826135d8565b9150819050919050565b60006139ec82613871565b9150819050919050565b6000602082019050613a0b6000830184613542565b92915050565b6000606082019050613a266000830186613542565b613a336020830185613542565b613a4060408301846139bd565b949350505050565b6000604082019050613a5d6000830185613542565b613a6a60208301846139bd565b9392505050565b6000602082019050613a866000830184613560565b92915050565b60006020820190508181036000830152613aa58161356f565b9050919050565b60006020820190508181036000830152613ac581613592565b9050919050565b60006020820190508181036000830152613ae5816135b5565b9050919050565b60006020820190508181036000830152613b05816135fb565b9050919050565b60006020820190508181036000830152613b258161361e565b9050919050565b60006020820190508181036000830152613b4581613641565b9050919050565b60006020820190508181036000830152613b6581613664565b9050919050565b60006020820190508181036000830152613b8581613687565b9050919050565b60006020820190508181036000830152613ba5816136aa565b9050919050565b60006020820190508181036000830152613bc5816136cd565b9050919050565b60006020820190508181036000830152613be5816136f0565b9050919050565b60006020820190508181036000830152613c0581613713565b9050919050565b60006020820190508181036000830152613c2581613736565b9050919050565b60006020820190508181036000830152613c4581613759565b9050919050565b60006020820190508181036000830152613c658161377c565b9050919050565b60006020820190508181036000830152613c858161379f565b9050919050565b60006020820190508181036000830152613ca5816137c2565b9050919050565b60006020820190508181036000830152613cc5816137e5565b9050919050565b60006020820190508181036000830152613ce581613808565b9050919050565b60006020820190508181036000830152613d058161382b565b9050919050565b60006020820190508181036000830152613d258161384e565b9050919050565b60006020820190508181036000830152613d4581613894565b9050919050565b60006020820190508181036000830152613d65816138b7565b9050919050565b60006020820190508181036000830152613d85816138da565b9050919050565b60006020820190508181036000830152613da5816138fd565b9050919050565b600060e082019050613dc16000830184613920565b92915050565b6000602082019050613ddc60008301846139bd565b92915050565b6000604082019050613df760008301856139bd565b613e0460208301846139bd565b9392505050565b6000606082019050613e2060008301866139bd565b613e2d60208301856139bd565b613e3a60408301846139bd565b949350505050565b600081905092915050565b600082825260208201905092915050565b6000613e69826140e4565b9150613e74836140e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ea957613ea861414d565b5b828201905092915050565b6000613ebf826140e4565b9150613eca836140e4565b925082613eda57613ed961417c565b5b828204905092915050565b6000613ef0826140ba565b9150613efb836140ba565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615613f3a57613f3961414d565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615613f7757613f7661414d565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615613fb457613fb361414d565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615613ff157613ff061414d565b5b828202905092915050565b6000614007826140e4565b9150614012836140e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404b5761404a61414d565b5b828202905092915050565b6000614061826140e4565b915061406c836140e4565b92508282101561407f5761407e61414d565b5b828203905092915050565b6000614095826140c4565b9050919050565b60008115159050919050565b60006140b38261408a565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600069ffffffffffffffffffff82169050919050565b600061410f826140e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141425761414161414d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080fd5b7f4272696467653a20546f6b656e206e6f7420666f756e64000000000000000000600082015250565b7f4272696467653a204e6f2066756e647320696e20746865206272696467652e00600082015250565b7f4272696467653a205061757365642e0000000000000000000000000000000000600082015250565b7f52656c656173696e672066656520746f20756e6c6f636b657200000000000000600082015250565b7f4272696467653a20506c65617365207265647563652074686520616d6f756e7460008201527f206f6620746f6b656e732e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f4272696467653a205472616e73666572206661696c65642e0000000000000000600082015250565b7f54686973206164647265737320697320616c726561647920736574206173207560008201527f6e6c6f636b65722e000000000000000000000000000000000000000000000000602082015250565b7f4272696467653a205472616e7366657220626c6f636b65642e00000000000000600082015250565b7f4272696467653a204461696c79207472616e73666572206c696d69742072656160008201527f636865642e000000000000000000000000000000000000000000000000000000602082015250565b7f4272696467653a204e6f2062616c616e63652e00000000000000000000000000600082015250565b7f4272696467653a205472616e73616374696f6e2070726f6365737365642e0000600082015250565b7f596f75206e65656420746f207370656e64206d6f726520455448000000000000600082015250565b7f4272696467653a206163636573732064656e6965642e00000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4272696467653a204163636f756e742068617320696e73756666696369656e7460008201527f2062616c616e63652e0000000000000000000000000000000000000000000000602082015250565b7f4272696467653a205472616e73666572206661696c6564000000000000000000600082015250565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4272696467653a20476f74746120626520736d616c6c6572207468656e203235600082015250565b7f43616e2774206265207a65726f00000000000000000000000000000000000000600082015250565b7f4272696467653a20596f752063616e27742063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b7f52656c656173696e672065746820746f206f776e657200000000000000000000600082015250565b7f4272696467653a2043616e2774206265207a65726f0000000000000000000000600082015250565b7f4272696467653a20546f6b656e206e6f7420617574686f72697a65642e000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f54686973206164647265737320697320616c726561647920736574206173207060008201527f61757365722e0000000000000000000000000000000000000000000000000000602082015250565b6147458161408a565b811461475057600080fd5b50565b61475c8161409c565b811461476757600080fd5b50565b614773816140a8565b811461477e57600080fd5b50565b61478a816140ba565b811461479557600080fd5b50565b6147a1816140e4565b81146147ac57600080fd5b50565b6147b8816140ee565b81146147c357600080fd5b5056fea26469706673582212204256dc22c0ef9610879014d78aef7da340e0ee6fb2a4d06f941dd0eebc5e8d9164736f6c634300080700330000000000000000000000004c3a8eceb656ec63eae80a4ebd565e4887db6160000000000000000000000000c7230badf274995f1933598c249c824fde26f426000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b
Deployed Bytecode
0x6080604052600436106101665760003560e01c806398d5fdca116100d1578063ced72f871161008a578063ea40cec711610064578063ea40cec7146104cb578063f2fde38b146104f4578063f4f3b2001461051d578063f8b2cb4f1461054657610166565b8063ced72f871461044e578063d9ab6bed14610479578063db9f60ff146104a257610166565b806398d5fdca14610352578063a0ef91df1461037d578063a788a03014610394578063affed0e0146103bd578063bd15bbc3146103e8578063cb67e3b11461041157610166565b80635c975abb116101235780635c975abb146102565780636e5b6b2814610281578063715018a6146102be5780637b9ac3dc146102d557806386935d9b146102fe5780638da5cb5b1461032757610166565b806316afdf8e1461016b5780631868d44c14610194578063282d3fdf146101bf5780632d88af4a146101e85780633f954f3b1461021157806351cff8d91461023a575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d919061335f565b610583565b005b3480156101a057600080fd5b506101a96109e3565b6040516101b69190613dc7565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906133c6565b6109e9565b005b3480156101f457600080fd5b5061020f600480360381019061020a91906132ab565b610ef7565b005b34801561021d57600080fd5b5061023860048036038101906102339190613406565b611048565b005b610254600480360381019061024f9190613332565b611213565b005b34801561026257600080fd5b5061026b611a02565b6040516102789190613a71565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a3919061346d565b611a15565b6040516102b59190613dc7565b60405180910390f35b3480156102ca57600080fd5b506102d3611a49565b005b3480156102e157600080fd5b506102fc60048036038101906102f79190613332565b611ad1565b005b34801561030a57600080fd5b5061032560048036038101906103209190613332565b611c43565b005b34801561033357600080fd5b5061033c612046565b60405161034991906139f6565b60405180910390f35b34801561035e57600080fd5b5061036761206f565b6040516103749190613dc7565b60405180910390f35b34801561038957600080fd5b50610392612127565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906133c6565b61225f565b005b3480156103c957600080fd5b506103d26124aa565b6040516103df9190613dc7565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061346d565b6124b0565b005b34801561041d57600080fd5b5061043860048036038101906104339190613332565b61258c565b6040516104459190613dac565b60405180910390f35b34801561045a57600080fd5b50610463612726565b6040516104709190613dc7565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b919061346d565b612767565b005b3480156104ae57600080fd5b506104c960048036038101906104c491906132d8565b612830565b005b3480156104d757600080fd5b506104f260048036038101906104ed91906132ab565b6128c9565b005b34801561050057600080fd5b5061051b600480360381019061051691906132ab565b612a1a565b005b34801561052957600080fd5b50610544600480360381019061053f9190613332565b612b12565b005b34801561055257600080fd5b5061056d60048036038101906105689190613332565b612e7d565b60405161057a9190613dc7565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a90613d0c565b60405180910390fd5b83600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806106bd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390613d4c565b60405180910390fd5b600960149054906101000a900460ff161561074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390613acc565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff16156107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490613bec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490613c2c565b60405180910390fd5b6000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001548411156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613b8c565b60405180910390fd5b60016007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555083600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095b9190613e5e565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60045481565b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a935750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990613d4c565b60405180910390fd5b600960149054906101000a900460ff1615610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613acc565b60405180910390fd5b600033905060011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160009054906101000a900460ff16151514610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613c2c565b60405180910390fd5b828473ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610bf791906139f6565b60206040518083038186803b158015610c0f57600080fd5b505afa158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c47919061349a565b1015610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90613c6c565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154841115610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990613aec565b60405180910390fd5b600c544210610d2557610d2485612fed565b5b838160030154610d359190613e5e565b8160030181905550806005015481600301541115610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90613bac565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8330876040518463ffffffff1660e01b8152600401610dc593929190613a11565b602060405180830381600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190613305565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90613b4c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb584e8890af237b62fc1449dabf078fd6e0bdb272055d1b850985126a340a3c98742600254604051610ed093929190613e0b565b60405180910390a460026000815480929190610eeb90614104565b91905055505050505050565b610eff61305d565b73ffffffffffffffffffffffffffffffffffffffff16610f1d612046565b73ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90613c4c565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613d8c565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b83600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806110f25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890613d4c565b60405180910390fd5b61113961305d565b73ffffffffffffffffffffffffffffffffffffffff16611157612046565b73ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613c4c565b60405180910390fd5b6000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160000181905550838160020181905550828160050181905550505050505050565b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112bd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613d4c565b60405180910390fd5b600960149054906101000a900460ff161561134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390613acc565b60405180910390fd5b611354612726565b61135d34611a15565b101561139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139590613c0c565b60405180910390fd5b60003390506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613bcc565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600c5442106114bd576114bc85612fed565b5b8181600401546114cd9190613e5e565b8160040181905550806005015481600401541115611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613bac565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161155991906139f6565b60206040518083038186803b15801561157157600080fd5b505afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a9919061349a565b8211156115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290613aac565b60405180910390fd5b8060050154821061163c57611601333084613065565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613acc565b60405180910390fd5b60045447106117545760004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611692906139cc565b60006040518083038185875af1925050503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5050905080611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613cac565b60405180910390fd5b7f61d3da413a6762a78905cfbd33c4f795c59c5b8e1ac7e668b0616ffda0cfa4aa8242604051611749929190613de2565b60405180910390a150505b81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117dc9190614056565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000816002015411156118b1576000606482600201548461187d9190613ffc565b6118879190613eb4565b905080836118959190614056565b92508082600101546118a79190613e5e565b8260010181905550505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016118ec929190613a48565b602060405180830381600087803b15801561190657600080fd5b505af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190613305565b61197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613c8c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ff0763d178c661ec43c402a145817e15dacf1c451024c9657c548da71e84df32385426040516119f3929190613de2565b60405180910390a45050505050565b600960149054906101000a900460ff1681565b600080611a2061206f565b9050670de0b6b3a76400008382611a379190613ffc565b611a419190613eb4565b915050919050565b611a5161305d565b73ffffffffffffffffffffffffffffffffffffffff16611a6f612046565b73ffffffffffffffffffffffffffffffffffffffff1614611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90613c4c565b60405180910390fd5b611acf6000613100565b565b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b7b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613d4c565b60405180910390fd5b611bc261305d565b73ffffffffffffffffffffffffffffffffffffffff16611be0612046565b73ffffffffffffffffffffffffffffffffffffffff1614611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90613c4c565b60405180910390fd5b611c3f82612fed565b5050565b611c4b61305d565b73ffffffffffffffffffffffffffffffffffffffff16611c69612046565b73ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb690613c4c565b60405180910390fd5b80600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611d695750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90613d4c565b60405180910390fd5b60026001541415611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613d6c565b60405180910390fd5b60026001819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060160009054906101000a900460ff16611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613a8c565b60405180910390fd5b80600101548373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ec891906139f6565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061349a565b1015611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613c6c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611f7d612046565b83600101546040518363ffffffff1660e01b8152600401611f9f929190613a48565b602060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613305565b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613b4c565b60405180910390fd5b6000816001018190555050600180819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080735f4ec3df9cbd43714fe2740f5e3616155c5b8419905060008173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156120d157600080fd5b505afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210991906134c7565b5050509150506402540be400816121209190613ee5565b9250505090565b61212f61305d565b73ffffffffffffffffffffffffffffffffffffffff1661214d612046565b73ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613c4c565b60405180910390fd5b600047905060006121b2612046565b73ffffffffffffffffffffffffffffffffffffffff16826040516121d5906139e1565b60006040518083038185875af1925050503d8060008114612212576040519150601f19603f3d011682016040523d82523d6000602084013e612217565b606091505b505090508061225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613b2c565b60405180910390fd5b5050565b61226761305d565b73ffffffffffffffffffffffffffffffffffffffff16612285612046565b73ffffffffffffffffffffffffffffffffffffffff16146122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290613c4c565b60405180910390fd5b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123855750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb90613d4c565b60405180910390fd5b60198210612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe90613ccc565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060160009054906101000a900460ff1661249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613a8c565b60405180910390fd5b82816002018190555050505050565b60025481565b6124b861305d565b73ffffffffffffffffffffffffffffffffffffffff166124d6612046565b73ffffffffffffffffffffffffffffffffffffffff161461252c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252390613c4c565b60405180910390fd5b6000811161256f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256690613cec565b60405180910390fd5b670de0b6b3a7640000816125839190613ffc565b60038190555050565b6125946131c4565b81600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061263e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490613d4c565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050915050919050565b60008061273161206f565b905060648168056bc75e2d6310000060035461274d9190613ffc565b6127579190613eb4565b6127619190613eb4565b91505090565b61276f61305d565b73ffffffffffffffffffffffffffffffffffffffff1661278d612046565b73ffffffffffffffffffffffffffffffffffffffff16146127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90613c4c565b60405180910390fd5b60008111612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90613d2c565b60405180910390fd5b8060048190555050565b61283861305d565b73ffffffffffffffffffffffffffffffffffffffff16612856612046565b73ffffffffffffffffffffffffffffffffffffffff16146128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390613c4c565b60405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b6128d161305d565b73ffffffffffffffffffffffffffffffffffffffff166128ef612046565b73ffffffffffffffffffffffffffffffffffffffff1614612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c90613c4c565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cd90613b6c565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a2261305d565b73ffffffffffffffffffffffffffffffffffffffff16612a40612046565b73ffffffffffffffffffffffffffffffffffffffff1614612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613c4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90613b0c565b60405180910390fd5b612b0f81613100565b50565b612b1a61305d565b73ffffffffffffffffffffffffffffffffffffffff16612b38612046565b73ffffffffffffffffffffffffffffffffffffffff1614612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613c4c565b60405180910390fd5b60026001541415612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb90613d6c565b60405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390613d2c565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c8791906139f6565b60206040518083038186803b158015612c9f57600080fd5b505afa158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd7919061349a565b1015612d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0f90613c6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612d3c612046565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612d7591906139f6565b60206040518083038186803b158015612d8d57600080fd5b505afa158015612da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc5919061349a565b6040518363ffffffff1660e01b8152600401612de2929190613a48565b602060405180830381600087803b158015612dfc57600080fd5b505af1158015612e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e349190613305565b612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90613b4c565b60405180910390fd5b6001808190555050565b600081600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612f295750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5f90613d4c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b6201518042612ffc9190613e5e565b600c819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030181905550600081600401819055505050565b600033905090565b6001600960146101000a81548160ff02191690831515021790555060006002811115613094576130936141ab565b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f36347e3e57dc39692dc597eb7f86e17e94ecda48d85c4f7bfa0e4631fb16bb2784426040516130f3929190613de2565b60405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6000813590506132128161473c565b92915050565b60008135905061322781614753565b92915050565b60008151905061323c81614753565b92915050565b6000813590506132518161476a565b92915050565b60008151905061326681614781565b92915050565b60008135905061327b81614798565b92915050565b60008151905061329081614798565b92915050565b6000815190506132a5816147af565b92915050565b6000602082840312156132c1576132c06141da565b5b60006132cf84828501613203565b91505092915050565b6000602082840312156132ee576132ed6141da565b5b60006132fc84828501613218565b91505092915050565b60006020828403121561331b5761331a6141da565b5b60006133298482850161322d565b91505092915050565b600060208284031215613348576133476141da565b5b600061335684828501613242565b91505092915050565b60008060008060808587031215613379576133786141da565b5b600061338787828801613242565b945050602061339887828801613203565b93505060406133a98782880161326c565b92505060606133ba8782880161326c565b91505092959194509250565b600080604083850312156133dd576133dc6141da565b5b60006133eb85828601613242565b92505060206133fc8582860161326c565b9150509250929050565b600080600080608085870312156134205761341f6141da565b5b600061342e87828801613242565b945050602061343f8782880161326c565b93505060406134508782880161326c565b92505060606134618782880161326c565b91505092959194509250565b600060208284031215613483576134826141da565b5b60006134918482850161326c565b91505092915050565b6000602082840312156134b0576134af6141da565b5b60006134be84828501613281565b91505092915050565b600080600080600060a086880312156134e3576134e26141da565b5b60006134f188828901613296565b955050602061350288828901613257565b945050604061351388828901613281565b935050606061352488828901613281565b925050608061353588828901613296565b9150509295509295909350565b61354b8161408a565b82525050565b61355a8161409c565b82525050565b6135698161409c565b82525050565b600061357c601783613e4d565b9150613587826141df565b602082019050919050565b600061359f601f83613e4d565b91506135aa82614208565b602082019050919050565b60006135c2600f83613e4d565b91506135cd82614231565b602082019050919050565b60006135e5601983613e42565b91506135f08261425a565b601982019050919050565b6000613608602b83613e4d565b915061361382614283565b604082019050919050565b600061362b602683613e4d565b9150613636826142d2565b604082019050919050565b600061364e600f83613e4d565b915061365982614321565b602082019050919050565b6000613671601883613e4d565b915061367c8261434a565b602082019050919050565b6000613694602883613e4d565b915061369f82614373565b604082019050919050565b60006136b7601983613e4d565b91506136c2826143c2565b602082019050919050565b60006136da602583613e4d565b91506136e5826143eb565b604082019050919050565b60006136fd601383613e4d565b91506137088261443a565b602082019050919050565b6000613720601e83613e4d565b915061372b82614463565b602082019050919050565b6000613743601a83613e4d565b915061374e8261448c565b602082019050919050565b6000613766601683613e4d565b9150613771826144b5565b602082019050919050565b6000613789602083613e4d565b9150613794826144de565b602082019050919050565b60006137ac602983613e4d565b91506137b782614507565b604082019050919050565b60006137cf601783613e4d565b91506137da82614556565b602082019050919050565b60006137f2601083613e4d565b91506137fd8261457f565b602082019050919050565b6000613815602083613e4d565b9150613820826145a8565b602082019050919050565b6000613838600d83613e4d565b9150613843826145d1565b602082019050919050565b600061385b602583613e4d565b9150613866826145fa565b604082019050919050565b600061387e601683613e42565b915061388982614649565b601682019050919050565b60006138a1601583613e4d565b91506138ac82614672565b602082019050919050565b60006138c4601d83613e4d565b91506138cf8261469b565b602082019050919050565b60006138e7601f83613e4d565b91506138f2826146c4565b602082019050919050565b600061390a602683613e4d565b9150613915826146ed565b604082019050919050565b60e08201600082015161393660008501826139ae565b50602082015161394960208501826139ae565b50604082015161395c60408501826139ae565b50606082015161396f60608501826139ae565b50608082015161398260808501826139ae565b5060a082015161399560a08501826139ae565b5060c08201516139a860c0850182613551565b50505050565b6139b7816140e4565b82525050565b6139c6816140e4565b82525050565b60006139d7826135d8565b9150819050919050565b60006139ec82613871565b9150819050919050565b6000602082019050613a0b6000830184613542565b92915050565b6000606082019050613a266000830186613542565b613a336020830185613542565b613a4060408301846139bd565b949350505050565b6000604082019050613a5d6000830185613542565b613a6a60208301846139bd565b9392505050565b6000602082019050613a866000830184613560565b92915050565b60006020820190508181036000830152613aa58161356f565b9050919050565b60006020820190508181036000830152613ac581613592565b9050919050565b60006020820190508181036000830152613ae5816135b5565b9050919050565b60006020820190508181036000830152613b05816135fb565b9050919050565b60006020820190508181036000830152613b258161361e565b9050919050565b60006020820190508181036000830152613b4581613641565b9050919050565b60006020820190508181036000830152613b6581613664565b9050919050565b60006020820190508181036000830152613b8581613687565b9050919050565b60006020820190508181036000830152613ba5816136aa565b9050919050565b60006020820190508181036000830152613bc5816136cd565b9050919050565b60006020820190508181036000830152613be5816136f0565b9050919050565b60006020820190508181036000830152613c0581613713565b9050919050565b60006020820190508181036000830152613c2581613736565b9050919050565b60006020820190508181036000830152613c4581613759565b9050919050565b60006020820190508181036000830152613c658161377c565b9050919050565b60006020820190508181036000830152613c858161379f565b9050919050565b60006020820190508181036000830152613ca5816137c2565b9050919050565b60006020820190508181036000830152613cc5816137e5565b9050919050565b60006020820190508181036000830152613ce581613808565b9050919050565b60006020820190508181036000830152613d058161382b565b9050919050565b60006020820190508181036000830152613d258161384e565b9050919050565b60006020820190508181036000830152613d4581613894565b9050919050565b60006020820190508181036000830152613d65816138b7565b9050919050565b60006020820190508181036000830152613d85816138da565b9050919050565b60006020820190508181036000830152613da5816138fd565b9050919050565b600060e082019050613dc16000830184613920565b92915050565b6000602082019050613ddc60008301846139bd565b92915050565b6000604082019050613df760008301856139bd565b613e0460208301846139bd565b9392505050565b6000606082019050613e2060008301866139bd565b613e2d60208301856139bd565b613e3a60408301846139bd565b949350505050565b600081905092915050565b600082825260208201905092915050565b6000613e69826140e4565b9150613e74836140e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ea957613ea861414d565b5b828201905092915050565b6000613ebf826140e4565b9150613eca836140e4565b925082613eda57613ed961417c565b5b828204905092915050565b6000613ef0826140ba565b9150613efb836140ba565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615613f3a57613f3961414d565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615613f7757613f7661414d565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615613fb457613fb361414d565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615613ff157613ff061414d565b5b828202905092915050565b6000614007826140e4565b9150614012836140e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404b5761404a61414d565b5b828202905092915050565b6000614061826140e4565b915061406c836140e4565b92508282101561407f5761407e61414d565b5b828203905092915050565b6000614095826140c4565b9050919050565b60008115159050919050565b60006140b38261408a565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600069ffffffffffffffffffff82169050919050565b600061410f826140e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141425761414161414d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080fd5b7f4272696467653a20546f6b656e206e6f7420666f756e64000000000000000000600082015250565b7f4272696467653a204e6f2066756e647320696e20746865206272696467652e00600082015250565b7f4272696467653a205061757365642e0000000000000000000000000000000000600082015250565b7f52656c656173696e672066656520746f20756e6c6f636b657200000000000000600082015250565b7f4272696467653a20506c65617365207265647563652074686520616d6f756e7460008201527f206f6620746f6b656e732e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f4272696467653a205472616e73666572206661696c65642e0000000000000000600082015250565b7f54686973206164647265737320697320616c726561647920736574206173207560008201527f6e6c6f636b65722e000000000000000000000000000000000000000000000000602082015250565b7f4272696467653a205472616e7366657220626c6f636b65642e00000000000000600082015250565b7f4272696467653a204461696c79207472616e73666572206c696d69742072656160008201527f636865642e000000000000000000000000000000000000000000000000000000602082015250565b7f4272696467653a204e6f2062616c616e63652e00000000000000000000000000600082015250565b7f4272696467653a205472616e73616374696f6e2070726f6365737365642e0000600082015250565b7f596f75206e65656420746f207370656e64206d6f726520455448000000000000600082015250565b7f4272696467653a206163636573732064656e6965642e00000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4272696467653a204163636f756e742068617320696e73756666696369656e7460008201527f2062616c616e63652e0000000000000000000000000000000000000000000000602082015250565b7f4272696467653a205472616e73666572206661696c6564000000000000000000600082015250565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4272696467653a20476f74746120626520736d616c6c6572207468656e203235600082015250565b7f43616e2774206265207a65726f00000000000000000000000000000000000000600082015250565b7f4272696467653a20596f752063616e27742063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b7f52656c656173696e672065746820746f206f776e657200000000000000000000600082015250565b7f4272696467653a2043616e2774206265207a65726f0000000000000000000000600082015250565b7f4272696467653a20546f6b656e206e6f7420617574686f72697a65642e000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f54686973206164647265737320697320616c726561647920736574206173207060008201527f61757365722e0000000000000000000000000000000000000000000000000000602082015250565b6147458161408a565b811461475057600080fd5b50565b61475c8161409c565b811461476757600080fd5b50565b614773816140a8565b811461477e57600080fd5b50565b61478a816140ba565b811461479557600080fd5b50565b6147a1816140e4565b81146147ac57600080fd5b50565b6147b8816140ee565b81146147c357600080fd5b5056fea26469706673582212204256dc22c0ef9610879014d78aef7da340e0ee6fb2a4d06f941dd0eebc5e8d9164736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004c3a8eceb656ec63eae80a4ebd565e4887db6160000000000000000000000000c7230badf274995f1933598c249c824fde26f426000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b
-----Decoded View---------------
Arg [0] : soku (address): 0x4C3A8ECeB656Ec63eaE80a4ebD565E4887DB6160
Arg [1] : suteku (address): 0xc7230BADF274995F1933598c249c824fDE26F426
Arg [2] : unlockerBot (address): 0xff1b8770501a2ce0e0A2fC1ae3D0E13Bf441AB1b
Arg [3] : pauserBot (address): 0xff1b8770501a2ce0e0A2fC1ae3D0E13Bf441AB1b
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004c3a8eceb656ec63eae80a4ebd565e4887db6160
Arg [1] : 000000000000000000000000c7230badf274995f1933598c249c824fde26f426
Arg [2] : 000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b
Arg [3] : 000000000000000000000000ff1b8770501a2ce0e0a2fc1ae3d0e13bf441ab1b
Deployed Bytecode Sourcemap
10374:12414:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15895:565;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10496:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14736:1116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22219:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19568:488;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17216:2032;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10800:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16750:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5467:103;;;;;;;;;;;;;:::i;:::-;;20064:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21523:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4816:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16468:273;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20905:247;;;;;;;;;;;;;:::i;:::-;;20359:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10428:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20201:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19414:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17029:175;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20726:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22406:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22009:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5725:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21160:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19258:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15895:565;13808:13;;;;;;;;;;;13794:27;;:10;:27;;;13786:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16024:5:::1;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;13697:6:::2;;;;;;;;;;;13696:7;13687:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;16060:16:::3;:33;16077:15;16060:33;;;;;;;;;;;;;;;;;;;;;16059:34;16051:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16160:1;16147:15;;:2;:15;;;;16139:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16200:26;16229:12;:19;16242:5;16229:19;;;;;;;;;;;;;;;16200:48;;16277:6;:28;;;16267:6;:38;;16259:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16382:4;16346:16;:33;16363:15;16346:33;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16445:6;16422:9;:16;16432:5;16422:16;;;;;;;;;;;;;;;:20;16439:2;16422:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;16399:9;:16;16409:5;16399:16;;;;;;;;;;;;;;;:20;16416:2;16399:20;;;;;;;;;;;;;;;:52;;;;16040:420;13874:1:::1;15895:565:::0;;;;:::o;10496:46::-;;;;:::o;14736:1116::-;14804:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;13697:6:::1;;;;;;;;;;;13696:7;13687:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;14831:14:::2;14848:10;14831:27;;14907:4;14877:34;;:12;:19;14890:5;14877:19;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:34;;;14869:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14984:6;14957:5;:15;;;14973:6;14957:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;;14949:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15047:26;15076:12;:19;15089:5;15076:19;;;;;;;;;;;;;;;15047:48;;15124:6;:28;;;15114:6;:38;;15106:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15236:27;;15217:15;:46;15213:106;;15280:27;15301:5;15280:20;:27::i;:::-;15213:106;15379:6;15355;:21;;;:30;;;;:::i;:::-;15331:6;:21;;:54;;;;15425:6;:25;;;15401:6;:21;;;:49;15398:128;;;15467:47;;;;;;;;;;:::i;:::-;;;;;;;;15398:128;15546:5;:18;;;15565:6;15581:4;15588:6;15546:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15538:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;15729:4;15642:174;;15700:6;15642:174;;15679:5;15642:174;;;15749:6;15770:15;15800:5;;15642:174;;;;;;;;:::i;:::-;;;;;;;;15837:5;;:7;;;;;;;;;:::i;:::-;;;;;;14820:1032;;14736:1116:::0;;;:::o;22219:179::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22304:11:::1;;;;;;;;;;;22293:22;;:7;:22;;;;22285:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22383:7;22369:11;;:21;;;;;;;;;;;;;;;;;;22219:179:::0;:::o;19568:488::-;19762:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;5047:12:::1;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19796:26:::2;19825:12;:19;19838:5;19825:19;;;;;;;;;;;;;;;19796:48;;19893:21;19862:6;:28;;:52;;;;19963:24;19929:6;:31;;:58;;;;20030:18;20002:6;:25;;:46;;;;19781:275;19568:488:::0;;;;;:::o;17216:2032::-;17272:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;13697:6:::1;;;;;;;;;;;13696:7;13687:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:8:::2;:6;:8::i;:::-;17315:28;17333:9;17315:17;:28::i;:::-;:40;;17307:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17418:15;17436:10;17418:28;;17457:22;17482:9;:16;17492:5;17482:16;;;;;;;;;;;;;;;:25;17499:7;17482:25;;;;;;;;;;;;;;;;17457:50;;17543:1;17526:14;:18;17518:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;17585:26;17614:12;:19;17627:5;17614:19;;;;;;;;;;;;;;;17585:48;;17669:27;;17650:15;:46;17646:106;;17713:27;17734:5;17713:20;:27::i;:::-;17646:106;17820:14;17792:6;:25;;;:42;;;;:::i;:::-;17764:6;:25;;:70;;;;17878:6;:25;;;17850:6;:25;;;:53;17847:132;;;17920:47;;;;;;;;;;:::i;:::-;;;;;;;;17847:132;18011:5;:15;;;18035:4;18011:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17994:14;:47;17991:120;;;18058:41;;;;;;;;;;:::i;:::-;;;;;;;;17991:120;18145:6;:25;;;18127:14;:43;18123:170;;18187:54;18199:10;18219:4;18226:14;18187:11;:54::i;:::-;18256:25;;;;;;;;;;:::i;:::-;;;;;;;;18123:170;18334:19;;18309:21;:44;18305:351;;18370:22;18395:21;18370:46;;18432:12;18450:13;;;;;;;;;;;:18;;18477:14;18450:71;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18431:90;;;18544:7;18536:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;18592:52;18612:14;18628:15;18592:52;;;;;;;:::i;:::-;;;;;;;;18355:301;;18305:351;18724:14;18696:9;:16;18706:5;18696:16;;;;;;;;;;;;;;;:25;18713:7;18696:25;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;18668:9;:16;18678:5;18668:16;;;;;;;;;;;;;;;:25;18685:7;18668:25;;;;;;;;;;;;;;;:70;;;;18789:1;18755:6;:31;;;:35;18751:272;;;18807:17;18880:3;18845:6;:31;;;18828:14;:48;;;;:::i;:::-;18827:56;;;;:::i;:::-;18807:76;;18932:9;18915:14;:26;;;;:::i;:::-;18898:43;;19002:9;18979:6;:20;;;:32;;;;:::i;:::-;18956:6;:20;;:55;;;;18792:231;18751:272;19051:5;:14;;;19066:7;19075:14;19051:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19043:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19196:10;19144:96;;19189:4;19144:96;;19173:5;19144:96;;;19208:14;19224:15;19144:96;;;;;;;:::i;:::-;;;;;;;;17296:1952;;;17216:2032:::0;;:::o;10800:26::-;;;;;;;;;;;;;:::o;16750:271::-;16817:22;16862:16;16881:10;:8;:10::i;:::-;16862:29;;16932:19;16919:9;16910:8;:18;;;;:::i;:::-;16909:42;;;;:::i;:::-;16902:49;;;16750:271;;;:::o;5467:103::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5532:30:::1;5559:1;5532:18;:30::i;:::-;5467:103::o:0;20064:129::-;20128:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;5047:12:::1;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20158:27:::2;20179:5;20158:20;:27::i;:::-;20064:129:::0;;:::o;21523:478::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21604:5:::1;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;8102:1:::2;8700:7;;:19;;8692:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8102:1;8833:7;:18;;;;21635:26:::3;21664:12;:19;21677:5;21664:19;;;;;;;;;;;;;;;21635:48;;21705:6;:13;;;;;;;;;;;;21697:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21799:6;:20;;;21765:5;:15;;;21789:4;21765:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;21757:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;21884:5;:14;;;21899:7;:5;:7::i;:::-;21908:6;:20;;;21884:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21876:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;21992:1;21969:6;:20;;:24;;;;21624:377;8058:1:::2;9012:7:::0;:22:::2;;;;5107:1:::1;21523:478:::0;:::o;4816:87::-;4862:7;4889:6;;;;;;;;;;;4882:13;;4816:87;:::o;16468:273::-;16508:7;16527:31;16583:42;16527:99;;16639:13;16659:9;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16637:49;;;;;;16721:11;16712:6;:20;;;;:::i;:::-;16697:36;;;;16468:273;:::o;20905:247::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20960:22:::1;20985:21;20960:46;;21018:12;21036:7;:5;:7::i;:::-;:12;;21057:14;21036:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21017:81;;;21117:7;21109:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;20949:203;;20905:247::o:0;20359:359::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20458:5:::1;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:2:::2;20484:8;:13;20476:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20546:26;20575:12;:19;20588:5;20575:19;;;;;;;;;;;;;;;20546:48;;20616:6;:13;;;;;;;;;;;;20608:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20702:8;20668:6;:31;;:42;;;;20465:253;5107:1:::1;20359:359:::0;;:::o;10428:20::-;;;;:::o;20201:150::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20286:1:::1;20280:3;:7;20272:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;20335:8;20329:3;:14;;;;:::i;:::-;20316:10;:27;;;;20201:150:::0;:::o;19414:146::-;19495:18;;:::i;:::-;19479:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;19533:12:::1;:19;19546:5;19533:19;;;;;;;;;;;;;;;19526:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19414:146:::0;;;;:::o;17029:175::-;17068:14;17095:16;17114:10;:8;:10::i;:::-;17095:29;;17192:3;17181:8;17156:21;17145:10;;:32;;;;:::i;:::-;17144:45;;;;:::i;:::-;17142:53;;;;:::i;:::-;17135:60;;;17029:175;:::o;20726:171::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20823:1:::1;20814:6;:10;20806:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;20883:6;20861:19;:28;;;;20726:171:::0;:::o;22406:90::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22483:5:::1;22474:6;;:14;;;;;;;;;;;;;;;;;;22406:90:::0;:::o;22009:202::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22100:13:::1;;;;;;;;;;;22087:26;;:9;:26;;;;22079:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22193:9;22169:13;;:34;;;;;;;;;;;;;;;;;;22009:202:::0;:::o;5725:201::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5834:1:::1;5814:22;;:8;:22;;;;5806:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5890:28;5909:8;5890:18;:28::i;:::-;5725:201:::0;:::o;21160:355::-;5047:12;:10;:12::i;:::-;5036:23;;:7;:5;:7::i;:::-;:23;;;5028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8102:1:::1;8700:7;;:19;;8692:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8102:1;8833:7;:18;;;;21276:1:::2;21250:28;;21258:5;21250:28;;;;21242:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21357:1;21323:5;:15;;;21347:4;21323:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;21315:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21423:5;:14;;;21438:7;:5;:7::i;:::-;21447:5;:15;;;21471:4;21447:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21423:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21415:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;8058:1:::1;9012:7:::0;:22:::1;;;;21160:355:::0;:::o;19258:148::-;19335:15;19319:5;14159:12;;;;;;;;;;;14133:39;;14141:5;14133:39;;;:94;;;;14216:10;;;;;;;;;;;14190:37;;14198:5;14190:37;;;14133:94;14111:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;19370:9:::1;:16;19380:5;19370:16;;;;;;;;;;;;;;;:28;19387:10;19370:28;;;;;;;;;;;;;;;;19363:35;;19258:148:::0;;;;:::o;14289:286::-;10970:5;14383:15;:49;;;;:::i;:::-;14353:27;:79;;;;14443:26;14472:12;:19;14485:5;14472:19;;;;;;;;;;;;;;;14443:48;;14526:1;14502:6;:21;;:25;;;;14566:1;14538:6;:25;;:29;;;;14342:233;14289:286;:::o;3536:98::-;3589:7;3616:10;3609:17;;3536:98;:::o;22504:279::-;22596:4;22587:6;;:13;;;;;;;;;;;;;;;;;;22737:27;22618:157;;;;;;;;:::i;:::-;;22669:2;22618:157;;22650:4;22618:157;;;22686:6;22707:15;22618:157;;;;;;;:::i;:::-;;;;;;;;22504:279;;;:::o;6086:191::-;6160:16;6179:6;;;;;;;;;;;6160:25;;6205:8;6196:6;;:17;;;;;;;;;;;;;;;;;;6260:8;6229:40;;6250:8;6229:40;;;;;;;;;;;;6149:128;6086:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:137::-;345:5;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;291:137;;;;:::o;434:165::-;493:5;531:6;518:20;509:29;;547:46;587:5;547:46;:::i;:::-;434:165;;;;:::o;605:141::-;661:5;692:6;686:13;677:22;;708:32;734:5;708:32;:::i;:::-;605:141;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1046:141::-;1102:5;1133:6;1127:13;1118:22;;1149:32;1175:5;1149:32;:::i;:::-;1046:141;;;;:::o;1193:329::-;1252:6;1301:2;1289:9;1280:7;1276:23;1272:32;1269:119;;;1307:79;;:::i;:::-;1269:119;1427:1;1452:53;1497:7;1488:6;1477:9;1473:22;1452:53;:::i;:::-;1442:63;;1398:117;1193:329;;;;:::o;1528:323::-;1584:6;1633:2;1621:9;1612:7;1608:23;1604:32;1601:119;;;1639:79;;:::i;:::-;1601:119;1759:1;1784:50;1826:7;1817:6;1806:9;1802:22;1784:50;:::i;:::-;1774:60;;1730:114;1528:323;;;;:::o;1857:345::-;1924:6;1973:2;1961:9;1952:7;1948:23;1944:32;1941:119;;;1979:79;;:::i;:::-;1941:119;2099:1;2124:61;2177:7;2168:6;2157:9;2153:22;2124:61;:::i;:::-;2114:71;;2070:125;1857:345;;;;:::o;2208:355::-;2280:6;2329:2;2317:9;2308:7;2304:23;2300:32;2297:119;;;2335:79;;:::i;:::-;2297:119;2455:1;2480:66;2538:7;2529:6;2518:9;2514:22;2480:66;:::i;:::-;2470:76;;2426:130;2208:355;;;;:::o;2569:791::-;2668:6;2676;2684;2692;2741:3;2729:9;2720:7;2716:23;2712:33;2709:120;;;2748:79;;:::i;:::-;2709:120;2868:1;2893:66;2951:7;2942:6;2931:9;2927:22;2893:66;:::i;:::-;2883:76;;2839:130;3008:2;3034:53;3079:7;3070:6;3059:9;3055:22;3034:53;:::i;:::-;3024:63;;2979:118;3136:2;3162:53;3207:7;3198:6;3187:9;3183:22;3162:53;:::i;:::-;3152:63;;3107:118;3264:2;3290:53;3335:7;3326:6;3315:9;3311:22;3290:53;:::i;:::-;3280:63;;3235:118;2569:791;;;;;;;:::o;3366:500::-;3447:6;3455;3504:2;3492:9;3483:7;3479:23;3475:32;3472:119;;;3510:79;;:::i;:::-;3472:119;3630:1;3655:66;3713:7;3704:6;3693:9;3689:22;3655:66;:::i;:::-;3645:76;;3601:130;3770:2;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3741:118;3366:500;;;;;:::o;3872:791::-;3971:6;3979;3987;3995;4044:3;4032:9;4023:7;4019:23;4015:33;4012:120;;;4051:79;;:::i;:::-;4012:120;4171:1;4196:66;4254:7;4245:6;4234:9;4230:22;4196:66;:::i;:::-;4186:76;;4142:130;4311:2;4337:53;4382:7;4373:6;4362:9;4358:22;4337:53;:::i;:::-;4327:63;;4282:118;4439:2;4465:53;4510:7;4501:6;4490:9;4486:22;4465:53;:::i;:::-;4455:63;;4410:118;4567:2;4593:53;4638:7;4629:6;4618:9;4614:22;4593:53;:::i;:::-;4583:63;;4538:118;3872:791;;;;;;;:::o;4669:329::-;4728:6;4777:2;4765:9;4756:7;4752:23;4748:32;4745:119;;;4783:79;;:::i;:::-;4745:119;4903:1;4928:53;4973:7;4964:6;4953:9;4949:22;4928:53;:::i;:::-;4918:63;;4874:117;4669:329;;;;:::o;5004:351::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:119;;;5129:79;;:::i;:::-;5091:119;5249:1;5274:64;5330:7;5321:6;5310:9;5306:22;5274:64;:::i;:::-;5264:74;;5220:128;5004:351;;;;:::o;5361:971::-;5464:6;5472;5480;5488;5496;5545:3;5533:9;5524:7;5520:23;5516:33;5513:120;;;5552:79;;:::i;:::-;5513:120;5672:1;5697:63;5752:7;5743:6;5732:9;5728:22;5697:63;:::i;:::-;5687:73;;5643:127;5809:2;5835:63;5890:7;5881:6;5870:9;5866:22;5835:63;:::i;:::-;5825:73;;5780:128;5947:2;5973:64;6029:7;6020:6;6009:9;6005:22;5973:64;:::i;:::-;5963:74;;5918:129;6086:2;6112:64;6168:7;6159:6;6148:9;6144:22;6112:64;:::i;:::-;6102:74;;6057:129;6225:3;6252:63;6307:7;6298:6;6287:9;6283:22;6252:63;:::i;:::-;6242:73;;6196:129;5361:971;;;;;;;;:::o;6338:118::-;6425:24;6443:5;6425:24;:::i;:::-;6420:3;6413:37;6338:118;;:::o;6462:99::-;6533:21;6548:5;6533:21;:::i;:::-;6528:3;6521:34;6462:99;;:::o;6567:109::-;6648:21;6663:5;6648:21;:::i;:::-;6643:3;6636:34;6567:109;;:::o;6682:366::-;6824:3;6845:67;6909:2;6904:3;6845:67;:::i;:::-;6838:74;;6921:93;7010:3;6921:93;:::i;:::-;7039:2;7034:3;7030:12;7023:19;;6682:366;;;:::o;7054:::-;7196:3;7217:67;7281:2;7276:3;7217:67;:::i;:::-;7210:74;;7293:93;7382:3;7293:93;:::i;:::-;7411:2;7406:3;7402:12;7395:19;;7054:366;;;:::o;7426:::-;7568:3;7589:67;7653:2;7648:3;7589:67;:::i;:::-;7582:74;;7665:93;7754:3;7665:93;:::i;:::-;7783:2;7778:3;7774:12;7767:19;;7426:366;;;:::o;7798:400::-;7957:3;7978:84;8059:2;8054:3;7978:84;:::i;:::-;7971:91;;8071:93;8160:3;8071:93;:::i;:::-;8189:2;8184:3;8180:12;8173:19;;7798:400;;;:::o;8204:366::-;8346:3;8367:67;8431:2;8426:3;8367:67;:::i;:::-;8360:74;;8443:93;8532:3;8443:93;:::i;:::-;8561:2;8556:3;8552:12;8545:19;;8204:366;;;:::o;8576:::-;8718:3;8739:67;8803:2;8798:3;8739:67;:::i;:::-;8732:74;;8815:93;8904:3;8815:93;:::i;:::-;8933:2;8928:3;8924:12;8917:19;;8576:366;;;:::o;8948:::-;9090:3;9111:67;9175:2;9170:3;9111:67;:::i;:::-;9104:74;;9187:93;9276:3;9187:93;:::i;:::-;9305:2;9300:3;9296:12;9289:19;;8948:366;;;:::o;9320:::-;9462:3;9483:67;9547:2;9542:3;9483:67;:::i;:::-;9476:74;;9559:93;9648:3;9559:93;:::i;:::-;9677:2;9672:3;9668:12;9661:19;;9320:366;;;:::o;9692:::-;9834:3;9855:67;9919:2;9914:3;9855:67;:::i;:::-;9848:74;;9931:93;10020:3;9931:93;:::i;:::-;10049:2;10044:3;10040:12;10033:19;;9692:366;;;:::o;10064:::-;10206:3;10227:67;10291:2;10286:3;10227:67;:::i;:::-;10220:74;;10303:93;10392:3;10303:93;:::i;:::-;10421:2;10416:3;10412:12;10405:19;;10064:366;;;:::o;10436:::-;10578:3;10599:67;10663:2;10658:3;10599:67;:::i;:::-;10592:74;;10675:93;10764:3;10675:93;:::i;:::-;10793:2;10788:3;10784:12;10777:19;;10436:366;;;:::o;10808:::-;10950:3;10971:67;11035:2;11030:3;10971:67;:::i;:::-;10964:74;;11047:93;11136:3;11047:93;:::i;:::-;11165:2;11160:3;11156:12;11149:19;;10808:366;;;:::o;11180:::-;11322:3;11343:67;11407:2;11402:3;11343:67;:::i;:::-;11336:74;;11419:93;11508:3;11419:93;:::i;:::-;11537:2;11532:3;11528:12;11521:19;;11180:366;;;:::o;11552:::-;11694:3;11715:67;11779:2;11774:3;11715:67;:::i;:::-;11708:74;;11791:93;11880:3;11791:93;:::i;:::-;11909:2;11904:3;11900:12;11893:19;;11552:366;;;:::o;11924:::-;12066:3;12087:67;12151:2;12146:3;12087:67;:::i;:::-;12080:74;;12163:93;12252:3;12163:93;:::i;:::-;12281:2;12276:3;12272:12;12265:19;;11924:366;;;:::o;12296:::-;12438:3;12459:67;12523:2;12518:3;12459:67;:::i;:::-;12452:74;;12535:93;12624:3;12535:93;:::i;:::-;12653:2;12648:3;12644:12;12637:19;;12296:366;;;:::o;12668:::-;12810:3;12831:67;12895:2;12890:3;12831:67;:::i;:::-;12824:74;;12907:93;12996:3;12907:93;:::i;:::-;13025:2;13020:3;13016:12;13009:19;;12668:366;;;:::o;13040:::-;13182:3;13203:67;13267:2;13262:3;13203:67;:::i;:::-;13196:74;;13279:93;13368:3;13279:93;:::i;:::-;13397:2;13392:3;13388:12;13381:19;;13040:366;;;:::o;13412:::-;13554:3;13575:67;13639:2;13634:3;13575:67;:::i;:::-;13568:74;;13651:93;13740:3;13651:93;:::i;:::-;13769:2;13764:3;13760:12;13753:19;;13412:366;;;:::o;13784:::-;13926:3;13947:67;14011:2;14006:3;13947:67;:::i;:::-;13940:74;;14023:93;14112:3;14023:93;:::i;:::-;14141:2;14136:3;14132:12;14125:19;;13784:366;;;:::o;14156:::-;14298:3;14319:67;14383:2;14378:3;14319:67;:::i;:::-;14312:74;;14395:93;14484:3;14395:93;:::i;:::-;14513:2;14508:3;14504:12;14497:19;;14156:366;;;:::o;14528:::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:400::-;15059:3;15080:84;15161:2;15156:3;15080:84;:::i;:::-;15073:91;;15173:93;15262:3;15173:93;:::i;:::-;15291:2;15286:3;15282:12;15275:19;;14900:400;;;:::o;15306:366::-;15448:3;15469:67;15533:2;15528:3;15469:67;:::i;:::-;15462:74;;15545:93;15634:3;15545:93;:::i;:::-;15663:2;15658:3;15654:12;15647:19;;15306:366;;;:::o;15678:::-;15820:3;15841:67;15905:2;15900:3;15841:67;:::i;:::-;15834:74;;15917:93;16006:3;15917:93;:::i;:::-;16035:2;16030:3;16026:12;16019:19;;15678:366;;;:::o;16050:::-;16192:3;16213:67;16277:2;16272:3;16213:67;:::i;:::-;16206:74;;16289:93;16378:3;16289:93;:::i;:::-;16407:2;16402:3;16398:12;16391:19;;16050:366;;;:::o;16422:::-;16564:3;16585:67;16649:2;16644:3;16585:67;:::i;:::-;16578:74;;16661:93;16750:3;16661:93;:::i;:::-;16779:2;16774:3;16770:12;16763:19;;16422:366;;;:::o;16862:1463::-;17015:4;17010:3;17006:14;17119:4;17112:5;17108:16;17102:23;17138:63;17195:4;17190:3;17186:14;17172:12;17138:63;:::i;:::-;17030:181;17302:4;17295:5;17291:16;17285:23;17321:63;17378:4;17373:3;17369:14;17355:12;17321:63;:::i;:::-;17221:173;17496:4;17489:5;17485:16;17479:23;17515:63;17572:4;17567:3;17563:14;17549:12;17515:63;:::i;:::-;17404:184;17680:4;17673:5;17669:16;17663:23;17699:63;17756:4;17751:3;17747:14;17733:12;17699:63;:::i;:::-;17598:174;17868:4;17861:5;17857:16;17851:23;17887:63;17944:4;17939:3;17935:14;17921:12;17887:63;:::i;:::-;17782:178;18056:4;18049:5;18045:16;18039:23;18075:63;18132:4;18127:3;18123:14;18109:12;18075:63;:::i;:::-;17970:178;18232:4;18225:5;18221:16;18215:23;18251:57;18302:4;18297:3;18293:14;18279:12;18251:57;:::i;:::-;18158:160;16984:1341;16862:1463;;:::o;18331:108::-;18408:24;18426:5;18408:24;:::i;:::-;18403:3;18396:37;18331:108;;:::o;18445:118::-;18532:24;18550:5;18532:24;:::i;:::-;18527:3;18520:37;18445:118;;:::o;18569:379::-;18753:3;18775:147;18918:3;18775:147;:::i;:::-;18768:154;;18939:3;18932:10;;18569:379;;;:::o;18954:::-;19138:3;19160:147;19303:3;19160:147;:::i;:::-;19153:154;;19324:3;19317:10;;18954:379;;;:::o;19339:222::-;19432:4;19470:2;19459:9;19455:18;19447:26;;19483:71;19551:1;19540:9;19536:17;19527:6;19483:71;:::i;:::-;19339:222;;;;:::o;19567:442::-;19716:4;19754:2;19743:9;19739:18;19731:26;;19767:71;19835:1;19824:9;19820:17;19811:6;19767:71;:::i;:::-;19848:72;19916:2;19905:9;19901:18;19892:6;19848:72;:::i;:::-;19930;19998:2;19987:9;19983:18;19974:6;19930:72;:::i;:::-;19567:442;;;;;;:::o;20015:332::-;20136:4;20174:2;20163:9;20159:18;20151:26;;20187:71;20255:1;20244:9;20240:17;20231:6;20187:71;:::i;:::-;20268:72;20336:2;20325:9;20321:18;20312:6;20268:72;:::i;:::-;20015:332;;;;;:::o;20353:210::-;20440:4;20478:2;20467:9;20463:18;20455:26;;20491:65;20553:1;20542:9;20538:17;20529:6;20491:65;:::i;:::-;20353:210;;;;:::o;20569:419::-;20735:4;20773:2;20762:9;20758:18;20750:26;;20822:9;20816:4;20812:20;20808:1;20797:9;20793:17;20786:47;20850:131;20976:4;20850:131;:::i;:::-;20842:139;;20569:419;;;:::o;20994:::-;21160:4;21198:2;21187:9;21183:18;21175:26;;21247:9;21241:4;21237:20;21233:1;21222:9;21218:17;21211:47;21275:131;21401:4;21275:131;:::i;:::-;21267:139;;20994:419;;;:::o;21419:::-;21585:4;21623:2;21612:9;21608:18;21600:26;;21672:9;21666:4;21662:20;21658:1;21647:9;21643:17;21636:47;21700:131;21826:4;21700:131;:::i;:::-;21692:139;;21419:419;;;:::o;21844:::-;22010:4;22048:2;22037:9;22033:18;22025:26;;22097:9;22091:4;22087:20;22083:1;22072:9;22068:17;22061:47;22125:131;22251:4;22125:131;:::i;:::-;22117:139;;21844:419;;;:::o;22269:::-;22435:4;22473:2;22462:9;22458:18;22450:26;;22522:9;22516:4;22512:20;22508:1;22497:9;22493:17;22486:47;22550:131;22676:4;22550:131;:::i;:::-;22542:139;;22269:419;;;:::o;22694:::-;22860:4;22898:2;22887:9;22883:18;22875:26;;22947:9;22941:4;22937:20;22933:1;22922:9;22918:17;22911:47;22975:131;23101:4;22975:131;:::i;:::-;22967:139;;22694:419;;;:::o;23119:::-;23285:4;23323:2;23312:9;23308:18;23300:26;;23372:9;23366:4;23362:20;23358:1;23347:9;23343:17;23336:47;23400:131;23526:4;23400:131;:::i;:::-;23392:139;;23119:419;;;:::o;23544:::-;23710:4;23748:2;23737:9;23733:18;23725:26;;23797:9;23791:4;23787:20;23783:1;23772:9;23768:17;23761:47;23825:131;23951:4;23825:131;:::i;:::-;23817:139;;23544:419;;;:::o;23969:::-;24135:4;24173:2;24162:9;24158:18;24150:26;;24222:9;24216:4;24212:20;24208:1;24197:9;24193:17;24186:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;23969:419;;;:::o;24394:::-;24560:4;24598:2;24587:9;24583:18;24575:26;;24647:9;24641:4;24637:20;24633:1;24622:9;24618:17;24611:47;24675:131;24801:4;24675:131;:::i;:::-;24667:139;;24394:419;;;:::o;24819:::-;24985:4;25023:2;25012:9;25008:18;25000:26;;25072:9;25066:4;25062:20;25058:1;25047:9;25043:17;25036:47;25100:131;25226:4;25100:131;:::i;:::-;25092:139;;24819:419;;;:::o;25244:::-;25410:4;25448:2;25437:9;25433:18;25425:26;;25497:9;25491:4;25487:20;25483:1;25472:9;25468:17;25461:47;25525:131;25651:4;25525:131;:::i;:::-;25517:139;;25244:419;;;:::o;25669:::-;25835:4;25873:2;25862:9;25858:18;25850:26;;25922:9;25916:4;25912:20;25908:1;25897:9;25893:17;25886:47;25950:131;26076:4;25950:131;:::i;:::-;25942:139;;25669:419;;;:::o;26094:::-;26260:4;26298:2;26287:9;26283:18;26275:26;;26347:9;26341:4;26337:20;26333:1;26322:9;26318:17;26311:47;26375:131;26501:4;26375:131;:::i;:::-;26367:139;;26094:419;;;:::o;26519:::-;26685:4;26723:2;26712:9;26708:18;26700:26;;26772:9;26766:4;26762:20;26758:1;26747:9;26743:17;26736:47;26800:131;26926:4;26800:131;:::i;:::-;26792:139;;26519:419;;;:::o;26944:::-;27110:4;27148:2;27137:9;27133:18;27125:26;;27197:9;27191:4;27187:20;27183:1;27172:9;27168:17;27161:47;27225:131;27351:4;27225:131;:::i;:::-;27217:139;;26944:419;;;:::o;27369:::-;27535:4;27573:2;27562:9;27558:18;27550:26;;27622:9;27616:4;27612:20;27608:1;27597:9;27593:17;27586:47;27650:131;27776:4;27650:131;:::i;:::-;27642:139;;27369:419;;;:::o;27794:::-;27960:4;27998:2;27987:9;27983:18;27975:26;;28047:9;28041:4;28037:20;28033:1;28022:9;28018:17;28011:47;28075:131;28201:4;28075:131;:::i;:::-;28067:139;;27794:419;;;:::o;28219:::-;28385:4;28423:2;28412:9;28408:18;28400:26;;28472:9;28466:4;28462:20;28458:1;28447:9;28443:17;28436:47;28500:131;28626:4;28500:131;:::i;:::-;28492:139;;28219:419;;;:::o;28644:::-;28810:4;28848:2;28837:9;28833:18;28825:26;;28897:9;28891:4;28887:20;28883:1;28872:9;28868:17;28861:47;28925:131;29051:4;28925:131;:::i;:::-;28917:139;;28644:419;;;:::o;29069:::-;29235:4;29273:2;29262:9;29258:18;29250:26;;29322:9;29316:4;29312:20;29308:1;29297:9;29293:17;29286:47;29350:131;29476:4;29350:131;:::i;:::-;29342:139;;29069:419;;;:::o;29494:::-;29660:4;29698:2;29687:9;29683:18;29675:26;;29747:9;29741:4;29737:20;29733:1;29722:9;29718:17;29711:47;29775:131;29901:4;29775:131;:::i;:::-;29767:139;;29494:419;;;:::o;29919:::-;30085:4;30123:2;30112:9;30108:18;30100:26;;30172:9;30166:4;30162:20;30158:1;30147:9;30143:17;30136:47;30200:131;30326:4;30200:131;:::i;:::-;30192:139;;29919:419;;;:::o;30344:::-;30510:4;30548:2;30537:9;30533:18;30525:26;;30597:9;30591:4;30587:20;30583:1;30572:9;30568:17;30561:47;30625:131;30751:4;30625:131;:::i;:::-;30617:139;;30344:419;;;:::o;30769:::-;30935:4;30973:2;30962:9;30958:18;30950:26;;31022:9;31016:4;31012:20;31008:1;30997:9;30993:17;30986:47;31050:131;31176:4;31050:131;:::i;:::-;31042:139;;30769:419;;;:::o;31194:335::-;31343:4;31381:3;31370:9;31366:19;31358:27;;31395:127;31519:1;31508:9;31504:17;31495:6;31395:127;:::i;:::-;31194:335;;;;:::o;31535:222::-;31628:4;31666:2;31655:9;31651:18;31643:26;;31679:71;31747:1;31736:9;31732:17;31723:6;31679:71;:::i;:::-;31535:222;;;;:::o;31763:332::-;31884:4;31922:2;31911:9;31907:18;31899:26;;31935:71;32003:1;31992:9;31988:17;31979:6;31935:71;:::i;:::-;32016:72;32084:2;32073:9;32069:18;32060:6;32016:72;:::i;:::-;31763:332;;;;;:::o;32101:442::-;32250:4;32288:2;32277:9;32273:18;32265:26;;32301:71;32369:1;32358:9;32354:17;32345:6;32301:71;:::i;:::-;32382:72;32450:2;32439:9;32435:18;32426:6;32382:72;:::i;:::-;32464;32532:2;32521:9;32517:18;32508:6;32464:72;:::i;:::-;32101:442;;;;;;:::o;32630:147::-;32731:11;32768:3;32753:18;;32630:147;;;;:::o;32783:169::-;32867:11;32901:6;32896:3;32889:19;32941:4;32936:3;32932:14;32917:29;;32783:169;;;;:::o;32958:305::-;32998:3;33017:20;33035:1;33017:20;:::i;:::-;33012:25;;33051:20;33069:1;33051:20;:::i;:::-;33046:25;;33205:1;33137:66;33133:74;33130:1;33127:81;33124:107;;;33211:18;;:::i;:::-;33124:107;33255:1;33252;33248:9;33241:16;;32958:305;;;;:::o;33269:185::-;33309:1;33326:20;33344:1;33326:20;:::i;:::-;33321:25;;33360:20;33378:1;33360:20;:::i;:::-;33355:25;;33399:1;33389:35;;33404:18;;:::i;:::-;33389:35;33446:1;33443;33439:9;33434:14;;33269:185;;;;:::o;33460:991::-;33499:7;33522:19;33539:1;33522:19;:::i;:::-;33517:24;;33555:19;33572:1;33555:19;:::i;:::-;33550:24;;33756:1;33688:66;33684:74;33681:1;33678:81;33673:1;33670;33666:9;33662:1;33659;33655:9;33651:25;33647:113;33644:139;;;33763:18;;:::i;:::-;33644:139;33967:1;33899:66;33894:75;33891:1;33887:83;33882:1;33879;33875:9;33871:1;33868;33864:9;33860:25;33856:115;33853:141;;;33974:18;;:::i;:::-;33853:141;34178:1;34110:66;34105:75;34102:1;34098:83;34093:1;34090;34086:9;34082:1;34079;34075:9;34071:25;34067:115;34064:141;;;34185:18;;:::i;:::-;34064:141;34388:1;34320:66;34315:75;34312:1;34308:83;34303:1;34300;34296:9;34292:1;34289;34285:9;34281:25;34277:115;34274:141;;;34395:18;;:::i;:::-;34274:141;34443:1;34440;34436:9;34425:20;;33460:991;;;;:::o;34457:348::-;34497:7;34520:20;34538:1;34520:20;:::i;:::-;34515:25;;34554:20;34572:1;34554:20;:::i;:::-;34549:25;;34742:1;34674:66;34670:74;34667:1;34664:81;34659:1;34652:9;34645:17;34641:105;34638:131;;;34749:18;;:::i;:::-;34638:131;34797:1;34794;34790:9;34779:20;;34457:348;;;;:::o;34811:191::-;34851:4;34871:20;34889:1;34871:20;:::i;:::-;34866:25;;34905:20;34923:1;34905:20;:::i;:::-;34900:25;;34944:1;34941;34938:8;34935:34;;;34949:18;;:::i;:::-;34935:34;34994:1;34991;34987:9;34979:17;;34811:191;;;;:::o;35008:96::-;35045:7;35074:24;35092:5;35074:24;:::i;:::-;35063:35;;35008:96;;;:::o;35110:90::-;35144:7;35187:5;35180:13;35173:21;35162:32;;35110:90;;;:::o;35206:109::-;35256:7;35285:24;35303:5;35285:24;:::i;:::-;35274:35;;35206:109;;;:::o;35321:76::-;35357:7;35386:5;35375:16;;35321:76;;;:::o;35403:126::-;35440:7;35480:42;35473:5;35469:54;35458:65;;35403:126;;;:::o;35535:77::-;35572:7;35601:5;35590:16;;35535:77;;;:::o;35618:105::-;35654:7;35694:22;35687:5;35683:34;35672:45;;35618:105;;;:::o;35729:233::-;35768:3;35791:24;35809:5;35791:24;:::i;:::-;35782:33;;35837:66;35830:5;35827:77;35824:103;;;35907:18;;:::i;:::-;35824:103;35954:1;35947:5;35943:13;35936:20;;35729:233;;;:::o;35968:180::-;36016:77;36013:1;36006:88;36113:4;36110:1;36103:15;36137:4;36134:1;36127:15;36154:180;36202:77;36199:1;36192:88;36299:4;36296:1;36289:15;36323:4;36320:1;36313:15;36340:180;36388:77;36385:1;36378:88;36485:4;36482:1;36475:15;36509:4;36506:1;36499:15;36649:117;36758:1;36755;36748:12;36772:173;36912:25;36908:1;36900:6;36896:14;36889:49;36772:173;:::o;36951:181::-;37091:33;37087:1;37079:6;37075:14;37068:57;36951:181;:::o;37138:165::-;37278:17;37274:1;37266:6;37262:14;37255:41;37138:165;:::o;37309:175::-;37449:27;37445:1;37437:6;37433:14;37426:51;37309:175;:::o;37490:230::-;37630:34;37626:1;37618:6;37614:14;37607:58;37699:13;37694:2;37686:6;37682:15;37675:38;37490:230;:::o;37726:225::-;37866:34;37862:1;37854:6;37850:14;37843:58;37935:8;37930:2;37922:6;37918:15;37911:33;37726:225;:::o;37957:165::-;38097:17;38093:1;38085:6;38081:14;38074:41;37957:165;:::o;38128:174::-;38268:26;38264:1;38256:6;38252:14;38245:50;38128:174;:::o;38308:227::-;38448:34;38444:1;38436:6;38432:14;38425:58;38517:10;38512:2;38504:6;38500:15;38493:35;38308:227;:::o;38541:175::-;38681:27;38677:1;38669:6;38665:14;38658:51;38541:175;:::o;38722:224::-;38862:34;38858:1;38850:6;38846:14;38839:58;38931:7;38926:2;38918:6;38914:15;38907:32;38722:224;:::o;38952:169::-;39092:21;39088:1;39080:6;39076:14;39069:45;38952:169;:::o;39127:180::-;39267:32;39263:1;39255:6;39251:14;39244:56;39127:180;:::o;39313:176::-;39453:28;39449:1;39441:6;39437:14;39430:52;39313:176;:::o;39495:172::-;39635:24;39631:1;39623:6;39619:14;39612:48;39495:172;:::o;39673:182::-;39813:34;39809:1;39801:6;39797:14;39790:58;39673:182;:::o;39861:228::-;40001:34;39997:1;39989:6;39985:14;39978:58;40070:11;40065:2;40057:6;40053:15;40046:36;39861:228;:::o;40095:173::-;40235:25;40231:1;40223:6;40219:14;40212:49;40095:173;:::o;40274:166::-;40414:18;40410:1;40402:6;40398:14;40391:42;40274:166;:::o;40446:182::-;40586:34;40582:1;40574:6;40570:14;40563:58;40446:182;:::o;40634:163::-;40774:15;40770:1;40762:6;40758:14;40751:39;40634:163;:::o;40803:224::-;40943:34;40939:1;40931:6;40927:14;40920:58;41012:7;41007:2;40999:6;40995:15;40988:32;40803:224;:::o;41033:172::-;41173:24;41169:1;41161:6;41157:14;41150:48;41033:172;:::o;41211:171::-;41351:23;41347:1;41339:6;41335:14;41328:47;41211:171;:::o;41388:179::-;41528:31;41524:1;41516:6;41512:14;41505:55;41388:179;:::o;41573:181::-;41713:33;41709:1;41701:6;41697:14;41690:57;41573:181;:::o;41760:225::-;41900:34;41896:1;41888:6;41884:14;41877:58;41969:8;41964:2;41956:6;41952:15;41945:33;41760:225;:::o;41991:122::-;42064:24;42082:5;42064:24;:::i;:::-;42057:5;42054:35;42044:63;;42103:1;42100;42093:12;42044:63;41991:122;:::o;42119:116::-;42189:21;42204:5;42189:21;:::i;:::-;42182:5;42179:32;42169:60;;42225:1;42222;42215:12;42169:60;42119:116;:::o;42241:148::-;42327:37;42358:5;42327:37;:::i;:::-;42320:5;42317:48;42307:76;;42379:1;42376;42369:12;42307:76;42241:148;:::o;42395:120::-;42467:23;42484:5;42467:23;:::i;:::-;42460:5;42457:34;42447:62;;42505:1;42502;42495:12;42447:62;42395:120;:::o;42521:122::-;42594:24;42612:5;42594:24;:::i;:::-;42587:5;42584:35;42574:63;;42633:1;42630;42623:12;42574:63;42521:122;:::o;42649:120::-;42721:23;42738:5;42721:23;:::i;:::-;42714:5;42711:34;42701:62;;42759:1;42756;42749:12;42701:62;42649:120;:::o
Swarm Source
ipfs://4256dc22c0ef9610879014d78aef7da340e0ee6fb2a4d06f941dd0eebc5e8d91
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.