Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 13,749 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 12858138 | 1223 days ago | IN | 0 ETH | 0.00129537 | ||||
Zap Out | 11592475 | 1418 days ago | IN | 0 ETH | 0.00272759 | ||||
Zap Out | 11592475 | 1418 days ago | IN | 0 ETH | 0.00255455 | ||||
Zap Out | 11163704 | 1484 days ago | IN | 0 ETH | 0.00214903 | ||||
Zap Out | 11040972 | 1503 days ago | IN | 0 ETH | 0.00184319 | ||||
Zap Out | 11032799 | 1504 days ago | IN | 0 ETH | 0.00102399 | ||||
Toggle Contract ... | 11027875 | 1505 days ago | IN | 0 ETH | 0.00168348 | ||||
In Case Tokenget... | 11027749 | 1505 days ago | IN | 0 ETH | 0.00272953 | ||||
Zap Out | 11027737 | 1505 days ago | IN | 0 ETH | 0.01749932 | ||||
Zap Out | 11027711 | 1505 days ago | IN | 0 ETH | 0.01485015 | ||||
Zap Out | 11027698 | 1505 days ago | IN | 0 ETH | 0.0222364 | ||||
Zap Out | 11027632 | 1505 days ago | IN | 0 ETH | 0.01688397 | ||||
Zap Out | 11027613 | 1505 days ago | IN | 0 ETH | 0.01436531 | ||||
Zap Out2Pair Tok... | 11027602 | 1505 days ago | IN | 0 ETH | 0.00986024 | ||||
Zap Out | 11027573 | 1505 days ago | IN | 0 ETH | 0.01454877 | ||||
Zap Out | 11027538 | 1505 days ago | IN | 0 ETH | 0.01343222 | ||||
Zap Out | 11027512 | 1505 days ago | IN | 0 ETH | 0.01646613 | ||||
Zap Out | 11027500 | 1505 days ago | IN | 0 ETH | 0.01717507 | ||||
Zap Out | 11027390 | 1505 days ago | IN | 0 ETH | 0.01578099 | ||||
Zap Out | 11027375 | 1505 days ago | IN | 0 ETH | 0.01282441 | ||||
Zap Out | 11027375 | 1505 days ago | IN | 0 ETH | 0.01307144 | ||||
Zap Out | 11027234 | 1505 days ago | IN | 0 ETH | 0.01429298 | ||||
Zap Out | 11027167 | 1505 days ago | IN | 0 ETH | 0.02788884 | ||||
Zap Out | 11027121 | 1505 days ago | IN | 0 ETH | 0.01113629 | ||||
Zap Out | 11027104 | 1505 days ago | IN | 0 ETH | 0.01418367 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11027711 | 1505 days ago | 0.47417711 ETH | ||||
11027711 | 1505 days ago | 0.23744476 ETH | ||||
11027711 | 1505 days ago | 0.23673235 ETH | ||||
11027632 | 1505 days ago | 0.2388914 ETH | ||||
11027632 | 1505 days ago | 0.1192659 ETH | ||||
11027632 | 1505 days ago | 0.11962549 ETH | ||||
11027613 | 1505 days ago | 0.32689413 ETH | ||||
11027613 | 1505 days ago | 0.1655789 ETH | ||||
11027613 | 1505 days ago | 0.16131522 ETH | ||||
11027538 | 1505 days ago | 0.04813912 ETH | ||||
11027538 | 1505 days ago | 0.02411075 ETH | ||||
11027538 | 1505 days ago | 0.02402837 ETH | ||||
11027512 | 1505 days ago | 3.1191233 ETH | ||||
11027512 | 1505 days ago | 1.55715769 ETH | ||||
11027512 | 1505 days ago | 1.5619656 ETH | ||||
11027500 | 1505 days ago | 1.84341869 ETH | ||||
11027500 | 1505 days ago | 0.92030336 ETH | ||||
11027500 | 1505 days ago | 0.92311533 ETH | ||||
11027390 | 1505 days ago | 22.87683734 ETH | ||||
11027390 | 1505 days ago | 11.45815542 ETH | ||||
11027390 | 1505 days ago | 11.41868192 ETH | ||||
11027375 | 1505 days ago | 1.28849776 ETH | ||||
11027375 | 1505 days ago | 0.64521696 ETH | ||||
11027375 | 1505 days ago | 0.64328079 ETH | ||||
11027234 | 1505 days ago | 2.82602248 ETH |
Loading...
Loading
Contract Name:
UniswapV2_ZapOut_General_V2
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-14 */ // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.5.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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol pragma solidity ^0.5.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. * * 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. */ 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() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, 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/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol pragma solidity ^0.5.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]. * * _Since v2.5.0:_ this module is now much more gas efficient, given net gas * metering changes introduced in the Istanbul hardfork. */ contract ReentrancyGuard { bool private _notEntered; constructor() internal { // Storing an initial 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 percetange 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. _notEntered = true; } /** * @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 make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add( value ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } // File: contracts/UniswapV2/UniswapV2Router.sol pragma solidity 0.5.12; interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // File: contracts/UniswapV2/UniswapV2_ZapOut_General_V2.sol pragma solidity 0.5.12; // Copyright (C) 2020 dipeshsukhani, nodarjanashia, suhailg, apoorvlathey, sebaudet, sumit // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // Visit <https://www.gnu.org/licenses/>for a copy of the GNU Affero General Public License ///@author Zapper ///@notice this contract implements one click removal of liquidity from Uniswap V2 pools, receiving ETH, ERC tokens or both. library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x095ea7b3, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED" ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x23b872dd, from, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED" ); } } interface Iuniswap { // converting ERC20 to ERC20 and transfer function tokenToTokenTransferInput( uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address token_addr ) external returns (uint256 tokens_bought); function tokenToTokenSwapInput( uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address token_addr ) external returns (uint256 tokens_bought); function getTokenToEthInputPrice(uint256 tokens_sold) external view returns (uint256 eth_bought); function tokenToEthTransferInput( uint256 tokens_sold, uint256 min_eth, uint256 deadline, address recipient ) external returns (uint256 eth_bought); function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline) external payable returns (uint256 tokens_bought); function ethToTokenTransferInput( uint256 min_tokens, uint256 deadline, address recipient ) external payable returns (uint256 tokens_bought); function balanceOf(address _owner) external view returns (uint256); function transfer(address _to, uint256 _value) external returns (bool); function transferFrom( address from, address to, uint256 tokens ) external returns (bool success); } interface IUniswapV2Pair { function token0() external pure returns (address); function token1() external pure returns (address); function totalSupply() external view returns (uint256); function getReserves() external view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ); } interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address); } contract UniswapV2_ZapOut_General_V2 is ReentrancyGuard, Ownable { using SafeMath for uint256; using Address for address; bool private stopped = false; uint16 public goodwill; address public dzgoodwillAddress; IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); IUniswapV2Factory public UniSwapV2FactoryAddress = IUniswapV2Factory( 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f ); address public wethTokenAddress = address( 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 ); constructor(uint16 _goodwill, address _dzgoodwillAddress) public { goodwill = _goodwill; dzgoodwillAddress = _dzgoodwillAddress; } // circuit breaker modifiers modifier stopInEmergency { if (stopped) { revert("Temporarily Paused"); } else { _; } } /** @notice This function is used to zapout of given Uniswap pair in the bounded tokens @param _FromUniPoolAddress The uniswap pair address to zapout @param _IncomingLP The amount of LP @return the amount of pair tokens received after zapout */ function ZapOut2PairToken( address _FromUniPoolAddress, uint256 _IncomingLP ) public payable nonReentrant stopInEmergency returns (uint256 amountA, uint256 amountB) { IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress); require(address(pair) != address(0), "Error: Invalid Unipool Address"); //get reserves address token0 = pair.token0(); address token1 = pair.token1(); TransferHelper.safeTransferFrom( _FromUniPoolAddress, msg.sender, address(this), _IncomingLP ); uint256 goodwillPortion = _transferGoodwill( _FromUniPoolAddress, _IncomingLP ); TransferHelper.safeApprove( _FromUniPoolAddress, address(uniswapV2Router), SafeMath.sub(_IncomingLP, goodwillPortion) ); if (token0 == wethTokenAddress || token1 == wethTokenAddress) { address _token = token0 == wethTokenAddress ? token1 : token0; (amountA, amountB) = uniswapV2Router.removeLiquidityETH( _token, SafeMath.sub(_IncomingLP, goodwillPortion), 1, 1, msg.sender, now + 60 ); } else { (amountA, amountB) = uniswapV2Router.removeLiquidity( token0, token1, SafeMath.sub(_IncomingLP, goodwillPortion), 1, 1, msg.sender, now + 60 ); } } /** @notice This function is used to zapout of given Uniswap pair in ETH/ERC20 Tokens @param _ToTokenContractAddress The ERC20 token to zapout in (address(0x00) if ether) @param _FromUniPoolAddress The uniswap pair address to zapout from @param _IncomingLP The amount of LP @return the amount of eth/tokens received after zapout */ function ZapOut( address _ToTokenContractAddress, address _FromUniPoolAddress, uint256 _IncomingLP, uint256 _minTokensRec ) public payable nonReentrant stopInEmergency returns (uint256) { IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress); require(address(pair) != address(0), "Error: Invalid Unipool Address"); //get pair tokens address token0 = pair.token0(); address token1 = pair.token1(); TransferHelper.safeTransferFrom( _FromUniPoolAddress, msg.sender, address(this), _IncomingLP ); uint256 goodwillPortion = _transferGoodwill( _FromUniPoolAddress, _IncomingLP ); TransferHelper.safeApprove( _FromUniPoolAddress, address(uniswapV2Router), SafeMath.sub(_IncomingLP, goodwillPortion) ); (uint256 amountA, uint256 amountB) = uniswapV2Router.removeLiquidity( token0, token1, SafeMath.sub(_IncomingLP, goodwillPortion), 1, 1, address(this), now + 60 ); uint256 tokenBought; if ( canSwapFromV2(_ToTokenContractAddress, token0) && canSwapFromV2(_ToTokenContractAddress, token1) ) { tokenBought = swapFromV2(token0, _ToTokenContractAddress, amountA); tokenBought += swapFromV2(token1, _ToTokenContractAddress, amountB); } else if (canSwapFromV2(_ToTokenContractAddress, token0)) { uint256 token0Bought = swapFromV2(token1, token0, amountB); tokenBought = swapFromV2( token0, _ToTokenContractAddress, token0Bought.add(amountA) ); } else if (canSwapFromV2(_ToTokenContractAddress, token1)) { uint256 token1Bought = swapFromV2(token0, token1, amountA); tokenBought = swapFromV2( token1, _ToTokenContractAddress, token1Bought.add(amountB) ); } require(tokenBought >= _minTokensRec, "High slippage"); if (_ToTokenContractAddress == address(0)) { msg.sender.transfer(tokenBought); } else { TransferHelper.safeTransfer( _ToTokenContractAddress, msg.sender, tokenBought ); } return tokenBought; } //swaps _fromToken for _toToken //for eth, address(0) otherwise ERC token address function swapFromV2( address _fromToken, address _toToken, uint256 amount ) internal returns (uint256) { require( _fromToken != address(0) || _toToken != address(0), "Invalid Exchange values" ); if (_fromToken == _toToken) return amount; require(canSwapFromV2(_fromToken, _toToken), "Cannot be exchanged"); require(amount > 0, "Invalid amount"); if (_fromToken == address(0)) { if (_toToken == wethTokenAddress) { IWETH(wethTokenAddress).deposit.value(amount)(); return amount; } address[] memory path = new address[](2); path[0] = wethTokenAddress; path[1] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, 200)), 10000 ); uint256[] memory amounts = uniswapV2Router .swapExactETHForTokens .value(amount)(minTokens, path, address(this), now + 180); return amounts[1]; } else if (_toToken == address(0)) { if (_fromToken == wethTokenAddress) { IWETH(wethTokenAddress).withdraw(amount); return amount; } address[] memory path = new address[](2); TransferHelper.safeApprove( _fromToken, address(uniswapV2Router), amount ); path[0] = _fromToken; path[1] = wethTokenAddress; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, 200)), 10000 ); uint256[] memory amounts = uniswapV2Router.swapExactTokensForETH( amount, minTokens, path, address(this), now + 180 ); return amounts[1]; } else { TransferHelper.safeApprove( _fromToken, address(uniswapV2Router), amount ); uint256 returnedAmount = _swapTokenToTokenV2( _fromToken, _toToken, amount ); require(returnedAmount > 0, "Error in swap"); return returnedAmount; } } //swaps 2 ERC tokens (UniV2) function _swapTokenToTokenV2( address _fromToken, address _toToken, uint256 amount ) internal returns (uint256) { IUniswapV2Pair pair1 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); IUniswapV2Pair pair2 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); IUniswapV2Pair pair3 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, _toToken) ); uint256[] memory amounts; if (_haveReserve(pair3)) { address[] memory path = new address[](2); path[0] = _fromToken; path[1] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, 200)), 10000 ); amounts = uniswapV2Router.swapExactTokensForTokens( amount, minTokens, path, address(this), now + 180 ); return amounts[1]; } else if (_haveReserve(pair1) && _haveReserve(pair2)) { address[] memory path = new address[](3); path[0] = _fromToken; path[1] = wethTokenAddress; path[2] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[2]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, 200)), 10000 ); amounts = uniswapV2Router.swapExactTokensForTokens( amount, minTokens, path, address(this), now + 180 ); return amounts[2]; } return 0; } function canSwapFromV2(address _fromToken, address _toToken) public view returns (bool) { require( _fromToken != address(0) || _toToken != address(0), "Invalid Exchange values" ); if (_fromToken == _toToken) return true; if (_fromToken == address(0) || _fromToken == wethTokenAddress) { if (_toToken == wethTokenAddress || _toToken == address(0)) return true; IUniswapV2Pair pair = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); if (_haveReserve(pair)) return true; } else if (_toToken == address(0) || _toToken == wethTokenAddress) { if (_fromToken == wethTokenAddress || _fromToken == address(0)) return true; IUniswapV2Pair pair = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); if (_haveReserve(pair)) return true; } else { IUniswapV2Pair pair1 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); IUniswapV2Pair pair2 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); IUniswapV2Pair pair3 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, _toToken) ); if (_haveReserve(pair1) && _haveReserve(pair2)) return true; if (_haveReserve(pair3)) return true; } return false; } //checks if the UNI v2 contract have reserves to swap tokens function _haveReserve(IUniswapV2Pair pair) internal view returns (bool) { if (address(pair) != address(0)) { uint256 totalSupply = pair.totalSupply(); if (totalSupply > 0) return true; } } /** @notice This function is used to calculate and transfer goodwill @param _tokenContractAddress Token in which goodwill is deducted @param tokens2Trade The total amount of tokens to be zapped in @return The quantity of goodwill deducted */ function _transferGoodwill( address _tokenContractAddress, uint256 tokens2Trade ) internal returns (uint256 goodwillPortion) { if (goodwill == 0) { return 0; } goodwillPortion = SafeMath.div( SafeMath.mul(tokens2Trade, goodwill), 10000 ); TransferHelper.safeTransfer( _tokenContractAddress, dzgoodwillAddress, goodwillPortion ); } function set_new_goodwill(uint16 _new_goodwill) public onlyOwner { require( _new_goodwill >= 0 && _new_goodwill < 10000, "GoodWill Value not allowed" ); goodwill = _new_goodwill; } function set_new_dzgoodwillAddress(address _new_dzgoodwillAddress) public onlyOwner { dzgoodwillAddress = _new_dzgoodwillAddress; } function inCaseTokengetsStuck(IERC20 _TokenAddress) public onlyOwner { uint256 qty = _TokenAddress.balanceOf(address(this)); TransferHelper.safeTransfer(address(_TokenAddress), owner(), qty); } // - to Pause the contract function toggleContractActive() public onlyOwner { stopped = !stopped; } // - to withdraw any ETH balance sitting in the contract function withdraw() public onlyOwner { uint256 contractBalance = address(this).balance; address payable _to = owner().toPayable(); _to.transfer(contractBalance); } function() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint16","name":"_goodwill","type":"uint16"},{"internalType":"address","name":"_dzgoodwillAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"UniSwapV2FactoryAddress","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_ToTokenContractAddress","type":"address"},{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"},{"internalType":"uint256","name":"_minTokensRec","type":"uint256"}],"name":"ZapOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"}],"name":"ZapOut2PairToken","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_fromToken","type":"address"},{"internalType":"address","name":"_toToken","type":"address"}],"name":"canSwapFromV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dzgoodwillAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokengetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_dzgoodwillAddress","type":"address"}],"name":"set_new_dzgoodwillAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_new_goodwill","type":"uint16"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wethTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff60a81b19169055600280546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155600380548216735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790556004805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200008457600080fd5b50604051620031b0380380620031b083398181016040526040811015620000aa57600080fd5b5080516020909101516000805460ff19166001178155620000d36001600160e01b036200018016565b60008054610100600160a81b0319166101006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805461ffff9093167601000000000000000000000000000000000000000000000261ffff60b01b1990931692909217909155600180546001600160a01b039092166001600160a01b031990921691909117905562000184565b3390565b61301c80620001946000396000f3fe6080604052600436106100fe5760003560e01c8063849e25f411610095578063c3a8fcb011610064578063c3a8fcb0146102d1578063e88c6814146102e6578063ee857b69146102fb578063f27cf32014610340578063f2fde38b1461037b576100fe565b8063849e25f4146102325780638da5cb5b146102655780638f32d59b1461027a578063b10e1dbc146102a3576100fe565b806349c082cd116100d157806349c082cd14610170578063551196d5146101be5780635de0398e146101f1578063715018a61461021d576100fe565b80630f9dad71146101005780631385d24c146101315780631694505e146101465780633ccfd60b1461015b575b005b34801561010c57600080fd5b506101156103ae565b604080516001600160a01b039092168252519081900360200190f35b34801561013d57600080fd5b506100fe6103bd565b34801561015257600080fd5b50610115610425565b34801561016757600080fd5b506100fe610434565b6101ac6004803603608081101561018657600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356104d6565b60408051918252519081900360200190f35b3480156101ca57600080fd5b506100fe600480360360208110156101e157600080fd5b50356001600160a01b031661092c565b3480156101fd57600080fd5b50610206610a01565b6040805161ffff9092168252519081900360200190f35b34801561022957600080fd5b506100fe610a12565b34801561023e57600080fd5b506100fe6004803603602081101561025557600080fd5b50356001600160a01b0316610aa8565b34801561027157600080fd5b50610115610b11565b34801561028657600080fd5b5061028f610b25565b604080519115158252519081900360200190f35b3480156102af57600080fd5b506100fe600480360360208110156102c657600080fd5b503561ffff16610b4e565b3480156102dd57600080fd5b50610115610c11565b3480156102f257600080fd5b50610115610c20565b6103276004803603604081101561031157600080fd5b506001600160a01b038135169060200135610c2f565b6040805192835260208301919091528051918290030190f35b34801561034c57600080fd5b5061028f6004803603604081101561036357600080fd5b506001600160a01b0381358116916020013516611047565b34801561038757600080fd5b506100fe6004803603602081101561039e57600080fd5b50356001600160a01b031661147e565b6004546001600160a01b031681565b6103c5610b25565b610404576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6002546001600160a01b031681565b61043c610b25565b61047b576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b3031600061049861048a610b11565b6001600160a01b03166114d1565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f193505050501580156104d1573d6000803e3d6000fd5b505050565b6000805460ff1661052e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff161561058b576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b0381166105e7576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d602081101561064c57600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b505190506106ce873330896114d8565b60006106da8888611635565b6002549091506106fe9089906001600160a01b03166106f98a85611690565b6116d9565b60025460009081906001600160a01b031663baa2abde86866107208d88611690565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b505050506040513d60408110156107b957600080fd5b508051602090910151909250905060006107d38c87611047565b80156107e457506107e48c86611047565b15610807576107f4868d85611843565b9050610801858d84611843565b0161087e565b6108118c87611047565b15610847576000610823868885611843565b905061083f878e61083a848863ffffffff6121ba16565b611843565b91505061087e565b6108518c86611047565b1561087e576000610863878786611843565b905061087a868e61083a848763ffffffff6121ba16565b9150505b888110156108c3576040805162461bcd60e51b815260206004820152600d60248201526c4869676820736c69707061676560981b604482015290519081900360640190fd5b6001600160a01b038c1661090457604051339082156108fc029083906000818181858888f193505050501580156108fe573d6000803e3d6000fd5b5061090f565b61090f8c3383612214565b96505050505050506000805460ff19166001179055949350505050565b610934610b25565b610973576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156109bd57600080fd5b505afa1580156109d1573d6000803e3d6000fd5b505050506040513d60208110156109e757600080fd5b505190506109fd826109f7610b11565b83612214565b5050565b600054600160b01b900461ffff1681565b610a1a610b25565b610a59576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054610100600160a81b0319169055565b610ab0610b25565b610aef576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610b3f612377565b6001600160a01b031614905090565b610b56610b25565b610b95576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6127108161ffff1610610bef576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6003546001600160a01b031681565b60008054819060ff16610c89576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610ce6576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610d42576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d6020811015610da757600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b50519050610e29873330896114d8565b6000610e358888611635565b600254909150610e549089906001600160a01b03166106f98a85611690565b6004546001600160a01b0384811691161480610e7d57506004546001600160a01b038381169116145b15610f68576004546000906001600160a01b03858116911614610ea05783610ea2565b825b6002549091506001600160a01b03166302751cec82610ec18b86611690565b604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526001604483018190526064830152336084830152603c420160a4830152805160c4808401938290030181600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b505050506040513d6040811015610f5357600080fd5b508051602090910151909750955061102d9050565b6002546001600160a01b031663baa2abde8484610f858b86611690565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b158015610ff457600080fd5b505af1158015611008573d6000803e3d6000fd5b505050506040513d604081101561101e57600080fd5b50805160209091015190965094505b505050506000805460ff1916600117905590939092509050565b60006001600160a01b03831615158061106857506001600160a01b03821615155b6110b3576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642045786368616e67652076616c75657360481b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b031614156110d557506001611478565b6001600160a01b03831615806110f857506004546001600160a01b038481169116145b156111d7576004546001600160a01b038381169116148061112057506001600160a01b038216155b1561112d57506001611478565b600354600480546040805163e6a4390560e01b81526001600160a01b0387811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d60208110156111b557600080fd5b505190506111c28161237b565b156111d1576001915050611478565b50611474565b6001600160a01b03821615806111fa57506004546001600160a01b038381169116145b1561128d576004546001600160a01b038481169116148061122257506001600160a01b038316155b1561122f57506001611478565b600354600480546040805163e6a4390560e01b81526001600160a01b0388811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b15801561118b57600080fd5b600354600480546040805163e6a4390560e01b81526001600160a01b0388811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b1580156112eb57600080fd5b505afa1580156112ff573d6000803e3d6000fd5b505050506040513d602081101561131557600080fd5b5051600354600480546040805163e6a4390560e01b81526001600160a01b0389811694820194909452918316602483015251939450600093919092169163e6a43905916044808301926020929190829003018186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d60208110156113a157600080fd5b50516003546040805163e6a4390560e01b81526001600160a01b03898116600483015288811660248301529151939450600093919092169163e6a43905916044808301926020929190829003018186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d602081101561142857600080fd5b505190506114358361237b565b801561144557506114458261237b565b156114565760019350505050611478565b61145f8161237b565b156114705760019350505050611478565b5050505b5060005b92915050565b611486610b25565b6114c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6114ce8161240b565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061155d5780518252601f19909201916020918201910161153e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115bf576040519150601f19603f3d011682016040523d82523d6000602084013e6115c4565b606091505b50915091508180156115f25750805115806115f257508080602001905160208110156115ef57600080fd5b50515b61162d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612fc46024913960400191505060405180910390fd5b505050505050565b60008054600160b01b900461ffff1661165057506000611478565b6000546116759061166d908490600160b01b900461ffff166124b6565b61271061250f565b6001549091506114789084906001600160a01b031683612214565b60006116d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612551565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117565780518252601f199092019160209182019101611737565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117b8576040519150601f19603f3d011682016040523d82523d6000602084013e6117bd565b606091505b50915091508180156117eb5750805115806117eb57508080602001905160208110156117e857600080fd5b50515b61183c576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b03841615158061186457506001600160a01b03831615155b6118af576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642045786368616e67652076616c75657360481b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031614156118d05750806116d2565b6118da8484611047565b611921576040805162461bcd60e51b815260206004820152601360248201527210d85b9b9bdd08189948195e18da185b99d959606a1b604482015290519081900360640190fd5b60008211611967576040805162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6001600160a01b038416611da4576004546001600160a01b03848116911614156119f1576004805460408051630d0e30db60e41b815290516001600160a01b039092169263d0e30db0928692808301926000929182900301818588803b1580156119d057600080fd5b505af11580156119e4573d6000803e3d6000fd5b50505050508190506116d2565b6040805160028082526060808301845292602083019080388339505060045482519293506001600160a01b031691839150600090611a2b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110611a5957fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651600096949094169463d06ca61f948a948994909260649091019185820191028083838c5b83811015611ad7578181015183820152602001611abf565b50505050905001935050505060006040518083038186803b158015611afb57600080fd5b505afa158015611b0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b3857600080fd5b8101908080516040519392919084600160201b821115611b5757600080fd5b908301906020820185811115611b6c57600080fd5b82518660208202830111600160201b82111715611b8857600080fd5b82525081516020918201928201910280838360005b83811015611bb5578181015183820152602001611b9d565b50505050905001604052505050600181518110611bce57fe5b60200260200101519050611bf161166d82611bec61271060c8611690565b6124b6565b90506060600260009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5868486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c94578181015183820152602001611c7c565b50505050905001955050505050506000604051808303818588803b158015611cbb57600080fd5b505af1158015611ccf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611cf957600080fd5b8101908080516040519392919084600160201b821115611d1857600080fd5b908301906020820185811115611d2d57600080fd5b82518660208202830111600160201b82111715611d4957600080fd5b82525081516020918201928201910280838360005b83811015611d76578181015183820152602001611d5e565b50505050905001604052505050905080600181518110611d9257fe5b602002602001015193505050506116d2565b6001600160a01b038316612146576004546001600160a01b0385811691161415611e33576004805460408051632e1a7d4d60e01b8152928301859052516001600160a01b0390911691632e1a7d4d91602480830192600092919082900301818387803b158015611e1357600080fd5b505af1158015611e27573d6000803e3d6000fd5b505050508190506116d2565b60408051600280825260608083018452926020830190803883395050600254919250611e6b918791506001600160a01b0316856116d9565b8481600081518110611e7957fe5b6001600160a01b039283166020918202929092010152600454825191169082906001908110611ea457fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651600096949094169463d06ca61f948a948994909260649091019185820191028083838c5b83811015611f22578181015183820152602001611f0a565b50505050905001935050505060006040518083038186803b158015611f4657600080fd5b505afa158015611f5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611f8357600080fd5b8101908080516040519392919084600160201b821115611fa257600080fd5b908301906020820185811115611fb757600080fd5b82518660208202830111600160201b82111715611fd357600080fd5b82525081516020918201928201910280838360005b83811015612000578181015183820152602001611fe8565b5050505090500160405250505060018151811061201957fe5b6020026020010151905061203761166d82611bec61271060c8611690565b90506060600260009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5868486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156120e05781810151838201526020016120c8565b505050509050019650505050505050600060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611cf957600080fd5b60025461215e9085906001600160a01b0316846116d9565b600061216b8585856125e8565b9050600081116121b2576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b949350505050565b6000828201838110156116d2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106122915780518252601f199092019160209182019101612272565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146122f3576040519150601f19603f3d011682016040523d82523d6000602084013e6122f8565b606091505b5091509150818015612326575080511580612326575080806020019051602081101561232357600080fd5b50515b61183c576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b038216156114d3576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123c757600080fd5b505afa1580156123db573d6000803e3d6000fd5b505050506040513d60208110156123f157600080fd5b5051905080156124055760019150506114d3565b50919050565b6001600160a01b0381166124505760405162461bcd60e51b8152600401808060200182810382526026815260200180612f5d6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000826124c557506000611478565b828202828482816124d257fe5b04146116d25760405162461bcd60e51b8152600401808060200182810382526021815260200180612f836021913960400191505060405180910390fd5b60006116d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ef7565b600081848411156125e05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125a557818101518382015260200161258d565b50505050905090810190601f1680156125d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600354600480546040805163e6a4390560e01b81526001600160a01b03888116948201949094529183166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561264457600080fd5b505afa158015612658573d6000803e3d6000fd5b505050506040513d602081101561266e57600080fd5b5051600354600480546040805163e6a4390560e01b81526001600160a01b038a811694820194909452918316602483015251939450600093919092169163e6a43905916044808301926020929190829003018186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b50516003546040805163e6a4390560e01b81526001600160a01b038a8116600483015289811660248301529151939450600093919092169163e6a43905916044808301926020929190829003018186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051905060606127908261237b565b15612b2457604080516002808252606080830184529260208301908038833901905050905088816000815181106127c357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816001815181106127f157fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b8152600481018c815260248201928352865160448301528651600096949094169463d06ca61f948e948994909260649091019185820191028083838c5b8381101561286f578181015183820152602001612857565b50505050905001935050505060006040518083038186803b15801561289357600080fd5b505afa1580156128a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156128d057600080fd5b8101908080516040519392919084600160201b8211156128ef57600080fd5b90830190602082018581111561290457600080fd5b82518660208202830111600160201b8211171561292057600080fd5b82525081516020918201928201910280838360005b8381101561294d578181015183820152602001612935565b5050505090500160405250505060018151811061296657fe5b6020026020010151905061298461166d82611bec61271060c8611690565b6002546040516338ed173960e01b8152600481018b815260248201849052306064830181905260b442016084840181905260a060448501908152885160a486015288519697506001600160a01b03909516956338ed1739958f9589958b95949390929160c401906020808801910280838360005b83811015612a105781810151838201526020016129f8565b505050509050019650505050505050600060405180830381600087803b158015612a3957600080fd5b505af1158015612a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a7657600080fd5b8101908080516040519392919084600160201b821115612a9557600080fd5b908301906020820185811115612aaa57600080fd5b82518660208202830111600160201b82111715612ac657600080fd5b82525081516020918201928201910280838360005b83811015612af3578181015183820152602001612adb565b50505050905001604052505050925082600181518110612b0f57fe5b602002602001015196505050505050506116d2565b612b2d8461237b565b8015612b3d5750612b3d8361237b565b15612ee957604080516003808252608082019092526060916020820183803883390190505090508881600081518110612b7257fe5b6001600160a01b039283166020918202929092010152600454825191169082906001908110612b9d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110612bcb57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b8152600481018c815260248201928352865160448301528651600096949094169463d06ca61f948e948994909260649091019185820191028083838c5b83811015612c49578181015183820152602001612c31565b50505050905001935050505060006040518083038186803b158015612c6d57600080fd5b505afa158015612c81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612caa57600080fd5b8101908080516040519392919084600160201b821115612cc957600080fd5b908301906020820185811115612cde57600080fd5b82518660208202830111600160201b82111715612cfa57600080fd5b82525081516020918201928201910280838360005b83811015612d27578181015183820152602001612d0f565b50505050905001604052505050600281518110612d4057fe5b60200260200101519050612d5e61166d82611bec61271060c8611690565b6002546040516338ed173960e01b8152600481018b815260248201849052306064830181905260b442016084840181905260a060448501908152885160a486015288519697506001600160a01b03909516956338ed1739958f9589958b95949390929160c401906020808801910280838360005b83811015612dea578181015183820152602001612dd2565b505050509050019650505050505050600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612e5057600080fd5b8101908080516040519392919084600160201b821115612e6f57600080fd5b908301906020820185811115612e8457600080fd5b82518660208202830111600160201b82111715612ea057600080fd5b82525081516020918201928201910280838360005b83811015612ecd578181015183820152602001612eb5565b50505050905001604052505050925082600281518110612b0f57fe5b506000979650505050505050565b60008183612f465760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156125a557818101518382015260200161258d565b506000838581612f5257fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a7231582040729115a228e65282b19212540185d1bc16934dd5e9a5301079194119e28dea64736f6c634300050c00320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e737b6afec2320f616297e59445b60a11e3ef75f
Deployed Bytecode
0x6080604052600436106100fe5760003560e01c8063849e25f411610095578063c3a8fcb011610064578063c3a8fcb0146102d1578063e88c6814146102e6578063ee857b69146102fb578063f27cf32014610340578063f2fde38b1461037b576100fe565b8063849e25f4146102325780638da5cb5b146102655780638f32d59b1461027a578063b10e1dbc146102a3576100fe565b806349c082cd116100d157806349c082cd14610170578063551196d5146101be5780635de0398e146101f1578063715018a61461021d576100fe565b80630f9dad71146101005780631385d24c146101315780631694505e146101465780633ccfd60b1461015b575b005b34801561010c57600080fd5b506101156103ae565b604080516001600160a01b039092168252519081900360200190f35b34801561013d57600080fd5b506100fe6103bd565b34801561015257600080fd5b50610115610425565b34801561016757600080fd5b506100fe610434565b6101ac6004803603608081101561018657600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356104d6565b60408051918252519081900360200190f35b3480156101ca57600080fd5b506100fe600480360360208110156101e157600080fd5b50356001600160a01b031661092c565b3480156101fd57600080fd5b50610206610a01565b6040805161ffff9092168252519081900360200190f35b34801561022957600080fd5b506100fe610a12565b34801561023e57600080fd5b506100fe6004803603602081101561025557600080fd5b50356001600160a01b0316610aa8565b34801561027157600080fd5b50610115610b11565b34801561028657600080fd5b5061028f610b25565b604080519115158252519081900360200190f35b3480156102af57600080fd5b506100fe600480360360208110156102c657600080fd5b503561ffff16610b4e565b3480156102dd57600080fd5b50610115610c11565b3480156102f257600080fd5b50610115610c20565b6103276004803603604081101561031157600080fd5b506001600160a01b038135169060200135610c2f565b6040805192835260208301919091528051918290030190f35b34801561034c57600080fd5b5061028f6004803603604081101561036357600080fd5b506001600160a01b0381358116916020013516611047565b34801561038757600080fd5b506100fe6004803603602081101561039e57600080fd5b50356001600160a01b031661147e565b6004546001600160a01b031681565b6103c5610b25565b610404576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6002546001600160a01b031681565b61043c610b25565b61047b576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b3031600061049861048a610b11565b6001600160a01b03166114d1565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f193505050501580156104d1573d6000803e3d6000fd5b505050565b6000805460ff1661052e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff161561058b576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b0381166105e7576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d602081101561064c57600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b505190506106ce873330896114d8565b60006106da8888611635565b6002549091506106fe9089906001600160a01b03166106f98a85611690565b6116d9565b60025460009081906001600160a01b031663baa2abde86866107208d88611690565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b505050506040513d60408110156107b957600080fd5b508051602090910151909250905060006107d38c87611047565b80156107e457506107e48c86611047565b15610807576107f4868d85611843565b9050610801858d84611843565b0161087e565b6108118c87611047565b15610847576000610823868885611843565b905061083f878e61083a848863ffffffff6121ba16565b611843565b91505061087e565b6108518c86611047565b1561087e576000610863878786611843565b905061087a868e61083a848763ffffffff6121ba16565b9150505b888110156108c3576040805162461bcd60e51b815260206004820152600d60248201526c4869676820736c69707061676560981b604482015290519081900360640190fd5b6001600160a01b038c1661090457604051339082156108fc029083906000818181858888f193505050501580156108fe573d6000803e3d6000fd5b5061090f565b61090f8c3383612214565b96505050505050506000805460ff19166001179055949350505050565b610934610b25565b610973576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156109bd57600080fd5b505afa1580156109d1573d6000803e3d6000fd5b505050506040513d60208110156109e757600080fd5b505190506109fd826109f7610b11565b83612214565b5050565b600054600160b01b900461ffff1681565b610a1a610b25565b610a59576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054610100600160a81b0319169055565b610ab0610b25565b610aef576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610b3f612377565b6001600160a01b031614905090565b610b56610b25565b610b95576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6127108161ffff1610610bef576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6003546001600160a01b031681565b60008054819060ff16610c89576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610ce6576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610d42576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d6020811015610da757600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b50519050610e29873330896114d8565b6000610e358888611635565b600254909150610e549089906001600160a01b03166106f98a85611690565b6004546001600160a01b0384811691161480610e7d57506004546001600160a01b038381169116145b15610f68576004546000906001600160a01b03858116911614610ea05783610ea2565b825b6002549091506001600160a01b03166302751cec82610ec18b86611690565b604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526001604483018190526064830152336084830152603c420160a4830152805160c4808401938290030181600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b505050506040513d6040811015610f5357600080fd5b508051602090910151909750955061102d9050565b6002546001600160a01b031663baa2abde8484610f858b86611690565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b158015610ff457600080fd5b505af1158015611008573d6000803e3d6000fd5b505050506040513d604081101561101e57600080fd5b50805160209091015190965094505b505050506000805460ff1916600117905590939092509050565b60006001600160a01b03831615158061106857506001600160a01b03821615155b6110b3576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642045786368616e67652076616c75657360481b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b031614156110d557506001611478565b6001600160a01b03831615806110f857506004546001600160a01b038481169116145b156111d7576004546001600160a01b038381169116148061112057506001600160a01b038216155b1561112d57506001611478565b600354600480546040805163e6a4390560e01b81526001600160a01b0387811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d60208110156111b557600080fd5b505190506111c28161237b565b156111d1576001915050611478565b50611474565b6001600160a01b03821615806111fa57506004546001600160a01b038381169116145b1561128d576004546001600160a01b038481169116148061122257506001600160a01b038316155b1561122f57506001611478565b600354600480546040805163e6a4390560e01b81526001600160a01b0388811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b15801561118b57600080fd5b600354600480546040805163e6a4390560e01b81526001600160a01b0388811694820194909452918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b1580156112eb57600080fd5b505afa1580156112ff573d6000803e3d6000fd5b505050506040513d602081101561131557600080fd5b5051600354600480546040805163e6a4390560e01b81526001600160a01b0389811694820194909452918316602483015251939450600093919092169163e6a43905916044808301926020929190829003018186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d60208110156113a157600080fd5b50516003546040805163e6a4390560e01b81526001600160a01b03898116600483015288811660248301529151939450600093919092169163e6a43905916044808301926020929190829003018186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d602081101561142857600080fd5b505190506114358361237b565b801561144557506114458261237b565b156114565760019350505050611478565b61145f8161237b565b156114705760019350505050611478565b5050505b5060005b92915050565b611486610b25565b6114c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612fa4833981519152604482015290519081900360640190fd5b6114ce8161240b565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061155d5780518252601f19909201916020918201910161153e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115bf576040519150601f19603f3d011682016040523d82523d6000602084013e6115c4565b606091505b50915091508180156115f25750805115806115f257508080602001905160208110156115ef57600080fd5b50515b61162d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612fc46024913960400191505060405180910390fd5b505050505050565b60008054600160b01b900461ffff1661165057506000611478565b6000546116759061166d908490600160b01b900461ffff166124b6565b61271061250f565b6001549091506114789084906001600160a01b031683612214565b60006116d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612551565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117565780518252601f199092019160209182019101611737565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117b8576040519150601f19603f3d011682016040523d82523d6000602084013e6117bd565b606091505b50915091508180156117eb5750805115806117eb57508080602001905160208110156117e857600080fd5b50515b61183c576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b03841615158061186457506001600160a01b03831615155b6118af576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642045786368616e67652076616c75657360481b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031614156118d05750806116d2565b6118da8484611047565b611921576040805162461bcd60e51b815260206004820152601360248201527210d85b9b9bdd08189948195e18da185b99d959606a1b604482015290519081900360640190fd5b60008211611967576040805162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6001600160a01b038416611da4576004546001600160a01b03848116911614156119f1576004805460408051630d0e30db60e41b815290516001600160a01b039092169263d0e30db0928692808301926000929182900301818588803b1580156119d057600080fd5b505af11580156119e4573d6000803e3d6000fd5b50505050508190506116d2565b6040805160028082526060808301845292602083019080388339505060045482519293506001600160a01b031691839150600090611a2b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110611a5957fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651600096949094169463d06ca61f948a948994909260649091019185820191028083838c5b83811015611ad7578181015183820152602001611abf565b50505050905001935050505060006040518083038186803b158015611afb57600080fd5b505afa158015611b0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b3857600080fd5b8101908080516040519392919084600160201b821115611b5757600080fd5b908301906020820185811115611b6c57600080fd5b82518660208202830111600160201b82111715611b8857600080fd5b82525081516020918201928201910280838360005b83811015611bb5578181015183820152602001611b9d565b50505050905001604052505050600181518110611bce57fe5b60200260200101519050611bf161166d82611bec61271060c8611690565b6124b6565b90506060600260009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5868486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c94578181015183820152602001611c7c565b50505050905001955050505050506000604051808303818588803b158015611cbb57600080fd5b505af1158015611ccf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611cf957600080fd5b8101908080516040519392919084600160201b821115611d1857600080fd5b908301906020820185811115611d2d57600080fd5b82518660208202830111600160201b82111715611d4957600080fd5b82525081516020918201928201910280838360005b83811015611d76578181015183820152602001611d5e565b50505050905001604052505050905080600181518110611d9257fe5b602002602001015193505050506116d2565b6001600160a01b038316612146576004546001600160a01b0385811691161415611e33576004805460408051632e1a7d4d60e01b8152928301859052516001600160a01b0390911691632e1a7d4d91602480830192600092919082900301818387803b158015611e1357600080fd5b505af1158015611e27573d6000803e3d6000fd5b505050508190506116d2565b60408051600280825260608083018452926020830190803883395050600254919250611e6b918791506001600160a01b0316856116d9565b8481600081518110611e7957fe5b6001600160a01b039283166020918202929092010152600454825191169082906001908110611ea457fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651600096949094169463d06ca61f948a948994909260649091019185820191028083838c5b83811015611f22578181015183820152602001611f0a565b50505050905001935050505060006040518083038186803b158015611f4657600080fd5b505afa158015611f5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611f8357600080fd5b8101908080516040519392919084600160201b821115611fa257600080fd5b908301906020820185811115611fb757600080fd5b82518660208202830111600160201b82111715611fd357600080fd5b82525081516020918201928201910280838360005b83811015612000578181015183820152602001611fe8565b5050505090500160405250505060018151811061201957fe5b6020026020010151905061203761166d82611bec61271060c8611690565b90506060600260009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5868486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156120e05781810151838201526020016120c8565b505050509050019650505050505050600060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611cf957600080fd5b60025461215e9085906001600160a01b0316846116d9565b600061216b8585856125e8565b9050600081116121b2576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b949350505050565b6000828201838110156116d2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106122915780518252601f199092019160209182019101612272565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146122f3576040519150601f19603f3d011682016040523d82523d6000602084013e6122f8565b606091505b5091509150818015612326575080511580612326575080806020019051602081101561232357600080fd5b50515b61183c576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b038216156114d3576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123c757600080fd5b505afa1580156123db573d6000803e3d6000fd5b505050506040513d60208110156123f157600080fd5b5051905080156124055760019150506114d3565b50919050565b6001600160a01b0381166124505760405162461bcd60e51b8152600401808060200182810382526026815260200180612f5d6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000826124c557506000611478565b828202828482816124d257fe5b04146116d25760405162461bcd60e51b8152600401808060200182810382526021815260200180612f836021913960400191505060405180910390fd5b60006116d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ef7565b600081848411156125e05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125a557818101518382015260200161258d565b50505050905090810190601f1680156125d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600354600480546040805163e6a4390560e01b81526001600160a01b03888116948201949094529183166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561264457600080fd5b505afa158015612658573d6000803e3d6000fd5b505050506040513d602081101561266e57600080fd5b5051600354600480546040805163e6a4390560e01b81526001600160a01b038a811694820194909452918316602483015251939450600093919092169163e6a43905916044808301926020929190829003018186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b50516003546040805163e6a4390560e01b81526001600160a01b038a8116600483015289811660248301529151939450600093919092169163e6a43905916044808301926020929190829003018186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051905060606127908261237b565b15612b2457604080516002808252606080830184529260208301908038833901905050905088816000815181106127c357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816001815181106127f157fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b8152600481018c815260248201928352865160448301528651600096949094169463d06ca61f948e948994909260649091019185820191028083838c5b8381101561286f578181015183820152602001612857565b50505050905001935050505060006040518083038186803b15801561289357600080fd5b505afa1580156128a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156128d057600080fd5b8101908080516040519392919084600160201b8211156128ef57600080fd5b90830190602082018581111561290457600080fd5b82518660208202830111600160201b8211171561292057600080fd5b82525081516020918201928201910280838360005b8381101561294d578181015183820152602001612935565b5050505090500160405250505060018151811061296657fe5b6020026020010151905061298461166d82611bec61271060c8611690565b6002546040516338ed173960e01b8152600481018b815260248201849052306064830181905260b442016084840181905260a060448501908152885160a486015288519697506001600160a01b03909516956338ed1739958f9589958b95949390929160c401906020808801910280838360005b83811015612a105781810151838201526020016129f8565b505050509050019650505050505050600060405180830381600087803b158015612a3957600080fd5b505af1158015612a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a7657600080fd5b8101908080516040519392919084600160201b821115612a9557600080fd5b908301906020820185811115612aaa57600080fd5b82518660208202830111600160201b82111715612ac657600080fd5b82525081516020918201928201910280838360005b83811015612af3578181015183820152602001612adb565b50505050905001604052505050925082600181518110612b0f57fe5b602002602001015196505050505050506116d2565b612b2d8461237b565b8015612b3d5750612b3d8361237b565b15612ee957604080516003808252608082019092526060916020820183803883390190505090508881600081518110612b7257fe5b6001600160a01b039283166020918202929092010152600454825191169082906001908110612b9d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110612bcb57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b8152600481018c815260248201928352865160448301528651600096949094169463d06ca61f948e948994909260649091019185820191028083838c5b83811015612c49578181015183820152602001612c31565b50505050905001935050505060006040518083038186803b158015612c6d57600080fd5b505afa158015612c81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612caa57600080fd5b8101908080516040519392919084600160201b821115612cc957600080fd5b908301906020820185811115612cde57600080fd5b82518660208202830111600160201b82111715612cfa57600080fd5b82525081516020918201928201910280838360005b83811015612d27578181015183820152602001612d0f565b50505050905001604052505050600281518110612d4057fe5b60200260200101519050612d5e61166d82611bec61271060c8611690565b6002546040516338ed173960e01b8152600481018b815260248201849052306064830181905260b442016084840181905260a060448501908152885160a486015288519697506001600160a01b03909516956338ed1739958f9589958b95949390929160c401906020808801910280838360005b83811015612dea578181015183820152602001612dd2565b505050509050019650505050505050600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612e5057600080fd5b8101908080516040519392919084600160201b821115612e6f57600080fd5b908301906020820185811115612e8457600080fd5b82518660208202830111600160201b82111715612ea057600080fd5b82525081516020918201928201910280838360005b83811015612ecd578181015183820152602001612eb5565b50505050905001604052505050925082600281518110612b0f57fe5b506000979650505050505050565b60008183612f465760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156125a557818101518382015260200161258d565b506000838581612f5257fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a7231582040729115a228e65282b19212540185d1bc16934dd5e9a5301079194119e28dea64736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e737b6afec2320f616297e59445b60a11e3ef75f
-----Decoded View---------------
Arg [0] : _goodwill (uint16): 0
Arg [1] : _dzgoodwillAddress (address): 0xE737b6AfEC2320f616297e59445b60a11e3eF75F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000e737b6afec2320f616297e59445b60a11e3ef75f
Deployed Bytecode Sourcemap
32822:14518:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33332:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33332:101:0;;;:::i;:::-;;;;-1:-1:-1;;;;;33332:101:0;;;;;;;;;;;;;;46948:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;46948:86:0;;;:::i;33064:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33064:122:0;;;:::i;47104:195::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47104:195:0;;;:::i;36158:2606::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;36158:2606:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;46692:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;46692:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46692:216:0;-1:-1:-1;;;;;46692:216:0;;:::i;32994:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32994:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8599:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8599:140:0;;;:::i;46516:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;46516:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46516:168:0;-1:-1:-1;;;;;46516:168:0;;:::i;7788:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7788:79:0;;;:::i;8154:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8154:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;46270:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;46270:238:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46270:238:0;;;;:::i;33023:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33023:32:0;;;:::i;33195:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33195:128:0;;;:::i;34066:1716::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34066:1716:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;43499:1677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43499:1677:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;43499:1677:0;;;;;;;;;;:::i;8894:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8894:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8894:109:0;-1:-1:-1;;;;;8894:109:0;;:::i;33332:101::-;;;-1:-1:-1;;;;;33332:101:0;;:::o;46948:86::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;47019:7;;;-1:-1:-1;;;;47008:18:0;;-1:-1:-1;;;47019:7:0;;;;;;47018:8;47008:18;;;;;;46948:86::o;33064:122::-;;;-1:-1:-1;;;;;33064:122:0;;:::o;47104:195::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;47186:4;47178:21;47152:23;47232:19;:7;:5;:7::i;:::-;-1:-1:-1;;;;;47232:17:0;;:19::i;:::-;47262:29;;47210:41;;-1:-1:-1;;;;;;47262:12:0;;;:29;;;;;47275:15;;47262:29;;;;47275:15;47262:12;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47262:29:0;8057:1;;47104:195::o;36158:2606::-;36376:7;17639:11;;;;17631:55;;;;;-1:-1:-1;;;17631:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17778:5;17764:19;;-1:-1:-1;;17764:19:0;;;;;-1:-1:-1;;;33677:7:0;;17764:19;33677:7;33673:102;;;33701:28;;;-1:-1:-1;;;33701:28:0;;;;;;;;;;;;-1:-1:-1;;;33701:28:0;;;;;;;;;;;;;;33673:102;36433:19;-1:-1:-1;;;;;36474:27:0;;36466:70;;;;;-1:-1:-1;;;36466:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36576:14;36593:4;-1:-1:-1;;;;;36593:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36593:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36593:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36593:13:0;36634;;;-1:-1:-1;;;36634:13:0;;;;36593;;-1:-1:-1;36617:14:0;;-1:-1:-1;;;;;36634:11:0;;;;;:13;;;;;36593;;36634;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;36634:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36634:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36634:13:0;;-1:-1:-1;36660:155:0;36706:19;36740:10;36773:4;36793:11;36660:31;:155::i;:::-;36828:23;36854:88;36886:19;36920:11;36854:17;:88::i;:::-;37038:15;;36828:114;;-1:-1:-1;36955:167:0;;36996:19;;-1:-1:-1;;;;;37038:15:0;37069:42;37082:11;36828:114;37069:12;:42::i;:::-;36955:26;:167::i;:::-;37172:15;;37136;;;;-1:-1:-1;;;;;37172:15:0;:31;37218:6;37239;37260:42;37273:11;37286:15;37260:12;:42::i;:::-;37172:224;;;-1:-1:-1;;;;;;37172:224:0;;;;;;;-1:-1:-1;;;;;37172:224:0;;;;;;;;;;;;;;;;;;;37317:1;37172:224;;;;;;;;;;37357:4;37172:224;;;;37383:2;37377:3;:8;37172:224;;;;;;;;;;;;;;;;;-1:-1:-1;37172:224:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;37172:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37172:224:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37172:224:0;;;;;;;;;-1:-1:-1;37172:224:0;-1:-1:-1;37409:19:0;37457:46;37471:23;37496:6;37457:13;:46::i;:::-;:109;;;;;37520:46;37534:23;37559:6;37520:13;:46::i;:::-;37439:930;;;37607:52;37618:6;37626:23;37651:7;37607:10;:52::i;:::-;37593:66;;37689:52;37700:6;37708:23;37733:7;37689:10;:52::i;:::-;37674:67;37439:930;;;37763:46;37777:23;37802:6;37763:13;:46::i;:::-;37759:610;;;37826:20;37849:35;37860:6;37868;37876:7;37849:10;:35::i;:::-;37826:58;-1:-1:-1;37913:136:0;37942:6;37967:23;38009:25;37826:58;38026:7;38009:25;:16;:25;:::i;:::-;37913:10;:136::i;:::-;37899:150;;37759:610;;;;38071:46;38085:23;38110:6;38071:13;:46::i;:::-;38067:302;;;38134:20;38157:35;38168:6;38176;38184:7;38157:10;:35::i;:::-;38134:58;-1:-1:-1;38221:136:0;38250:6;38275:23;38317:25;38134:58;38334:7;38317:25;:16;:25;:::i;38221:136::-;38207:150;;38067:302;;38404:13;38389:11;:28;;38381:54;;;;;-1:-1:-1;;;38381:54:0;;;;;;;;;;;;-1:-1:-1;;;38381:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38452:37:0;;38448:278;;38506:32;;:10;;:32;;;;;38526:11;;38506:32;;;;38526:11;38506:10;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38506:32:0;38448:278;;;38571:143;38617:23;38659:10;38688:11;38571:27;:143::i;:::-;38745:11;-1:-1:-1;;;;;;;17944:11:0;:18;;-1:-1:-1;;17944:18:0;17958:4;17944:18;;;36158:2606;;-1:-1:-1;;;;36158:2606:0:o;46692:216::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;46786:38;;;-1:-1:-1;;;46786:38:0;;46818:4;46786:38;;;;;;46772:11;;-1:-1:-1;;;;;46786:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;46786:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46786:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46786:38:0;;-1:-1:-1;46835:65:0;46871:13;46887:7;:5;:7::i;:::-;46896:3;46835:27;:65::i;:::-;8057:1;46692:216;:::o;32994:22::-;;;-1:-1:-1;;;32994:22:0;;;;;:::o;8599:140::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;8698:1;8682:6;;8661:40;;8682:6;;;;-1:-1:-1;;;;;8682:6:0;;8661:40;;8698:1;;8661:40;8729:1;8712:19;;-1:-1:-1;;;;;;8712:19:0;;;8599:140::o;46516:168::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;46634:17;:42;;-1:-1:-1;;;;;;46634:42:0;-1:-1:-1;;;;;46634:42:0;;;;;;;;;;46516:168::o;7788:79::-;7826:7;7853:6;;;;-1:-1:-1;;;;;7853:6:0;;7788:79::o;8154:94::-;8194:4;8234:6;;;;;-1:-1:-1;;;;;8234:6:0;8218:12;:10;:12::i;:::-;-1:-1:-1;;;;;8218:22:0;;8211:29;;8154:94;:::o;46270:238::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;46406:5;46390:13;:21;;;46346:119;;;;;-1:-1:-1;;;46346:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;46476:8;:24;;;;;;-1:-1:-1;;;46476:24:0;-1:-1:-1;;;;46476:24:0;;;;;;;;;46270:238::o;33023:32::-;;;-1:-1:-1;;;;;33023:32:0;;:::o;33195:128::-;;;-1:-1:-1;;;;;33195:128:0;;:::o;34066:1716::-;34265:15;17639:11;;34265:15;;17639:11;;17631:55;;;;;-1:-1:-1;;;17631:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17778:5;17764:19;;-1:-1:-1;;17764:19:0;;;;;-1:-1:-1;;;33677:7:0;;17764:19;33677:7;33673:102;;;33701:28;;;-1:-1:-1;;;33701:28:0;;;;;;;;;;;;-1:-1:-1;;;33701:28:0;;;;;;;;;;;;;;33673:102;34352:19;-1:-1:-1;;;;;34393:27:0;;34385:70;;;;;-1:-1:-1;;;34385:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34492:14;34509:4;-1:-1:-1;;;;;34509:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34509:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34509:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34509:13:0;34550;;;-1:-1:-1;;;34550:13:0;;;;34509;;-1:-1:-1;34533:14:0;;-1:-1:-1;;;;;34550:11:0;;;;;:13;;;;;34509;;34550;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;34550:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34550:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34550:13:0;;-1:-1:-1;34576:155:0;34622:19;34656:10;34689:4;34709:11;34576:31;:155::i;:::-;34744:23;34770:88;34802:19;34836:11;34770:17;:88::i;:::-;34954:15;;34744:114;;-1:-1:-1;34871:167:0;;34912:19;;-1:-1:-1;;;;;34954:15:0;34985:42;34998:11;34744:114;34985:12;:42::i;34871:167::-;35065:16;;-1:-1:-1;;;;;35055:26:0;;;35065:16;;35055:26;;:56;;-1:-1:-1;35095:16:0;;-1:-1:-1;;;;;35085:26:0;;;35095:16;;35085:26;35055:56;35051:724;;;35155:16;;35128:14;;-1:-1:-1;;;;;35145:26:0;;;35155:16;;35145:26;:44;;35183:6;35145:44;;;35174:6;35145:44;35225:15;;35128:61;;-1:-1:-1;;;;;;35225:15:0;:34;35128:61;35303:42;35316:11;35329:15;35303:12;:42::i;:::-;35225:231;;;-1:-1:-1;;;;;;35225:231:0;;;;;;;-1:-1:-1;;;;;35225:231:0;;;;;;;;;;;;;;35364:1;35225:231;;;;;;;;;;35404:10;35225:231;;;;35439:2;35433:3;:8;35225:231;;;;;;;;;;;;;;;;-1:-1:-1;35225:231:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;35225:231:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35225:231:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35225:231:0;;;;;;;;;-1:-1:-1;35225:231:0;-1:-1:-1;35051:724:0;;-1:-1:-1;35051:724:0;;35510:15;;-1:-1:-1;;;;;35510:15:0;:31;35560:6;35585;35610:42;35623:11;35636:15;35610:12;:42::i;:::-;35510:253;;;-1:-1:-1;;;;;;35510:253:0;;;;;;;-1:-1:-1;;;;;35510:253:0;;;;;;;;;;;;;;;;;;;35671:1;35510:253;;;;;;;;;;35711:10;35510:253;;;;35746:2;35740:3;:8;35510:253;;;;;;;;;;;;;;;;;-1:-1:-1;35510:253:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;35510:253:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35510:253:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35510:253:0;;;;;;;;;-1:-1:-1;35510:253:0;-1:-1:-1;35051:724:0;33762:1;;;;17944:11;:18;;-1:-1:-1;;17944:18:0;17958:4;17944:18;;;34066:1716;;;;-1:-1:-1;34066:1716:0;-1:-1:-1;34066:1716:0:o;43499:1677::-;43608:4;-1:-1:-1;;;;;43652:24:0;;;;;:50;;-1:-1:-1;;;;;;43680:22:0;;;;43652:50;43630:123;;;;;-1:-1:-1;;;43630:123:0;;;;;;;;;;;;-1:-1:-1;;;43630:123:0;;;;;;;;;;;;;;;43784:8;-1:-1:-1;;;;;43770:22:0;:10;-1:-1:-1;;;;;43770:22:0;;43766:39;;;-1:-1:-1;43801:4:0;43794:11;;43766:39;-1:-1:-1;;;;;43822:24:0;;;;:58;;-1:-1:-1;43864:16:0;;-1:-1:-1;;;;;43850:30:0;;;43864:16;;43850:30;43822:58;43818:1328;;;43913:16;;-1:-1:-1;;;;;43901:28:0;;;43913:16;;43901:28;;:54;;-1:-1:-1;;;;;;43933:22:0;;;43901:54;43897:88;;;-1:-1:-1;43981:4:0;43974:11;;43897:88;44055:23;;44097:16;;;44055:59;;;-1:-1:-1;;;44055:59:0;;-1:-1:-1;;;;;44055:59:0;;;;;;;;;;44097:16;;;44055:59;;;;;44000:19;;44055:23;;;;;:31;;:59;;;;;;;;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;44055:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44055:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44055:59:0;;-1:-1:-1;44148:18:0;44055:59;44148:12;:18::i;:::-;44144:35;;;44175:4;44168:11;;;;;44144:35;43818:1328;;;;-1:-1:-1;;;;;44201:22:0;;;;:54;;-1:-1:-1;44239:16:0;;-1:-1:-1;;;;;44227:28:0;;;44239:16;;44227:28;44201:54;44197:949;;;44290:16;;-1:-1:-1;;;;;44276:30:0;;;44290:16;;44276:30;;:58;;-1:-1:-1;;;;;;44310:24:0;;;44276:58;44272:92;;;-1:-1:-1;44360:4:0;44353:11;;44272:92;44434:23;;44478:16;;;44434:61;;;-1:-1:-1;;;44434:61:0;;-1:-1:-1;;;;;44434:61:0;;;;;;;;;;44478:16;;;44434:61;;;;;44379:19;;44434:23;;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;44197:949:0;44649:23;;44693:16;;;44649:61;;;-1:-1:-1;;;44649:61:0;;-1:-1:-1;;;;;44649:61:0;;;;;;;;;;44693:16;;;44649:61;;;;;44593:20;;44649:23;;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;44649:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44649:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44649:61:0;44796:23;;44838:16;;;44796:59;;;-1:-1:-1;;;44796:59:0;;-1:-1:-1;;;;;44796:59:0;;;;;;;;;;44838:16;;;44796:59;;;;;44649:61;;-1:-1:-1;44740:20:0;;44796:23;;;;;:31;;:59;;;;;44649:61;;44796:59;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;44796:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44796:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44796:59:0;44941:23;;:53;;;-1:-1:-1;;;44941:53:0;;-1:-1:-1;;;;;44941:53:0;;;;;;;;;;;;;;;;44796:59;;-1:-1:-1;44885:20:0;;44941:23;;;;;:31;;:53;;;;;44796:59;;44941:53;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;44941:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44941:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44941:53:0;;-1:-1:-1;45028:19:0;45041:5;45028:12;:19::i;:::-;:42;;;;;45051:19;45064:5;45051:12;:19::i;:::-;45024:59;;;45079:4;45072:11;;;;;;;45024:59;45102:19;45115:5;45102:12;:19::i;:::-;45098:36;;;45130:4;45123:11;;;;;;;45098:36;44197:949;;;;-1:-1:-1;45163:5:0;43499:1677;;;;;:::o;8894:109::-;8000:9;:7;:9::i;:::-;7992:54;;;;;-1:-1:-1;;;7992:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7992:54:0;;;;;;;;;;;;;;;8967:28;8986:8;8967:18;:28::i;:::-;8894:109;:::o;14013:159::-;14155:7;14013:159;;;;:::o;30021:509::-;30306:51;;;-1:-1:-1;;;;;30306:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;30306:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;30281:87:0;;;;30246:12;;30260:17;;30281:10;;;;30306:51;30281:87;;;25:18:-1;30281:87:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;30281:87:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;30245:123:0;;;;30401:7;:57;;;;-1:-1:-1;30413:11:0;;:16;;:44;;;30444:4;30433:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30433:24:0;30413:44;30379:143;;;;-1:-1:-1;;;30379:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30021:509;;;;;;:::o;45768:494::-;45891:23;45931:8;;-1:-1:-1;;;45931:8:0;;;;45927:54;;-1:-1:-1;45968:1:0;45961:8;;45927:54;46065:8;;46011:94;;46038:36;;46051:12;;-1:-1:-1;;;46065:8:0;;;;46038:12;:36::i;:::-;46089:5;46011:12;:94::i;:::-;46196:17;;45993:112;;-1:-1:-1;46118:136:0;;46160:21;;-1:-1:-1;;;;;46196:17:0;45993:112;46118:27;:136::i;1369:::-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;1369:136;-1:-1:-1;;;1369:136:0:o;29090:456::-;29334:45;;;-1:-1:-1;;;;;29334:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;29334:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;29309:81:0;;;;29274:12;;29288:17;;29309:10;;;;29334:45;29309:81;;;25:18:-1;29309:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;29309:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;29273:117:0;;;;29423:7;:57;;;;-1:-1:-1;29435:11:0;;:16;;:44;;;29466:4;29455:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29455:24:0;29435:44;29401:137;;;;;-1:-1:-1;;;29401:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29090:456;;;;;:::o;38864:2630::-;38990:7;-1:-1:-1;;;;;39032:24:0;;;;;:50;;-1:-1:-1;;;;;;39060:22:0;;;;39032:50;39010:123;;;;;-1:-1:-1;;;39010:123:0;;;;;;;;;;;;-1:-1:-1;;;39010:123:0;;;;;;;;;;;;;;;39162:8;-1:-1:-1;;;;;39148:22:0;:10;-1:-1:-1;;;;;39148:22:0;;39144:41;;;-1:-1:-1;39179:6:0;39172:13;;39144:41;39206:35;39220:10;39232:8;39206:13;:35::i;:::-;39198:67;;;;;-1:-1:-1;;;39198:67:0;;;;;;;;;;;;-1:-1:-1;;;39198:67:0;;;;;;;;;;;;;;;39293:1;39284:6;:10;39276:37;;;;;-1:-1:-1;;;39276:37:0;;;;;;;;;;;;-1:-1:-1;;;39276:37:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;39330:24:0;;39326:2161;;39387:16;;-1:-1:-1;;;;;39375:28:0;;;39387:16;;39375:28;39371:148;;;39430:16;;;39424:47;;;-1:-1:-1;;;39424:47:0;;;;-1:-1:-1;;;;;39430:16:0;;;;39424:31;;39462:6;;39424:47;;;;39430:16;;39424:47;;;;;;39462:6;39430:16;39424:47;;;5:2:-1;;;;30:1;27;20:12;5:2;39424:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39424:47:0;;;;;39497:6;39490:13;;;;39371:148;39557:16;;;39571:1;39557:16;;;39533:21;39557:16;;;;;39533:21;39557:16;;;;;105:10:-1;39557:16:0;88:34:-1;-1:-1;;39598:16:0;;39588:7;;;;-1:-1:-1;;;;;;39598:16:0;;39588:7;;-1:-1:-1;39598:16:0;;39588:7;;;;;;;;;:26;-1:-1:-1;;;;;39588:26:0;;;-1:-1:-1;;;;;39588:26:0;;;;;39639:8;39629:4;39634:1;39629:7;;;;;;;;-1:-1:-1;;;;;39629:18:0;;;:7;;;;;;;;;;:18;;;;39682:15;;:43;;;-1:-1:-1;;;39682:43:0;;;;;;;;;;;;;;;;;;;;;;39662:17;;39682:15;;;;;:29;;39712:6;;39720:4;;39682:43;;;;;;;;;;;;;;;39662:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39682:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39682:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39682:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;39682:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;39682:43:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;39682:43:0;;421:4:-1;412:14;;;;39682:43:0;;;;;412:14:-1;39682:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39682:43:0;;;;;;;;;;;39726:1;39682:46;;;;;;;;;;;;;;39662:66;;39755:119;39786:49;39799:9;39810:24;39823:5;39830:3;39810:12;:24::i;:::-;39786:12;:49::i;39755:119::-;39743:131;;39889:24;39916:15;;;;;;;;;-1:-1:-1;;;;;39916:15:0;-1:-1:-1;;;;;39916:55:0;;39996:6;40004:9;40015:4;40029;40036:3;40042;40036:9;39916:130;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39916:130:0;-1:-1:-1;;;;;39916:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39916:130:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39916:130:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39916:130:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;39916:130:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;39916:130:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;39916:130:0;;421:4:-1;412:14;;;;39916:130:0;;;;;412:14:-1;39916:130:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39916:130:0;;;;;;;;;;;39889:157;;40068:7;40076:1;40068:10;;;;;;;;;;;;;;40061:17;;;;;;;39326:2161;-1:-1:-1;;;;;40100:22:0;;40096:1391;;40157:16;;-1:-1:-1;;;;;40143:30:0;;;40157:16;;40143:30;40139:143;;;40200:16;;;40194:40;;;-1:-1:-1;;;40194:40:0;;;;;;;;;-1:-1:-1;;;;;40200:16:0;;;;40194:32;;:40;;;;;40200:16;;40194:40;;;;;;;40200:16;;40194:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40194:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40194:40:0;;;;40260:6;40253:13;;;;40139:143;40320:16;;;40334:1;40320:16;;;40296:21;40320:16;;;;;40296:21;40320:16;;;;;105:10:-1;40320:16:0;88:34:-1;-1:-1;;40433:15:0;;40296:40;;-1:-1:-1;40351:138:0;;40396:10;;-1:-1:-1;;;;;;40433:15:0;40468:6;40351:26;:138::i;:::-;40514:10;40504:4;40509:1;40504:7;;;;;;;;-1:-1:-1;;;;;40504:20:0;;;:7;;;;;;;;;:20;40549:16;;40539:7;;40549:16;;;40539:4;;40549:16;;40539:7;;;;;;-1:-1:-1;;;;;40539:26:0;;;:7;;;;;;;;;;:26;;;;40600:15;;:43;;;-1:-1:-1;;;40600:43:0;;;;;;;;;;;;;;;;;;;;;;40580:17;;40600:15;;;;;:29;;40630:6;;40638:4;;40600:43;;;;;;;;;;;;;;;40580:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40600:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40600:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40600:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40600:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;40600:43:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;40600:43:0;;421:4:-1;412:14;;;;40600:43:0;;;;;412:14:-1;40600:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40600:43:0;;;;;;;;;;;40644:1;40600:46;;;;;;;;;;;;;;40580:66;;40673:119;40704:49;40717:9;40728:24;40741:5;40748:3;40728:12;:24::i;40673:119::-;40661:131;;40807:24;40834:15;;;;;;;;;-1:-1:-1;;;;;40834:15:0;-1:-1:-1;;;;;40834:37:0;;40890:6;40915:9;40943:4;40974;40998:3;41004;40998:9;40834:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40834:188:0;-1:-1:-1;;;;;40834:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40834:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40834:188:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40834:188:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40834:188:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;40096:1391:0;41169:15;;41087:138;;41132:10;;-1:-1:-1;;;;;41169:15:0;41204:6;41087:26;:138::i;:::-;41240:22;41265:115;41303:10;41332:8;41359:6;41265:19;:115::i;:::-;41240:140;;41420:1;41403:14;:18;41395:44;;;;;-1:-1:-1;;;41395:44:0;;;;;;;;;;;;-1:-1:-1;;;41395:44:0;;;;;;;;;;;;;;;41461:14;38864:2630;-1:-1:-1;;;;38864:2630:0:o;913:181::-;971:7;1003:5;;;1027:6;;;;1019:46;;;;;-1:-1:-1;;;1019:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;29554:459;29800:45;;;-1:-1:-1;;;;;29800:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;29800:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;29775:81:0;;;;29740:12;;29754:17;;29775:10;;;;29800:45;29775:81;;;25:18:-1;29775:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;29775:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;29739:117:0;;;;29889:7;:57;;;;-1:-1:-1;29901:11:0;;:16;;:44;;;29932:4;29921:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29921:24:0;29901:44;29867:138;;;;;-1:-1:-1;;;29867:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6470:98;6550:10;6470:98;:::o;45250:237::-;45316:4;-1:-1:-1;;;;;45337:27:0;;;45333:147;;45381:19;45403:4;-1:-1:-1;;;;;45403:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45403:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45403:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45403:18:0;;-1:-1:-1;45440:15:0;;45436:32;;45464:4;45457:11;;;;;45436:32;45333:147;45250:237;;;:::o;9109:266::-;-1:-1:-1;;;;;9197:22:0;;9175:110;;;;-1:-1:-1;;;9175:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:6;;;9301:38;;-1:-1:-1;;;;;9301:38:0;;;;9322:6;;;;;;9301:38;;;9350:6;:17;;-1:-1:-1;;;;;9350:17:0;;;;;-1:-1:-1;;;;;;9350:17:0;;;;;;;;;9109:266::o;2319:471::-;2377:7;2622:6;2618:47;;-1:-1:-1;2652:1:0;2645:8;;2618:47;2689:5;;;2693:1;2689;:5;:1;2713:5;;;;;:10;2705:56;;;;-1:-1:-1;;;2705:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3258:132;3316:7;3343:39;3347:1;3350;3343:39;;;;;;;;;;;;;;;;;:3;:39::i;1842:226::-;1962:7;1998:12;1990:6;;;;1982:29;;;;-1:-1:-1;;;1982:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1982:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2034:5:0;;;1842:226::o;41536:1955::-;41743:23;;41787:16;;;41743:61;;;-1:-1:-1;;;41743:61:0;;-1:-1:-1;;;;;41743:61:0;;;;;;;;;;41787:16;;;41743:61;;;;;41671:7;;;;41743:23;;:31;;:61;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;41743:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41743:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;41743:61:0;41878:23;;41920:16;;;41878:59;;;-1:-1:-1;;;41878:59:0;;-1:-1:-1;;;;;41878:59:0;;;;;;;;;;41920:16;;;41878:59;;;;;41743:61;;-1:-1:-1;41826:20:0;;41878:23;;;;;:31;;:59;;;;;41743:61;;41878:59;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;41878:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41878:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;41878:59:0;42011:23;;:53;;;-1:-1:-1;;;42011:53:0;;-1:-1:-1;;;;;42011:53:0;;;;;;;;;;;;;;;;41878:59;;-1:-1:-1;41959:20:0;;42011:23;;;;;:31;;:53;;;;;41878:59;;42011:53;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;42011:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42011:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42011:53:0;;-1:-1:-1;42088:24:0;42129:19;42011:53;42129:12;:19::i;:::-;42125:1340;;;42189:16;;;42203:1;42189:16;;;42165:21;42189:16;;;;;42165:21;42189:16;;;;;105:10:-1;42189:16:0;88:34:-1;136:17;;-1:-1;42189:16:0;42165:40;;42230:10;42220:4;42225:1;42220:7;;;;;;;;;;;;;:20;-1:-1:-1;;;;;42220:20:0;;;-1:-1:-1;;;;;42220:20:0;;;;;42265:8;42255:4;42260:1;42255:7;;;;;;;;-1:-1:-1;;;;;42255:18:0;;;:7;;;;;;;;;;:18;;;;42308:15;;:43;;;-1:-1:-1;;;42308:43:0;;;;;;;;;;;;;;;;;;;;;;42288:17;;42308:15;;;;;:29;;42338:6;;42346:4;;42308:43;;;;;;;;;;;;;;;42288:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;42308:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42308:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42308:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;42308:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;42308:43:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;42308:43:0;;421:4:-1;412:14;;;;42308:43:0;;;;;412:14:-1;42308:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;42308:43:0;;;;;;;;;;;42352:1;42308:46;;;;;;;;;;;;;;42288:66;;42381:119;42412:49;42425:9;42436:24;42449:5;42456:3;42436:12;:24::i;42381:119::-;42525:15;;:191;;-1:-1:-1;;;42525:191:0;;;;;;;;;;;;;;42668:4;42525:191;;;;;;42698:3;42692;:9;42525:191;;;;;;;;;;;;;;;;;;;;;42369:131;;-1:-1:-1;;;;;;42525:15:0;;;;:40;;42584:6;;42369:131;;42637:4;;42668;42692:9;42525:191;;;;;;;;;;;;;;;:15;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;42525:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42525:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42525:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;42525:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;42525:191:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;42525:191:0;;421:4:-1;412:14;;;;42525:191:0;;;;;412:14:-1;42525:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;42525:191:0;;;;;;;;;;;42515:201;;42738:7;42746:1;42738:10;;;;;;;;;;;;;;42731:17;;;;;;;;;;42125:1340;42770:19;42783:5;42770:12;:19::i;:::-;:42;;;;;42793:19;42806:5;42793:12;:19::i;:::-;42766:699;;;42853:16;;;42867:1;42853:16;;;;;;;;;42829:21;;42853:16;;;42829:21;;105:10:-1;42853:16:0;88:34:-1;136:17;;-1:-1;42853:16:0;42829:40;;42894:10;42884:4;42889:1;42884:7;;;;;;;;-1:-1:-1;;;;;42884:20:0;;;:7;;;;;;;;;:20;42929:16;;42919:7;;42929:16;;;42919:4;;42929:16;;42919:7;;;;;;;;;;;:26;-1:-1:-1;;;;;42919:26:0;;;-1:-1:-1;;;;;42919:26:0;;;;;42970:8;42960:4;42965:1;42960:7;;;;;;;;-1:-1:-1;;;;;42960:18:0;;;:7;;;;;;;;;;:18;;;;43013:15;;:43;;;-1:-1:-1;;;43013:43:0;;;;;;;;;;;;;;;;;;;;;;42993:17;;43013:15;;;;;:29;;43043:6;;43051:4;;43013:43;;;;;;;;;;;;;;;42993:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;43013:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43013:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43013:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;43013:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;43013:43:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;43013:43:0;;421:4:-1;412:14;;;;43013:43:0;;;;;412:14:-1;43013:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;43013:43:0;;;;;;;;;;;43057:1;43013:46;;;;;;;;;;;;;;42993:66;;43086:119;43117:49;43130:9;43141:24;43154:5;43161:3;43141:12;:24::i;43086:119::-;43230:15;;:191;;-1:-1:-1;;;43230:191:0;;;;;;;;;;;;;;43373:4;43230:191;;;;;;43403:3;43397;:9;43230:191;;;;;;;;;;;;;;;;;;;;;43074:131;;-1:-1:-1;;;;;;43230:15:0;;;;:40;;43289:6;;43074:131;;43342:4;;43373;43397:9;43230:191;;;;;;;;;;;;;;;:15;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;43230:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43230:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43230:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;43230:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;43230:191:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;43230:191:0;;421:4:-1;412:14;;;;43230:191:0;;;;;412:14:-1;43230:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;43230:191:0;;;;;;;;;;;43220:201;;43443:7;43451:1;43443:10;;;;;;;42766:699;-1:-1:-1;43482:1:0;;41536:1955;-1:-1:-1;;;;;;;41536:1955:0:o;3920:379::-;4040:7;4142:12;4135:5;4127:28;;;;-1:-1:-1;;;4127:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4127:28:0;;4166:9;4182:1;4178;:5;;;;;;;3920:379;-1:-1:-1;;;;;3920:379:0:o
Swarm Source
bzzr://40729115a228e65282b19212540185d1bc16934dd5e9a5301079194119e28dea
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.