Token TND
Overview ERC20
Price
$3.53 @ 0.000988 ETH
Fully Diluted Market Cap
Total Supply:
9,931,535.238451 TND
Holders:
2,646 addresses
Contract:
Decimals:
18
Official Site:
Balance
0.390739216463322779 TNDValue
$1.38 ( ~0.000386303082710897 ETH) [0.0000%]
[ Download CSV Export ]
[ Download CSV Export ]
OVERVIEW
Tender.fi is an innovative decentralized open-source protocol for borrowing and lending.Market
Volume (24H) | : | $30,230.00 |
Market Capitalization | : | $3,642,142.00 |
Circulating Supply | : | 1,031,402.00 TND |
Market Data Source: Coinmarketcap |
Update? Click here to update the token ICO / general information
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TND
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-01-05 */ // File: contracts/tokens/interfaces/IMintable.sol pragma solidity 0.6.12; interface IMintable { function isMinter(address _account) external returns (bool); function setMinter(address _minter, bool _isActive) external; function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; } // File: contracts/tokens/interfaces/IBaseToken.sol pragma solidity 0.6.12; interface IBaseToken { function totalStaked() external view returns (uint256); function stakedBalance(address _account) external view returns (uint256); function removeAdmin(address _account) external; function setInPrivateTransferMode(bool _inPrivateTransferMode) external; function withdrawToken(address _token, address _account, uint256 _amount) external; } // File: contracts/tokens/interfaces/IYieldTracker.sol pragma solidity 0.6.12; interface IYieldTracker { function claim(address _account, address _receiver) external returns (uint256); function updateRewards(address _account) external; function getTokensPerInterval() external view returns (uint256); function claimable(address _account) external view returns (uint256); } // File: contracts/libraries/utils/Address.sol pragma solidity ^0.6.2; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @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]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: contracts/libraries/token/IERC20.sol pragma solidity 0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `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: contracts/libraries/math/SafeMath.sol pragma solidity 0.6.12; /** * @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. */ 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. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: contracts/libraries/token/SafeERC20.sol pragma solidity 0.6.12; /** * @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 IERC20;` 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "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/tokens/BaseToken.sol pragma solidity 0.6.12; contract BaseToken is IERC20, IBaseToken { using SafeMath for uint256; using SafeERC20 for IERC20; string public name; string public symbol; uint8 public constant decimals = 18; uint256 public override totalSupply; uint256 public nonStakingSupply; uint256 public MAX_Supply = 10000000*1e18; address public gov; mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowances; address[] public yieldTrackers; mapping (address => bool) public nonStakingAccounts; mapping (address => bool) public admins; bool public inPrivateTransferMode; mapping (address => bool) public isHandler; modifier onlyGov() { require(msg.sender == gov, "BaseToken: forbidden"); _; } modifier onlyAdmin() { require(admins[msg.sender], "BaseToken: forbidden"); _; } constructor(string memory _name, string memory _symbol, uint256 _initialSupply) public { name = _name; symbol = _symbol; gov = msg.sender; _mint(msg.sender, _initialSupply); } function setGov(address _gov) external onlyGov { gov = _gov; } function setInfo(string memory _name, string memory _symbol) external onlyGov { name = _name; symbol = _symbol; } function setYieldTrackers(address[] memory _yieldTrackers) external onlyGov { yieldTrackers = _yieldTrackers; } function addAdmin(address _account) external onlyGov { admins[_account] = true; } function removeAdmin(address _account) external override onlyGov { admins[_account] = false; } // to help users who accidentally send their tokens to this contract function withdrawToken(address _token, address _account, uint256 _amount) external override onlyGov { IERC20(_token).safeTransfer(_account, _amount); } function setInPrivateTransferMode(bool _inPrivateTransferMode) external override onlyGov { inPrivateTransferMode = _inPrivateTransferMode; } function setHandler(address _handler, bool _isActive) external onlyGov { isHandler[_handler] = _isActive; } function addNonStakingAccount(address _account) external onlyAdmin { require(!nonStakingAccounts[_account], "BaseToken: _account already marked"); _updateRewards(_account); nonStakingAccounts[_account] = true; nonStakingSupply = nonStakingSupply.add(balances[_account]); } function removeNonStakingAccount(address _account) external onlyAdmin { require(nonStakingAccounts[_account], "BaseToken: _account not marked"); _updateRewards(_account); nonStakingAccounts[_account] = false; nonStakingSupply = nonStakingSupply.sub(balances[_account]); } function recoverClaim(address _account, address _receiver) external onlyAdmin { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).claim(_account, _receiver); } } function claim(address _receiver) external { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).claim(msg.sender, _receiver); } } function totalStaked() external view override returns (uint256) { return totalSupply.sub(nonStakingSupply); } function balanceOf(address _account) external view override returns (uint256) { return balances[_account]; } function stakedBalance(address _account) external view override returns (uint256) { if (nonStakingAccounts[_account]) { return 0; } return balances[_account]; } function transfer(address _recipient, uint256 _amount) external override returns (bool) { _transfer(msg.sender, _recipient, _amount); return true; } function allowance(address _owner, address _spender) external view override returns (uint256) { return allowances[_owner][_spender]; } function approve(address _spender, uint256 _amount) external override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } function transferFrom(address _sender, address _recipient, uint256 _amount) external override returns (bool) { if (isHandler[msg.sender]) { _transfer(_sender, _recipient, _amount); return true; } uint256 nextAllowance = allowances[_sender][msg.sender].sub(_amount, "BaseToken: transfer amount exceeds allowance"); _approve(_sender, msg.sender, nextAllowance); _transfer(_sender, _recipient, _amount); return true; } function _mint(address _account, uint256 _amount) internal { require(_account != address(0), "BaseToken: mint to the zero address"); require(totalSupply < MAX_Supply, "supply cap reached"); _updateRewards(_account); totalSupply = totalSupply.add(_amount); balances[_account] = balances[_account].add(_amount); if (nonStakingAccounts[_account]) { nonStakingSupply = nonStakingSupply.add(_amount); } emit Transfer(address(0), _account, _amount); } function _burn(address _account, uint256 _amount) internal { require(_account != address(0), "BaseToken: burn from the zero address"); _updateRewards(_account); balances[_account] = balances[_account].sub(_amount, "BaseToken: burn amount exceeds balance"); totalSupply = totalSupply.sub(_amount); if (nonStakingAccounts[_account]) { nonStakingSupply = nonStakingSupply.sub(_amount); } emit Transfer(_account, address(0), _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "BaseToken: transfer from the zero address"); require(_recipient != address(0), "BaseToken: transfer to the zero address"); if (inPrivateTransferMode) { require(isHandler[msg.sender], "BaseToken: msg.sender not whitelisted"); } _updateRewards(_sender); _updateRewards(_recipient); balances[_sender] = balances[_sender].sub(_amount, "BaseToken: transfer amount exceeds balance"); balances[_recipient] = balances[_recipient].add(_amount); if (nonStakingAccounts[_sender]) { nonStakingSupply = nonStakingSupply.sub(_amount); } if (nonStakingAccounts[_recipient]) { nonStakingSupply = nonStakingSupply.add(_amount); } emit Transfer(_sender, _recipient,_amount); } function _approve(address _owner, address _spender, uint256 _amount) private { require(_owner != address(0), "BaseToken: approve from the zero address"); require(_spender != address(0), "BaseToken: approve to the zero address"); allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _updateRewards(address _account) private { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).updateRewards(_account); } } } // File: contracts/tokens/MintableBaseToken.sol pragma solidity 0.6.12; contract MintableBaseToken is BaseToken, IMintable { mapping (address => bool) public override isMinter; constructor(string memory _name, string memory _symbol, uint256 _initialSupply) public BaseToken(_name, _symbol, _initialSupply) { } modifier onlyMinter() { require(isMinter[msg.sender], "MintableBaseToken: forbidden"); _; } function setMinter(address _minter, bool _isActive) external override onlyGov { isMinter[_minter] = _isActive; } function mint(address _account, uint256 _amount) external override onlyMinter { _mint(_account, _amount); } function burn(address _account, uint256 _amount) external override onlyMinter { _burn(_account, _amount); } } // File: contracts/tnd/TND.sol pragma solidity 0.6.12; contract TND is MintableBaseToken { constructor() public MintableBaseToken("TND", "TND", MAX_Supply) { } function id() external pure returns (string memory _name) { return "TND"; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addNonStakingAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"inPrivateTransferMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonStakingAccounts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonStakingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"recoverClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeNonStakingAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_inPrivateTransferMode","type":"bool"}],"name":"setInPrivateTransferMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_yieldTrackers","type":"address[]"}],"name":"setYieldTrackers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"stakedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yieldTrackers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526a084595161401484a0000006004553480156200002057600080fd5b506040518060400160405280600381526020017f544e4400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f544e4400000000000000000000000000000000000000000000000000000000008152506004548282828260009080519060200190620000ab92919062000542565b508160019080519060200190620000c492919062000542565b5033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200011833826200012460201b60201c565b505050505050620005e8565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180620042ab6023913960400191505060405180910390fd5b6004546002541062000226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f737570706c79206361702072656163686564000000000000000000000000000081525060200191505060405180910390fd5b6200023782620003d560201b60201c565b6200025381600254620004b960201b620027681790919060201c565b600281905550620002b281600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004b960201b620027681790919060201c565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200036b576200036481600354620004b960201b620027681790919060201c565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60005b600880549050811015620004b557600060088281548110620003f657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200048d57600080fd5b505af1158015620004a2573d6000803e3d6000fd5b50505050508080600101915050620003d8565b5050565b60008082840190508381101562000538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058557805160ff1916838001178555620005b6565b82800160010185558215620005b6579182015b82811115620005b557825182559160200191906001019062000598565b5b509050620005c59190620005c9565b5090565b5b80821115620005e4576000816000905550600101620005ca565b5090565b613cb380620005f86000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80636228907711610130578063a9059cbb116100b8578063cf456ae71161007c578063cf456ae714610e21578063cfad57a214610e71578063dd62ed3e14610eb5578063dfbaefb114610f2d578063fb30d91614610f4d57610232565b8063a9059cbb14610b70578063a923fc4014610bd4578063aa271e1a14610d26578063af640d0f14610d80578063c93be63614610e0357610232565b80639554381a116100ff5780639554381a1461099157806395d89b41146109eb578063996f11ee14610a6e5780639cb7de4b14610ad25780639dc29fac14610b2257610232565b8063622890771461089357806370480275146108d757806370a082311461091b578063817b1cd21461097357610232565b8063276eab4e116101be57806346ea87af1161018257806346ea87af146106e157806352cd38d91461073b57806355b6ed5c146107935780635a47a1a71461080b578063602172671461083b57610232565b8063276eab4e1461050857806327e235e3146105c0578063313ce5671461061857806340c10f1914610639578063429b62e51461068757610232565b806312d43a511161020557806312d43a51146103aa5780631785f53c146103de57806318160ddd146104225780631e83409a1461044057806323b872dd1461048457610232565b806301e336671461023757806306fdde03146102a5578063095ea7b3146103285780630b1913141461038c575b600080fd5b6102a36004803603606081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f91565b005b6102ad611084565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ed5780820151818401526020810190506102d2565b50505050905090810190601f16801561031a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103746004803603604081101561033e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611122565b60405180821515815260200191505060405180910390f35b610394611139565b6040518082815260200191505060405180910390f35b6103b261113f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610420600480360360208110156103f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611165565b005b61042a611283565b6040518082815260200191505060405180910390f35b6104826004803603602081101561045657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611289565b005b6104f06004803603606081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113aa565b60405180821515815260200191505060405180910390f35b6105be6004803603602081101561051e57600080fd5b810190808035906020019064010000000081111561053b57600080fd5b82018360208201111561054d57600080fd5b8035906020019184602083028401116401000000008311171561056f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506114e2565b005b610602600480360360208110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bf565b6040518082815260200191505060405180910390f35b6106206115d7565b604051808260ff16815260200191505060405180910390f35b6106856004803603604081101561064f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115dc565b005b6106c96004803603602081101561069d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116a9565b60405180821515815260200191505060405180910390f35b610723600480360360208110156106f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c9565b60405180821515815260200191505060405180910390f35b6107676004803603602081101561075157600080fd5b81019080803590602001909291905050506116e9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107f5600480360360408110156107a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611725565b6040518082815260200191505060405180910390f35b6108396004803603602081101561082157600080fd5b8101908080351515906020019092919050505061174a565b005b61087d6004803603602081101561085157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182a565b6040518082815260200191505060405180910390f35b6108d5600480360360208110156108a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118cf565b005b610919600480360360208110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aef565b005b61095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0d565b6040518082815260200191505060405180910390f35b61097b611c56565b6040518082815260200191505060405180910390f35b6109d3600480360360208110156109a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c74565b60405180821515815260200191505060405180910390f35b6109f3611c94565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a33578082015181840152602081019050610a18565b50505050905090810190601f168015610a605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ad060048036036040811015610a8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d32565b005b610b2060048036036040811015610ae857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f13565b005b610b6e60048036036040811015610b3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612031565b005b610bbc60048036036040811015610b8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120fe565b60405180821515815260200191505060405180910390f35b610d2460048036036040811015610bea57600080fd5b8101908080359060200190640100000000811115610c0757600080fd5b820183602082011115610c1957600080fd5b80359060200191846001830284011164010000000083111715610c3b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c9e57600080fd5b820183602082011115610cb057600080fd5b80359060200191846001830284011164010000000083111715610cd257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612115565b005b610d6860048036036020811015610d3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061220a565b60405180821515815260200191505060405180910390f35b610d8861222a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dc8578082015181840152602081019050610dad565b50505050905090810190601f168015610df55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e0b612267565b6040518082815260200191505060405180910390f35b610e6f60048036036040811015610e3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061226d565b005b610eb360048036036020811015610e8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238b565b005b610f1760048036036040811015610ecb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612492565b6040518082815260200191505060405180910390f35b610f35612519565b60405180821515815260200191505060405180910390f35b610f8f60048036036020811015610f6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b61107f82828573ffffffffffffffffffffffffffffffffffffffff166127f09092919063ffffffff16565b505050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561111a5780601f106110ef5761010080835404028352916020019161111a565b820191906000526020600020905b8154815290600101906020018083116110fd57829003601f168201915b505050505081565b600061112f338484612892565b6001905092915050565b60045481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60025481565b60005b6008805490508110156113a6576000600882815481106112a857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34233856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b505050506040513d602081101561138657600080fd5b81019080805190602001909291905050505050808060010191505061128c565b5050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561141257611409848484612a89565b600190506114db565b60006114bd836040518060600160405280602c8152602001613b1a602c9139600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b90506114ca853383612892565b6114d5858585612a89565b60019150505b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600890805190602001906115bb929190613922565b5050565b60066020528060005260406000206000915090505481565b601281565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6116a58282612fa9565b5050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b600881815481106116f657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561188757600090506118ca565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661198e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613bbe6022913960400191505060405180910390fd5b611a3a81613239565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ae6600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461276890919063ffffffff16565b60038190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c6f60035460025461331890919063ffffffff16565b905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d2a5780601f10611cff57610100808354040283529160200191611d2a565b820191906000526020600020905b815481529060010190602001808311611d0d57829003601f168201915b505050505081565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b60005b600880549050811015611f0e57600060088281548110611e1057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34285856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611ec457600080fd5b505af1158015611ed8573d6000803e3d6000fd5b505050506040513d6020811015611eee57600080fd5b810190808051906020019092919050505050508080600101915050611df4565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6120fa8282613362565b5050565b600061210b338484612a89565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b81600090805190602001906121ee9291906139ac565b5080600190805190602001906122059291906139ac565b505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600381526020017f544e440000000000000000000000000000000000000000000000000000000000815250905090565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900460ff1681565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b6564000081525060200191505060405180910390fd5b6126b381613239565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061275f600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461331890919063ffffffff16565b60038190555050565b6000808284019050838110156127e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61288d8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613593565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613b6c6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561299e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613af46026913960400191505060405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613c556029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613aaa6027913960400191505060405180910390fd5b600b60009054906101000a900460ff1615612c4d57600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a856025913960400191505060405180910390fd5b5b612c5683613239565b612c5f82613239565b612ccb816040518060600160405280602a8152602001613b94602a9139600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d6081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276890919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e1157612e0a8160035461331890919063ffffffff16565b6003819055505b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7f57612e788160035461276890919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f5b578082015181840152602081019050612f40565b50505050905090810190601f168015612f885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561302f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613ad16023913960400191505060405180910390fd5b600454600254106130a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f737570706c79206361702072656163686564000000000000000000000000000081525060200191505060405180910390fd5b6130b182613239565b6130c68160025461276890919063ffffffff16565b60028190555061311e81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276890919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131cf576131c88160035461276890919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60005b6008805490508110156133145760006008828154811061325857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156132ee57600080fd5b505af1158015613302573d6000803e3d6000fd5b5050505050808060010191505061323c565b5050565b600061335a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ee9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c306025913960400191505060405180910390fd5b6133f182613239565b61345d81604051806060016040528060268152602001613be060269139600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b58160025461331890919063ffffffff16565b600281905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613529576135228160035461331890919063ffffffff16565b6003819055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60606135f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166136829092919063ffffffff16565b905060008151111561367d5780806020019051602081101561361657600080fd5b810190808051906020019092919050505061367c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613c06602a913960400191505060405180910390fd5b5b505050565b6060613691848460008561369a565b90509392505050565b6060824710156136f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b466026913960400191505060405180910390fd5b6136fe85613843565b613770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106137c0578051825260208201915060208101905060208303925061379d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613822576040519150601f19603f3d011682016040523d82523d6000602084013e613827565b606091505b5091509150613837828286613856565b92505050949350505050565b600080823b905060008111915050919050565b606083156138665782905061391b565b6000835111156138795782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138e05780820151818401526020810190506138c5565b50505050905090810190601f16801561390d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b82805482825590600052602060002090810192821561399b579160200282015b8281111561399a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613942565b5b5090506139a89190613a2c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139ed57805160ff1916838001178555613a1b565b82800160010185558215613a1b579182015b82811115613a1a5782518255916020019190600101906139ff565b5b509050613a289190613a67565b5090565b5b80821115613a6357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613a2d565b5090565b5b80821115613a80576000816000905550600101613a68565b509056fe42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c697374656442617365546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737342617365546f6b656e3a206d696e7420746f20746865207a65726f206164647265737342617365546f6b656e3a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c42617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e636542617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b656442617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656442617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373a2646970667358221220092a7869e34fc0bfb1eb4f0f917cb9ee9d8133a201eea5f4972fb2569012e6da64736f6c634300060c003342617365546f6b656e3a206d696e7420746f20746865207a65726f2061646472657373
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c80636228907711610130578063a9059cbb116100b8578063cf456ae71161007c578063cf456ae714610e21578063cfad57a214610e71578063dd62ed3e14610eb5578063dfbaefb114610f2d578063fb30d91614610f4d57610232565b8063a9059cbb14610b70578063a923fc4014610bd4578063aa271e1a14610d26578063af640d0f14610d80578063c93be63614610e0357610232565b80639554381a116100ff5780639554381a1461099157806395d89b41146109eb578063996f11ee14610a6e5780639cb7de4b14610ad25780639dc29fac14610b2257610232565b8063622890771461089357806370480275146108d757806370a082311461091b578063817b1cd21461097357610232565b8063276eab4e116101be57806346ea87af1161018257806346ea87af146106e157806352cd38d91461073b57806355b6ed5c146107935780635a47a1a71461080b578063602172671461083b57610232565b8063276eab4e1461050857806327e235e3146105c0578063313ce5671461061857806340c10f1914610639578063429b62e51461068757610232565b806312d43a511161020557806312d43a51146103aa5780631785f53c146103de57806318160ddd146104225780631e83409a1461044057806323b872dd1461048457610232565b806301e336671461023757806306fdde03146102a5578063095ea7b3146103285780630b1913141461038c575b600080fd5b6102a36004803603606081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f91565b005b6102ad611084565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ed5780820151818401526020810190506102d2565b50505050905090810190601f16801561031a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103746004803603604081101561033e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611122565b60405180821515815260200191505060405180910390f35b610394611139565b6040518082815260200191505060405180910390f35b6103b261113f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610420600480360360208110156103f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611165565b005b61042a611283565b6040518082815260200191505060405180910390f35b6104826004803603602081101561045657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611289565b005b6104f06004803603606081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113aa565b60405180821515815260200191505060405180910390f35b6105be6004803603602081101561051e57600080fd5b810190808035906020019064010000000081111561053b57600080fd5b82018360208201111561054d57600080fd5b8035906020019184602083028401116401000000008311171561056f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506114e2565b005b610602600480360360208110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bf565b6040518082815260200191505060405180910390f35b6106206115d7565b604051808260ff16815260200191505060405180910390f35b6106856004803603604081101561064f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115dc565b005b6106c96004803603602081101561069d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116a9565b60405180821515815260200191505060405180910390f35b610723600480360360208110156106f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c9565b60405180821515815260200191505060405180910390f35b6107676004803603602081101561075157600080fd5b81019080803590602001909291905050506116e9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107f5600480360360408110156107a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611725565b6040518082815260200191505060405180910390f35b6108396004803603602081101561082157600080fd5b8101908080351515906020019092919050505061174a565b005b61087d6004803603602081101561085157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182a565b6040518082815260200191505060405180910390f35b6108d5600480360360208110156108a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118cf565b005b610919600480360360208110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aef565b005b61095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0d565b6040518082815260200191505060405180910390f35b61097b611c56565b6040518082815260200191505060405180910390f35b6109d3600480360360208110156109a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c74565b60405180821515815260200191505060405180910390f35b6109f3611c94565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a33578082015181840152602081019050610a18565b50505050905090810190601f168015610a605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ad060048036036040811015610a8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d32565b005b610b2060048036036040811015610ae857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f13565b005b610b6e60048036036040811015610b3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612031565b005b610bbc60048036036040811015610b8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120fe565b60405180821515815260200191505060405180910390f35b610d2460048036036040811015610bea57600080fd5b8101908080359060200190640100000000811115610c0757600080fd5b820183602082011115610c1957600080fd5b80359060200191846001830284011164010000000083111715610c3b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c9e57600080fd5b820183602082011115610cb057600080fd5b80359060200191846001830284011164010000000083111715610cd257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612115565b005b610d6860048036036020811015610d3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061220a565b60405180821515815260200191505060405180910390f35b610d8861222a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dc8578082015181840152602081019050610dad565b50505050905090810190601f168015610df55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e0b612267565b6040518082815260200191505060405180910390f35b610e6f60048036036040811015610e3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061226d565b005b610eb360048036036020811015610e8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238b565b005b610f1760048036036040811015610ecb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612492565b6040518082815260200191505060405180910390f35b610f35612519565b60405180821515815260200191505060405180910390f35b610f8f60048036036020811015610f6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b61107f82828573ffffffffffffffffffffffffffffffffffffffff166127f09092919063ffffffff16565b505050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561111a5780601f106110ef5761010080835404028352916020019161111a565b820191906000526020600020905b8154815290600101906020018083116110fd57829003601f168201915b505050505081565b600061112f338484612892565b6001905092915050565b60045481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60025481565b60005b6008805490508110156113a6576000600882815481106112a857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34233856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b505050506040513d602081101561138657600080fd5b81019080805190602001909291905050505050808060010191505061128c565b5050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561141257611409848484612a89565b600190506114db565b60006114bd836040518060600160405280602c8152602001613b1a602c9139600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b90506114ca853383612892565b6114d5858585612a89565b60019150505b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600890805190602001906115bb929190613922565b5050565b60066020528060005260406000206000915090505481565b601281565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6116a58282612fa9565b5050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b600881815481106116f657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561188757600090506118ca565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661198e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613bbe6022913960400191505060405180910390fd5b611a3a81613239565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ae6600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461276890919063ffffffff16565b60038190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c6f60035460025461331890919063ffffffff16565b905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d2a5780601f10611cff57610100808354040283529160200191611d2a565b820191906000526020600020905b815481529060010190602001808311611d0d57829003601f168201915b505050505081565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b60005b600880549050811015611f0e57600060088281548110611e1057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34285856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611ec457600080fd5b505af1158015611ed8573d6000803e3d6000fd5b505050506040513d6020811015611eee57600080fd5b810190808051906020019092919050505050508080600101915050611df4565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6120fa8282613362565b5050565b600061210b338484612a89565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b81600090805190602001906121ee9291906139ac565b5080600190805190602001906122059291906139ac565b505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600381526020017f544e440000000000000000000000000000000000000000000000000000000000815250905090565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900460ff1681565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b6564000081525060200191505060405180910390fd5b6126b381613239565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061275f600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461331890919063ffffffff16565b60038190555050565b6000808284019050838110156127e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61288d8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613593565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613b6c6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561299e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613af46026913960400191505060405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613c556029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613aaa6027913960400191505060405180910390fd5b600b60009054906101000a900460ff1615612c4d57600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a856025913960400191505060405180910390fd5b5b612c5683613239565b612c5f82613239565b612ccb816040518060600160405280602a8152602001613b94602a9139600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d6081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276890919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e1157612e0a8160035461331890919063ffffffff16565b6003819055505b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7f57612e788160035461276890919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f5b578082015181840152602081019050612f40565b50505050905090810190601f168015612f885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561302f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613ad16023913960400191505060405180910390fd5b600454600254106130a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f737570706c79206361702072656163686564000000000000000000000000000081525060200191505060405180910390fd5b6130b182613239565b6130c68160025461276890919063ffffffff16565b60028190555061311e81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276890919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131cf576131c88160035461276890919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60005b6008805490508110156133145760006008828154811061325857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156132ee57600080fd5b505af1158015613302573d6000803e3d6000fd5b5050505050808060010191505061323c565b5050565b600061335a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ee9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c306025913960400191505060405180910390fd5b6133f182613239565b61345d81604051806060016040528060268152602001613be060269139600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee99092919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b58160025461331890919063ffffffff16565b600281905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613529576135228160035461331890919063ffffffff16565b6003819055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60606135f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166136829092919063ffffffff16565b905060008151111561367d5780806020019051602081101561361657600080fd5b810190808051906020019092919050505061367c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613c06602a913960400191505060405180910390fd5b5b505050565b6060613691848460008561369a565b90509392505050565b6060824710156136f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b466026913960400191505060405180910390fd5b6136fe85613843565b613770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106137c0578051825260208201915060208101905060208303925061379d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613822576040519150601f19603f3d011682016040523d82523d6000602084013e613827565b606091505b5091509150613837828286613856565b92505050949350505050565b600080823b905060008111915050919050565b606083156138665782905061391b565b6000835111156138795782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138e05780820151818401526020810190506138c5565b50505050905090810190601f16801561390d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b82805482825590600052602060002090810192821561399b579160200282015b8281111561399a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613942565b5b5090506139a89190613a2c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139ed57805160ff1916838001178555613a1b565b82800160010185558215613a1b579182015b82811115613a1a5782518255916020019190600101906139ff565b5b509050613a289190613a67565b5090565b5b80821115613a6357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613a2d565b5090565b5b80821115613a80576000816000905550600101613a68565b509056fe42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c697374656442617365546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737342617365546f6b656e3a206d696e7420746f20746865207a65726f206164647265737342617365546f6b656e3a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c42617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e636542617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b656442617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656442617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373a2646970667358221220092a7869e34fc0bfb1eb4f0f917cb9ee9d8133a201eea5f4972fb2569012e6da64736f6c634300060c0033
Deployed ByteCode Sourcemap
29813:214:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23086:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21373:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25547:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21551:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21601:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22896:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21469:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24481:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25720:500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22660:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21628:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21425:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29489:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21850:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21938:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21755:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21679:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23259:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24999:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23550:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22793:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24869:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24738:123;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21792:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21398:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24191:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23421:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29618;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25212:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22516:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29029:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29935:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21511:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29355:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22432:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25391:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21898:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23871:312;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23086:165;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23197:46:::1;23225:8;23235:7;23204:6;23197:27;;;;:46;;;;;:::i;:::-;23086:165:::0;;;:::o;21373:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25547:165::-;25626:4;25643:39;25652:10;25664:8;25674:7;25643:8;:39::i;:::-;25700:4;25693:11;;25547:165;;;;:::o;21551:41::-;;;;:::o;21601:18::-;;;;;;;;;;;;;:::o;22896:108::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22991:5:::1;22972:6;:16;22979:8;22972:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;22896:108:::0;:::o;21469:35::-;;;;:::o;24481:249::-;24540:9;24535:188;24559:13;:20;;;;24555:1;:24;24535:188;;;24601:20;24624:13;24638:1;24624:16;;;;;;;;;;;;;;;;;;;;;;;;;24601:39;;24669:12;24655:33;;;24689:10;24701:9;24655:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24535:188;24581:3;;;;;;;24535:188;;;;24481:249;:::o;25720:500::-;25823:4;25844:9;:21;25854:10;25844:21;;;;;;;;;;;;;;;;;;;;;;;;;25840:119;;;25882:39;25892:7;25901:10;25913:7;25882:9;:39::i;:::-;25943:4;25936:11;;;;25840:119;25969:21;25993:92;26029:7;25993:92;;;;;;;;;;;;;;;;;:10;:19;26004:7;25993:19;;;;;;;;;;;;;;;:31;26013:10;25993:31;;;;;;;;;;;;;;;;:35;;:92;;;;;:::i;:::-;25969:116;;26096:44;26105:7;26114:10;26126:13;26096:8;:44::i;:::-;26151:39;26161:7;26170:10;26182:7;26151:9;:39::i;:::-;26208:4;26201:11;;;25720:500;;;;;;:::o;22660:125::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22763:14:::1;22747:13;:30;;;;;;;;;;;;:::i;:::-;;22660:125:::0;:::o;21628:44::-;;;;;;;;;;;;;;;;;:::o;21425:35::-;21458:2;21425:35;:::o;29489:121::-;29274:8;:20;29283:10;29274:20;;;;;;;;;;;;;;;;;;;;;;;;;29266:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29578:24:::1;29584:8;29594:7;29578:5;:24::i;:::-;29489:121:::0;;:::o;21850:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;21938:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;21755:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21679:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23259:154::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23383:22:::1;23359:21;;:46;;;;;;;;;;;;;;;;;;23259:154:::0;:::o;24999:205::-;25072:7;25096:18;:28;25115:8;25096:28;;;;;;;;;;;;;;;;;;;;;;;;;25092:69;;;25148:1;25141:8;;;;25092:69;25178:8;:18;25187:8;25178:18;;;;;;;;;;;;;;;;25171:25;;24999:205;;;;:::o;23550:313::-;22137:6;:18;22144:10;22137:18;;;;;;;;;;;;;;;;;;;;;;;;;22129:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23637:18:::1;:28;23656:8;23637:28;;;;;;;;;;;;;;;;;;;;;;;;;23636:29;23628:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23715:24;23730:8;23715:14;:24::i;:::-;23781:4;23750:18;:28;23769:8;23750:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23815:40;23836:8;:18;23845:8;23836:18;;;;;;;;;;;;;;;;23815:16;;:20;;:40;;;;:::i;:::-;23796:16;:59;;;;23550:313:::0;:::o;22793:95::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22876:4:::1;22857:6;:16;22864:8;22857:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;22793:95:::0;:::o;24869:122::-;24938:7;24965:8;:18;24974:8;24965:18;;;;;;;;;;;;;;;;24958:25;;24869:122;;;:::o;24738:123::-;24793:7;24820:33;24836:16;;24820:11;;:15;;:33;;;;:::i;:::-;24813:40;;24738:123;:::o;21792:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;21398:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24191:282::-;22137:6;:18;22144:10;22137:18;;;;;;;;;;;;;;;;;;;;;;;;;22129:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24285:9:::1;24280:186;24304:13;:20;;;;24300:1;:24;24280:186;;;24346:20;24369:13;24383:1;24369:16;;;;;;;;;;;;;;;;;;;;;;;;;24346:39;;24414:12;24400:33;;;24434:8;24444:9;24400:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;24280:186;24326:3;;;;;;;24280:186;;;;24191:282:::0;;:::o;23421:121::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23525:9:::1;23503;:19;23513:8;23503:19;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23421:121:::0;;:::o;29618:::-;29274:8;:20;29283:10;29274:20;;;;;;;;;;;;;;;;;;;;;;;;;29266:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29707:24:::1;29713:8;29723:7;29707:5;:24::i;:::-;29618:121:::0;;:::o;25212:171::-;25294:4;25311:42;25321:10;25333;25345:7;25311:9;:42::i;:::-;25371:4;25364:11;;25212:171;;;;:::o;22516:136::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22612:5:::1;22605:4;:12;;;;;;;;;;;;:::i;:::-;;22637:7;22628:6;:16;;;;;;;;;;;;:::i;:::-;;22516:136:::0;;:::o;29029:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;29935:89::-;29972:19;30004:12;;;;;;;;;;;;;;;;;;;29935:89;:::o;21511:31::-;;;;:::o;29355:126::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29464:9:::1;29444:8;:17;29453:7;29444:17;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29355:126:::0;;:::o;22432:76::-;22041:3;;;;;;;;;;;22027:17;;:10;:17;;;22019:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22496:4:::1;22490:3;;:10;;;;;;;;;;;;;;;;;;22432:76:::0;:::o;25391:148::-;25476:7;25503:10;:18;25514:6;25503:18;;;;;;;;;;;;;;;:28;25522:8;25503:28;;;;;;;;;;;;;;;;25496:35;;25391:148;;;;:::o;21898:33::-;;;;;;;;;;;;;:::o;23871:312::-;22137:6;:18;22144:10;22137:18;;;;;;;;;;;;;;;;;;;;;;;;;22129:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23960:18:::1;:28;23979:8;23960:28;;;;;;;;;;;;;;;;;;;;;;;;;23952:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24034:24;24049:8;24034:14;:24::i;:::-;24100:5;24069:18;:28;24088:8;24069:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24135:40;24156:8;:18;24165:8;24156:18;;;;;;;;;;;;;;;;24135:16;;:20;;:40;;;;:::i;:::-;24116:16;:59;;;;23871:312:::0;:::o;12992:181::-;13050:7;13070:9;13086:1;13082;:5;13070:17;;13111:1;13106;:6;;13098:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13164:1;13157:8;;;12992:181;;;;:::o;18100:177::-;18183:86;18203:5;18233:23;;;18258:2;18262:5;18210:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18183:19;:86::i;:::-;18100:177;;;:::o;28260:357::-;28374:1;28356:20;;:6;:20;;;;28348:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28460:1;28440:22;;:8;:22;;;;28432:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28549:7;28518:10;:18;28529:6;28518:18;;;;;;;;;;;;;;;:28;28537:8;28518:28;;;;;;;;;;;;;;;:38;;;;28591:8;28574:35;;28583:6;28574:35;;;28601:7;28574:35;;;;;;;;;;;;;;;;;;28260:357;;;:::o;27308:944::-;27427:1;27408:21;;:7;:21;;;;27400:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27516:1;27494:24;;:10;:24;;;;27486:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27579:21;;;;;;;;;;;27575:125;;;27625:9;:21;27635:10;27625:21;;;;;;;;;;;;;;;;;;;;;;;;;27617:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27575:125;27712:23;27727:7;27712:14;:23::i;:::-;27746:26;27761:10;27746:14;:26::i;:::-;27805:76;27827:7;27805:76;;;;;;;;;;;;;;;;;:8;:17;27814:7;27805:17;;;;;;;;;;;;;;;;:21;;:76;;;;;:::i;:::-;27785:8;:17;27794:7;27785:17;;;;;;;;;;;;;;;:96;;;;27915:33;27940:7;27915:8;:20;27924:10;27915:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;27892:8;:20;27901:10;27892:20;;;;;;;;;;;;;;;:56;;;;27965:18;:27;27984:7;27965:27;;;;;;;;;;;;;;;;;;;;;;;;;27961:108;;;28028:29;28049:7;28028:16;;:20;;:29;;;;:::i;:::-;28009:16;:48;;;;27961:108;28083:18;:30;28102:10;28083:30;;;;;;;;;;;;;;;;;;;;;;;;;28079:111;;;28149:29;28170:7;28149:16;;:20;;:29;;;;:::i;:::-;28130:16;:48;;;;28079:111;28225:10;28207:37;;28216:7;28207:37;;;28236:7;28207:37;;;;;;;;;;;;;;;;;;27308:944;;;:::o;13895:192::-;13981:7;14014:1;14009;:6;;14017:12;14001:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14041:9;14057:1;14053;:5;14041:17;;14078:1;14071:8;;;13895:192;;;;;:::o;26228:543::-;26326:1;26306:22;;:8;:22;;;;26298:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26401:10;;26387:11;;:24;26379:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26447:24;26462:8;26447:14;:24::i;:::-;26498;26514:7;26498:11;;:15;;:24;;;;:::i;:::-;26484:11;:38;;;;26554:31;26577:7;26554:8;:18;26563:8;26554:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;26533:8;:18;26542:8;26533:18;;;;;;;;;;;;;;;:52;;;;26602:18;:28;26621:8;26602:28;;;;;;;;;;;;;;;;;;;;;;;;;26598:109;;;26666:29;26687:7;26666:16;;:20;;:29;;;;:::i;:::-;26647:16;:48;;;;26598:109;26745:8;26724:39;;26741:1;26724:39;;;26755:7;26724:39;;;;;;;;;;;;;;;;;;26228:543;;:::o;28625:251::-;28691:9;28686:183;28710:13;:20;;;;28706:1;:24;28686:183;;;28752:20;28775:13;28789:1;28775:16;;;;;;;;;;;;;;;;;;;;;;;;;28752:39;;28820:12;28806:41;;;28848:8;28806:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28686:183;28732:3;;;;;;;28686:183;;;;28625:251;:::o;13456:136::-;13514:7;13541:43;13545:1;13548;13541:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;13534:50;;13456:136;;;;:::o;26779:521::-;26877:1;26857:22;;:8;:22;;;;26849:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26934:24;26949:8;26934:14;:24::i;:::-;26992:73;27015:7;26992:73;;;;;;;;;;;;;;;;;:8;:18;27001:8;26992:18;;;;;;;;;;;;;;;;:22;;:73;;;;;:::i;:::-;26971:8;:18;26980:8;26971:18;;;;;;;;;;;;;;;:94;;;;27090:24;27106:7;27090:11;;:15;;:24;;;;:::i;:::-;27076:11;:38;;;;27131:18;:28;27150:8;27131:28;;;;;;;;;;;;;;;;;;;;;;;;;27127:109;;;27195:29;27216:7;27195:16;;:20;;:29;;;;:::i;:::-;27176:16;:48;;;;27127:109;27280:1;27253:39;;27262:8;27253:39;;;27284:7;27253:39;;;;;;;;;;;;;;;;;;26779:521;;:::o;20405:761::-;20829:23;20855:69;20883:4;20855:69;;;;;;;;;;;;;;;;;20863:5;20855:27;;;;:69;;;;;:::i;:::-;20829:95;;20959:1;20939:10;:17;:21;20935:224;;;21081:10;21070:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21062:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20935:224;20405:761;;;:::o;4937:195::-;5040:12;5072:52;5094:6;5102:4;5108:1;5111:12;5072:21;:52::i;:::-;5065:59;;4937:195;;;;;:::o;5989:530::-;6116:12;6174:5;6149:21;:30;;6141:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:18;6252:6;6241:10;:18::i;:::-;6233:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6367:12;6381:23;6408:6;:11;;6428:5;6436:4;6408:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6366:75;;;;6459:52;6477:7;6486:10;6498:12;6459:17;:52::i;:::-;6452:59;;;;5989:530;;;;;;:::o;2019:422::-;2079:4;2287:12;2398:7;2386:20;2378:28;;2432:1;2425:4;:8;2418:15;;;2019:422;;;:::o;8529:742::-;8644:12;8673:7;8669:595;;;8704:10;8697:17;;;;8669:595;8838:1;8818:10;:17;:21;8814:439;;;9081:10;9075:17;9142:15;9129:10;9125:2;9121:19;9114:44;9029:148;9224:12;9217:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8529:742;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Metadata Hash
ipfs://092a7869e34fc0bfb1eb4f0f917cb9ee9d8133a201eea5f4972fb2569012e6da