More Info
Private Name Tags
ContractCreator:
TokenTracker
Sponsored
Latest 25 from a total of 226 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve | 74968628 | 57 days ago | IN | 0 FTM | 0.00024932 | ||||
Approve | 74646656 | 66 days ago | IN | 0 FTM | 0.00532885 | ||||
Approve | 61791446 | 325 days ago | IN | 0 FTM | 0.00995296 | ||||
Approve | 60584568 | 341 days ago | IN | 0 FTM | 0.00586194 | ||||
Approve | 59558025 | 354 days ago | IN | 0 FTM | 0.00341401 | ||||
Approve | 59558020 | 354 days ago | IN | 0 FTM | 0.00341401 | ||||
Approve | 59558012 | 354 days ago | IN | 0 FTM | 0.00341401 | ||||
Approve | 57911407 | 376 days ago | IN | 0 FTM | 0.00274252 | ||||
Approve | 49109810 | 532 days ago | IN | 0 FTM | 0.00014371 | ||||
Approve | 47634873 | 552 days ago | IN | 0 FTM | 0.00007851 | ||||
Approve | 44834351 | 593 days ago | IN | 0 FTM | 0.00012017 | ||||
Approve | 44454330 | 599 days ago | IN | 0 FTM | 0.00009423 | ||||
Approve | 43859153 | 608 days ago | IN | 0 FTM | 0.0001373 | ||||
Approve | 43858909 | 608 days ago | IN | 0 FTM | 0.00013744 | ||||
Approve | 43264873 | 616 days ago | IN | 0 FTM | 0.00007517 | ||||
Approve | 43259870 | 616 days ago | IN | 0 FTM | 0.00032731 | ||||
Approve | 42832800 | 622 days ago | IN | 0 FTM | 0.00019462 | ||||
Approve | 42495913 | 627 days ago | IN | 0 FTM | 0.05359686 | ||||
Approve | 42327485 | 629 days ago | IN | 0 FTM | 0.00054804 | ||||
Approve | 42037131 | 633 days ago | IN | 0 FTM | 0.0000496 | ||||
Approve | 41967593 | 634 days ago | IN | 0 FTM | 0.00011922 | ||||
Approve | 41945636 | 634 days ago | IN | 0 FTM | 0.0047688 | ||||
Approve | 41894850 | 635 days ago | IN | 0 FTM | 0.00013257 | ||||
Approve | 41486704 | 640 days ago | IN | 0 FTM | 0.00020223 | ||||
Approve | 41485673 | 640 days ago | IN | 0 FTM | 0.01983163 |
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
39712298 | 664 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
Draco
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-06-03 */ pragma solidity ^0.8.9; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @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 Disastered * ==== */ 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; 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"); (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"); (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"); (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.4._ */ 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.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @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 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' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _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 require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, Ownable, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 private _totalBurned; uint256 private MAXSUPPLY = 5000 ether; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function TotalDisastered() public view returns (uint256) { return _totalBurned; } function maxSupply() public view returns (uint256) { return MAXSUPPLY; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); require(amount != 0, "ERC20: amount must be greater than 0"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalBurned += amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Draco is ERC20('Draco', 'DRACO') { address public disaster; address public controllerchef; event SetContracts(address indexed newDisaster, address indexed newControllerchef); constructor() { _mint(_msgSender(), uint256(400000000000000000000)); // 400 tokens for initial liquidity _mint(address(0xDD5114D75b4e7aCB344c47298b21dCA28ba87dfb), uint256(20000000000000000000)); // 20 tokens for marketing } modifier onlyDisaster() { require(_msgSender() == disaster, "disaster: caller is not the disaster"); _; } modifier onlyControllerchef() { require(_msgSender() == controllerchef, "controllerchef: caller is not the controllerchef"); _; } function mint(address to, uint256 amount) external onlyControllerchef { _mint(to, amount); } function burn(uint256 amount) external onlyDisaster { _burn(_msgSender(), amount); } function setContracts(address _disaster, address _controllerchef) public onlyOwner { require(disaster == address(0) && controllerchef == address(0), "set already"); disaster = _disaster; controllerchef = _controllerchef; emit SetContracts(disaster, controllerchef); } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newDisaster","type":"address"},{"indexed":true,"internalType":"address","name":"newControllerchef","type":"address"}],"name":"SetContracts","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":"TotalDisastered","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"controllerchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disaster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_disaster","type":"address"},{"internalType":"address","name":"_controllerchef","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405269010f0cf064dd592000006005553480156200001f57600080fd5b506040518060400160405280600581526020017f447261636f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f445241434f000000000000000000000000000000000000000000000000000000815250620000ac620000a06200013f60201b60201c565b6200014760201b60201c565b8160069080519060200190620000c4929190620003d6565b508060079080519060200190620000dd929190620003d6565b5050506200010a620000f46200013f60201b60201c565b6815af1d78b58c4000006200020b60201b60201c565b6200013973dd5114d75b4e7acb344c47298b21dca28ba87dfb6801158e460913d000006200020b60201b60201c565b620006ca565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200027e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027590620004e7565b60405180910390fd5b6000811415620002c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bc906200057f565b60405180910390fd5b620002d960008383620003cc60201b60201c565b8060036000828254620002ed9190620005da565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003459190620005da565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003ac919062000648565b60405180910390a3620003c860008383620003d160201b60201c565b5050565b505050565b505050565b828054620003e49062000694565b90600052602060002090601f01602090048101928262000408576000855562000454565b82601f106200042357805160ff191683800117855562000454565b8280016001018555821562000454579182015b828111156200045357825182559160200191906001019062000436565b5b50905062000463919062000467565b5090565b5b808211156200048257600081600090555060010162000468565b5090565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620004cf601f8362000486565b9150620004dc8262000497565b602082019050919050565b600060208201905081810360008301526200050281620004c0565b9050919050565b7f45524332303a20616d6f756e74206d757374206265206772656174657220746860008201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b60006200056760248362000486565b9150620005748262000509565b604082019050919050565b600060208201905081810360008301526200059a8162000558565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005e782620005a1565b9150620005f483620005a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200062c576200062b620005ab565b5b828201905092915050565b6200064281620005a1565b82525050565b60006020820190506200065f600083018462000637565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006ad57607f821691505b60208210811415620006c457620006c362000665565b5b50919050565b61242980620006da6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a50ac47116100ad578063c1fff9f611610071578063c1fff9f61461035b578063d5abeb0114610379578063d8952a4914610397578063dd62ed3e146103b3578063f2fde38b146103e35761012c565b80638a50ac47146102a15780638da5cb5b146102bf57806395d89b41146102dd578063a457c2d7146102fb578063a9059cbb1461032b5761012c565b8063313ce567116100f4578063313ce567146101eb578063395093511461020957806340c10f191461023957806342966c681461025557806370a08231146102715761012c565b806306fdde0314610131578063095ea7b31461014f5780630c923d831461017f57806318160ddd1461019d57806323b872dd146101bb575b600080fd5b6101396103ff565b6040516101469190611782565b60405180910390f35b6101696004803603810190610164919061183d565b610491565b6040516101769190611898565b60405180910390f35b6101876104af565b60405161019491906118c2565b60405180910390f35b6101a56104d5565b6040516101b291906118ec565b60405180910390f35b6101d560048036038101906101d09190611907565b6104df565b6040516101e29190611898565b60405180910390f35b6101f36105d7565b6040516102009190611976565b60405180910390f35b610223600480360381019061021e919061183d565b6105e0565b6040516102309190611898565b60405180910390f35b610253600480360381019061024e919061183d565b61068c565b005b61026f600480360381019061026a9190611991565b610731565b005b61028b600480360381019061028691906119be565b6107dc565b60405161029891906118ec565b60405180910390f35b6102a9610825565b6040516102b691906118ec565b60405180910390f35b6102c761082f565b6040516102d491906118c2565b60405180910390f35b6102e5610858565b6040516102f29190611782565b60405180910390f35b6103156004803603810190610310919061183d565b6108ea565b6040516103229190611898565b60405180910390f35b6103456004803603810190610340919061183d565b6109d5565b6040516103529190611898565b60405180910390f35b6103636109f3565b60405161037091906118c2565b60405180910390f35b610381610a19565b60405161038e91906118ec565b60405180910390f35b6103b160048036038101906103ac91906119eb565b610a23565b005b6103cd60048036038101906103c891906119eb565b610cae565b6040516103da91906118ec565b60405180910390f35b6103fd60048036038101906103f891906119be565b610d35565b005b60606006805461040e90611a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461043a90611a5a565b80156104875780601f1061045c57610100808354040283529160200191610487565b820191906000526020600020905b81548152906001019060200180831161046a57829003601f168201915b5050505050905090565b60006104a561049e610e2d565b8484610e35565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b60006104ec848484611000565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610537610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90611afe565b60405180910390fd5b6105cb856105c3610e2d565b858403610e35565b60019150509392505050565b60006012905090565b60006106826105ed610e2d565b8484600260006105fb610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461067d9190611b4d565b610e35565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cd610e2d565b73ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611c15565b60405180910390fd5b61072d8282611284565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610772610e2d565b73ffffffffffffffffffffffffffffffffffffffff16146107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90611ca7565b60405180910390fd5b6107d96107d3610e2d565b82611429565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600454905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461086790611a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461089390611a5a565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b600080600260006108f9610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad90611d39565b60405180910390fd5b6109ca6109c1610e2d565b85858403610e35565b600191505092915050565b60006109e96109e2610e2d565b8484611000565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b610a2b610e2d565b73ffffffffffffffffffffffffffffffffffffffff16610a4961082f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9690611da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610b4b5750600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190611e11565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1e53a3a0905fc770cbc2c2f3d1087dca554cb6f7f080c9b2ab5cdf716d18f28060405160405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3d610e2d565b73ffffffffffffffffffffffffffffffffffffffff16610d5b61082f565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890611da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890611ea3565b60405180910390fd5b610e2a8161161b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90611f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90611fc7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ff391906118ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790612059565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d7906120eb565b60405180910390fd5b6110eb8383836116df565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111699061217d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112079190611b4d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161126b91906118ec565b60405180910390a361127e8484846116e4565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb906121e9565b60405180910390fd5b6000811415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f9061227b565b60405180910390fd5b611344600083836116df565b80600360008282546113569190611b4d565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113ac9190611b4d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161141191906118ec565b60405180910390a3611425600083836116e4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114909061230d565b60405180910390fd5b6114a5826000836116df565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561152c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115239061239f565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546115849190611b4d565b92505081905550816003600082825461159d91906123bf565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161160291906118ec565b60405180910390a3611616836000846116e4565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611723578082015181840152602081019050611708565b83811115611732576000848401525b50505050565b6000601f19601f8301169050919050565b6000611754826116e9565b61175e81856116f4565b935061176e818560208601611705565b61177781611738565b840191505092915050565b6000602082019050818103600083015261179c8184611749565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117d4826117a9565b9050919050565b6117e4816117c9565b81146117ef57600080fd5b50565b600081359050611801816117db565b92915050565b6000819050919050565b61181a81611807565b811461182557600080fd5b50565b60008135905061183781611811565b92915050565b60008060408385031215611854576118536117a4565b5b6000611862858286016117f2565b925050602061187385828601611828565b9150509250929050565b60008115159050919050565b6118928161187d565b82525050565b60006020820190506118ad6000830184611889565b92915050565b6118bc816117c9565b82525050565b60006020820190506118d760008301846118b3565b92915050565b6118e681611807565b82525050565b600060208201905061190160008301846118dd565b92915050565b6000806000606084860312156119205761191f6117a4565b5b600061192e868287016117f2565b935050602061193f868287016117f2565b925050604061195086828701611828565b9150509250925092565b600060ff82169050919050565b6119708161195a565b82525050565b600060208201905061198b6000830184611967565b92915050565b6000602082840312156119a7576119a66117a4565b5b60006119b584828501611828565b91505092915050565b6000602082840312156119d4576119d36117a4565b5b60006119e2848285016117f2565b91505092915050565b60008060408385031215611a0257611a016117a4565b5b6000611a10858286016117f2565b9250506020611a21858286016117f2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a7257607f821691505b60208210811415611a8657611a85611a2b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611ae86028836116f4565b9150611af382611a8c565b604082019050919050565b60006020820190508181036000830152611b1781611adb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b5882611807565b9150611b6383611807565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b9857611b97611b1e565b5b828201905092915050565b7f636f6e74726f6c6c6572636865663a2063616c6c6572206973206e6f7420746860008201527f6520636f6e74726f6c6c65726368656600000000000000000000000000000000602082015250565b6000611bff6030836116f4565b9150611c0a82611ba3565b604082019050919050565b60006020820190508181036000830152611c2e81611bf2565b9050919050565b7f64697361737465723a2063616c6c6572206973206e6f7420746865206469736160008201527f7374657200000000000000000000000000000000000000000000000000000000602082015250565b6000611c916024836116f4565b9150611c9c82611c35565b604082019050919050565b60006020820190508181036000830152611cc081611c84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611d236025836116f4565b9150611d2e82611cc7565b604082019050919050565b60006020820190508181036000830152611d5281611d16565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d8f6020836116f4565b9150611d9a82611d59565b602082019050919050565b60006020820190508181036000830152611dbe81611d82565b9050919050565b7f73657420616c7265616479000000000000000000000000000000000000000000600082015250565b6000611dfb600b836116f4565b9150611e0682611dc5565b602082019050919050565b60006020820190508181036000830152611e2a81611dee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e8d6026836116f4565b9150611e9882611e31565b604082019050919050565b60006020820190508181036000830152611ebc81611e80565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611f1f6024836116f4565b9150611f2a82611ec3565b604082019050919050565b60006020820190508181036000830152611f4e81611f12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611fb16022836116f4565b9150611fbc82611f55565b604082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006120436025836116f4565b915061204e82611fe7565b604082019050919050565b6000602082019050818103600083015261207281612036565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120d56023836116f4565b91506120e082612079565b604082019050919050565b60006020820190508181036000830152612104816120c8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121676026836116f4565b91506121728261210b565b604082019050919050565b600060208201905081810360008301526121968161215a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006121d3601f836116f4565b91506121de8261219d565b602082019050919050565b60006020820190508181036000830152612202816121c6565b9050919050565b7f45524332303a20616d6f756e74206d757374206265206772656174657220746860008201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b60006122656024836116f4565b915061227082612209565b604082019050919050565b6000602082019050818103600083015261229481612258565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006122f76021836116f4565b91506123028261229b565b604082019050919050565b60006020820190508181036000830152612326816122ea565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006123896022836116f4565b91506123948261232d565b604082019050919050565b600060208201905081810360008301526123b88161237c565b9050919050565b60006123ca82611807565b91506123d583611807565b9250828210156123e8576123e7611b1e565b5b82820390509291505056fea2646970667358221220900a8b31442149708e93ab20833955785723afd1d48140ede87bbc17082c730064736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a50ac47116100ad578063c1fff9f611610071578063c1fff9f61461035b578063d5abeb0114610379578063d8952a4914610397578063dd62ed3e146103b3578063f2fde38b146103e35761012c565b80638a50ac47146102a15780638da5cb5b146102bf57806395d89b41146102dd578063a457c2d7146102fb578063a9059cbb1461032b5761012c565b8063313ce567116100f4578063313ce567146101eb578063395093511461020957806340c10f191461023957806342966c681461025557806370a08231146102715761012c565b806306fdde0314610131578063095ea7b31461014f5780630c923d831461017f57806318160ddd1461019d57806323b872dd146101bb575b600080fd5b6101396103ff565b6040516101469190611782565b60405180910390f35b6101696004803603810190610164919061183d565b610491565b6040516101769190611898565b60405180910390f35b6101876104af565b60405161019491906118c2565b60405180910390f35b6101a56104d5565b6040516101b291906118ec565b60405180910390f35b6101d560048036038101906101d09190611907565b6104df565b6040516101e29190611898565b60405180910390f35b6101f36105d7565b6040516102009190611976565b60405180910390f35b610223600480360381019061021e919061183d565b6105e0565b6040516102309190611898565b60405180910390f35b610253600480360381019061024e919061183d565b61068c565b005b61026f600480360381019061026a9190611991565b610731565b005b61028b600480360381019061028691906119be565b6107dc565b60405161029891906118ec565b60405180910390f35b6102a9610825565b6040516102b691906118ec565b60405180910390f35b6102c761082f565b6040516102d491906118c2565b60405180910390f35b6102e5610858565b6040516102f29190611782565b60405180910390f35b6103156004803603810190610310919061183d565b6108ea565b6040516103229190611898565b60405180910390f35b6103456004803603810190610340919061183d565b6109d5565b6040516103529190611898565b60405180910390f35b6103636109f3565b60405161037091906118c2565b60405180910390f35b610381610a19565b60405161038e91906118ec565b60405180910390f35b6103b160048036038101906103ac91906119eb565b610a23565b005b6103cd60048036038101906103c891906119eb565b610cae565b6040516103da91906118ec565b60405180910390f35b6103fd60048036038101906103f891906119be565b610d35565b005b60606006805461040e90611a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461043a90611a5a565b80156104875780601f1061045c57610100808354040283529160200191610487565b820191906000526020600020905b81548152906001019060200180831161046a57829003601f168201915b5050505050905090565b60006104a561049e610e2d565b8484610e35565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b60006104ec848484611000565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610537610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90611afe565b60405180910390fd5b6105cb856105c3610e2d565b858403610e35565b60019150509392505050565b60006012905090565b60006106826105ed610e2d565b8484600260006105fb610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461067d9190611b4d565b610e35565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cd610e2d565b73ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611c15565b60405180910390fd5b61072d8282611284565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610772610e2d565b73ffffffffffffffffffffffffffffffffffffffff16146107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90611ca7565b60405180910390fd5b6107d96107d3610e2d565b82611429565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600454905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461086790611a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461089390611a5a565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b600080600260006108f9610e2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad90611d39565b60405180910390fd5b6109ca6109c1610e2d565b85858403610e35565b600191505092915050565b60006109e96109e2610e2d565b8484611000565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b610a2b610e2d565b73ffffffffffffffffffffffffffffffffffffffff16610a4961082f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9690611da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610b4b5750600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190611e11565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1e53a3a0905fc770cbc2c2f3d1087dca554cb6f7f080c9b2ab5cdf716d18f28060405160405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3d610e2d565b73ffffffffffffffffffffffffffffffffffffffff16610d5b61082f565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890611da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890611ea3565b60405180910390fd5b610e2a8161161b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90611f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90611fc7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ff391906118ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790612059565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d7906120eb565b60405180910390fd5b6110eb8383836116df565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111699061217d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112079190611b4d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161126b91906118ec565b60405180910390a361127e8484846116e4565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb906121e9565b60405180910390fd5b6000811415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f9061227b565b60405180910390fd5b611344600083836116df565b80600360008282546113569190611b4d565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113ac9190611b4d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161141191906118ec565b60405180910390a3611425600083836116e4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114909061230d565b60405180910390fd5b6114a5826000836116df565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561152c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115239061239f565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546115849190611b4d565b92505081905550816003600082825461159d91906123bf565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161160291906118ec565b60405180910390a3611616836000846116e4565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611723578082015181840152602081019050611708565b83811115611732576000848401525b50505050565b6000601f19601f8301169050919050565b6000611754826116e9565b61175e81856116f4565b935061176e818560208601611705565b61177781611738565b840191505092915050565b6000602082019050818103600083015261179c8184611749565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117d4826117a9565b9050919050565b6117e4816117c9565b81146117ef57600080fd5b50565b600081359050611801816117db565b92915050565b6000819050919050565b61181a81611807565b811461182557600080fd5b50565b60008135905061183781611811565b92915050565b60008060408385031215611854576118536117a4565b5b6000611862858286016117f2565b925050602061187385828601611828565b9150509250929050565b60008115159050919050565b6118928161187d565b82525050565b60006020820190506118ad6000830184611889565b92915050565b6118bc816117c9565b82525050565b60006020820190506118d760008301846118b3565b92915050565b6118e681611807565b82525050565b600060208201905061190160008301846118dd565b92915050565b6000806000606084860312156119205761191f6117a4565b5b600061192e868287016117f2565b935050602061193f868287016117f2565b925050604061195086828701611828565b9150509250925092565b600060ff82169050919050565b6119708161195a565b82525050565b600060208201905061198b6000830184611967565b92915050565b6000602082840312156119a7576119a66117a4565b5b60006119b584828501611828565b91505092915050565b6000602082840312156119d4576119d36117a4565b5b60006119e2848285016117f2565b91505092915050565b60008060408385031215611a0257611a016117a4565b5b6000611a10858286016117f2565b9250506020611a21858286016117f2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a7257607f821691505b60208210811415611a8657611a85611a2b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611ae86028836116f4565b9150611af382611a8c565b604082019050919050565b60006020820190508181036000830152611b1781611adb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b5882611807565b9150611b6383611807565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b9857611b97611b1e565b5b828201905092915050565b7f636f6e74726f6c6c6572636865663a2063616c6c6572206973206e6f7420746860008201527f6520636f6e74726f6c6c65726368656600000000000000000000000000000000602082015250565b6000611bff6030836116f4565b9150611c0a82611ba3565b604082019050919050565b60006020820190508181036000830152611c2e81611bf2565b9050919050565b7f64697361737465723a2063616c6c6572206973206e6f7420746865206469736160008201527f7374657200000000000000000000000000000000000000000000000000000000602082015250565b6000611c916024836116f4565b9150611c9c82611c35565b604082019050919050565b60006020820190508181036000830152611cc081611c84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611d236025836116f4565b9150611d2e82611cc7565b604082019050919050565b60006020820190508181036000830152611d5281611d16565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d8f6020836116f4565b9150611d9a82611d59565b602082019050919050565b60006020820190508181036000830152611dbe81611d82565b9050919050565b7f73657420616c7265616479000000000000000000000000000000000000000000600082015250565b6000611dfb600b836116f4565b9150611e0682611dc5565b602082019050919050565b60006020820190508181036000830152611e2a81611dee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e8d6026836116f4565b9150611e9882611e31565b604082019050919050565b60006020820190508181036000830152611ebc81611e80565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611f1f6024836116f4565b9150611f2a82611ec3565b604082019050919050565b60006020820190508181036000830152611f4e81611f12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611fb16022836116f4565b9150611fbc82611f55565b604082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006120436025836116f4565b915061204e82611fe7565b604082019050919050565b6000602082019050818103600083015261207281612036565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120d56023836116f4565b91506120e082612079565b604082019050919050565b60006020820190508181036000830152612104816120c8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121676026836116f4565b91506121728261210b565b604082019050919050565b600060208201905081810360008301526121968161215a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006121d3601f836116f4565b91506121de8261219d565b602082019050919050565b60006020820190508181036000830152612202816121c6565b9050919050565b7f45524332303a20616d6f756e74206d757374206265206772656174657220746860008201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b60006122656024836116f4565b915061227082612209565b604082019050919050565b6000602082019050818103600083015261229481612258565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006122f76021836116f4565b91506123028261229b565b604082019050919050565b60006020820190508181036000830152612326816122ea565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006123896022836116f4565b91506123948261232d565b604082019050919050565b600060208201905081810360008301526123b88161237c565b9050919050565b60006123ca82611807565b91506123d583611807565b9250828210156123e8576123e7611b1e565b5b82820390509291505056fea2646970667358221220900a8b31442149708e93ab20833955785723afd1d48140ede87bbc17082c730064736f6c63430008090033
Deployed Bytecode Sourcemap
29862:1292:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19917:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22289:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29913:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21037:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22940:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20879:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23841:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30623:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30737:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21413:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21157:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1700:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20136:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24559:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21753:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29943:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21264:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30843:308;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21991:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2155:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19917:100;19971:13;20004:5;19997:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19917:100;:::o;22289:169::-;22372:4;22389:39;22398:12;:10;:12::i;:::-;22412:7;22421:6;22389:8;:39::i;:::-;22446:4;22439:11;;22289:169;;;;:::o;29913:23::-;;;;;;;;;;;;;:::o;21037:108::-;21098:7;21125:12;;21118:19;;21037:108;:::o;22940:492::-;23080:4;23097:36;23107:6;23115:9;23126:6;23097:9;:36::i;:::-;23146:24;23173:11;:19;23185:6;23173:19;;;;;;;;;;;;;;;:33;23193:12;:10;:12::i;:::-;23173:33;;;;;;;;;;;;;;;;23146:60;;23245:6;23225:16;:26;;23217:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;23332:57;23341:6;23349:12;:10;:12::i;:::-;23382:6;23363:16;:25;23332:8;:57::i;:::-;23420:4;23413:11;;;22940:492;;;;;:::o;20879:93::-;20937:5;20962:2;20955:9;;20879:93;:::o;23841:215::-;23929:4;23946:80;23955:12;:10;:12::i;:::-;23969:7;24015:10;23978:11;:25;23990:12;:10;:12::i;:::-;23978:25;;;;;;;;;;;;;;;:34;24004:7;23978:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;23946:8;:80::i;:::-;24044:4;24037:11;;23841:215;;;;:::o;30623:106::-;30528:14;;;;;;;;;;;30512:30;;:12;:10;:12::i;:::-;:30;;;30504:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30704:17:::1;30710:2;30714:6;30704:5;:17::i;:::-;30623:106:::0;;:::o;30737:98::-;30386:8;;;;;;;;;;;30370:24;;:12;:10;:12::i;:::-;:24;;;30362:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30800:27:::1;30806:12;:10;:12::i;:::-;30820:6;30800:5;:27::i;:::-;30737:98:::0;:::o;21413:127::-;21487:7;21514:9;:18;21524:7;21514:18;;;;;;;;;;;;;;;;21507:25;;21413:127;;;:::o;21157:95::-;21205:7;21232:12;;21225:19;;21157:95;:::o;1700:87::-;1746:7;1773:6;;;;;;;;;;;1766:13;;1700:87;:::o;20136:104::-;20192:13;20225:7;20218:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20136:104;:::o;24559:413::-;24652:4;24669:24;24696:11;:25;24708:12;:10;:12::i;:::-;24696:25;;;;;;;;;;;;;;;:34;24722:7;24696:34;;;;;;;;;;;;;;;;24669:61;;24769:15;24749:16;:35;;24741:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:67;24871:12;:10;:12::i;:::-;24885:7;24913:15;24894:16;:34;24862:8;:67::i;:::-;24960:4;24953:11;;;24559:413;;;;:::o;21753:175::-;21839:4;21856:42;21866:12;:10;:12::i;:::-;21880:9;21891:6;21856:9;:42::i;:::-;21916:4;21909:11;;21753:175;;;;:::o;29943:29::-;;;;;;;;;;;;;:::o;21264:86::-;21306:7;21333:9;;21326:16;;21264:86;:::o;30843:308::-;1931:12;:10;:12::i;:::-;1920:23;;:7;:5;:7::i;:::-;:23;;;1912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30965:1:::1;30945:22;;:8;;;;;;;;;;;:22;;;:54;;;;;30997:1;30971:28;;:14;;;;;;;;;;;:28;;;30945:54;30937:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;31037:9;31026:8;;:20;;;;;;;;;;;;;;;;;;31074:15;31057:14;;:32;;;;;;;;;;;;;;;;;;31128:14;;;;;;;;;;;31105:38;;31118:8;;;;;;;;;;;31105:38;;;;;;;;;;;;30843:308:::0;;:::o;21991:151::-;22080:7;22107:11;:18;22119:5;22107:18;;;;;;;;;;;;;;;:27;22126:7;22107:27;;;;;;;;;;;;;;;;22100:34;;21991:151;;;;:::o;2155:201::-;1931:12;:10;:12::i;:::-;1920:23;;:7;:5;:7::i;:::-;:23;;;1912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2264:1:::1;2244:22;;:8;:22;;;;2236:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2320:28;2339:8;2320:18;:28::i;:::-;2155:201:::0;:::o;567:98::-;620:7;647:10;640:17;;567:98;:::o;28022:380::-;28175:1;28158:19;;:5;:19;;;;28150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28256:1;28237:21;;:7;:21;;;;28229:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28340:6;28310:11;:18;28322:5;28310:18;;;;;;;;;;;;;;;:27;28329:7;28310:27;;;;;;;;;;;;;;;:36;;;;28378:7;28362:32;;28371:5;28362:32;;;28387:6;28362:32;;;;;;:::i;:::-;;;;;;;;28022:380;;;:::o;25462:733::-;25620:1;25602:20;;:6;:20;;;;25594:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25704:1;25683:23;;:9;:23;;;;25675:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25759:47;25780:6;25788:9;25799:6;25759:20;:47::i;:::-;25819:21;25843:9;:17;25853:6;25843:17;;;;;;;;;;;;;;;;25819:41;;25896:6;25879:13;:23;;25871:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26017:6;26001:13;:22;25981:9;:17;25991:6;25981:17;;;;;;;;;;;;;;;:42;;;;26069:6;26045:9;:20;26055:9;26045:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;26110:9;26093:35;;26102:6;26093:35;;;26121:6;26093:35;;;;;;:::i;:::-;;;;;;;;26141:46;26161:6;26169:9;26180:6;26141:19;:46::i;:::-;25583:612;25462:733;;;:::o;26482:470::-;26585:1;26566:21;;:7;:21;;;;26558:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;26652:1;26642:6;:11;;26634:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;26707:49;26736:1;26740:7;26749:6;26707:20;:49::i;:::-;26785:6;26769:12;;:22;;;;;;;:::i;:::-;;;;;;;;26824:6;26802:9;:18;26812:7;26802:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;26867:7;26846:37;;26863:1;26846:37;;;26876:6;26846:37;;;;;;:::i;:::-;;;;;;;;26896:48;26924:1;26928:7;26937:6;26896:19;:48::i;:::-;26482:470;;:::o;26960:624::-;27063:1;27044:21;;:7;:21;;;;27036:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27116:49;27137:7;27154:1;27158:6;27116:20;:49::i;:::-;27178:22;27203:9;:18;27213:7;27203:18;;;;;;;;;;;;;;;;27178:43;;27258:6;27240:14;:24;;27232:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27377:6;27360:14;:23;27339:9;:18;27349:7;27339:18;;;;;;;;;;;;;;;:44;;;;27421:6;27405:12;;:22;;;;;;;:::i;:::-;;;;;;;;27454:6;27438:12;;:22;;;;;;;:::i;:::-;;;;;;;;27504:1;27478:37;;27487:7;27478:37;;;27508:6;27478:37;;;;;;:::i;:::-;;;;;;;;27528:48;27548:7;27565:1;27569:6;27528:19;:48::i;:::-;27025:559;26960:624;;:::o;2516:191::-;2590:16;2609:6;;;;;;;;;;;2590:25;;2635:8;2626:6;;:17;;;;;;;;;;;;;;;;;;2690:8;2659:40;;2680:8;2659:40;;;;;;;;;;;;2579:128;2516:191;:::o;29002:125::-;;;;:::o;29731:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:118::-;3933:24;3951:5;3933:24;:::i;:::-;3928:3;3921:37;3846:118;;:::o;3970:222::-;4063:4;4101:2;4090:9;4086:18;4078:26;;4114:71;4182:1;4171:9;4167:17;4158:6;4114:71;:::i;:::-;3970:222;;;;:::o;4198:619::-;4275:6;4283;4291;4340:2;4328:9;4319:7;4315:23;4311:32;4308:119;;;4346:79;;:::i;:::-;4308:119;4466:1;4491:53;4536:7;4527:6;4516:9;4512:22;4491:53;:::i;:::-;4481:63;;4437:117;4593:2;4619:53;4664:7;4655:6;4644:9;4640:22;4619:53;:::i;:::-;4609:63;;4564:118;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4198:619;;;;;:::o;4823:86::-;4858:7;4898:4;4891:5;4887:16;4876:27;;4823:86;;;:::o;4915:112::-;4998:22;5014:5;4998:22;:::i;:::-;4993:3;4986:35;4915:112;;:::o;5033:214::-;5122:4;5160:2;5149:9;5145:18;5137:26;;5173:67;5237:1;5226:9;5222:17;5213:6;5173:67;:::i;:::-;5033:214;;;;:::o;5253:329::-;5312:6;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5253:329;;;;:::o;5588:::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:180::-;6451:77;6448:1;6441:88;6548:4;6545:1;6538:15;6572:4;6569:1;6562:15;6589:320;6633:6;6670:1;6664:4;6660:12;6650:22;;6717:1;6711:4;6707:12;6738:18;6728:81;;6794:4;6786:6;6782:17;6772:27;;6728:81;6856:2;6848:6;6845:14;6825:18;6822:38;6819:84;;;6875:18;;:::i;:::-;6819:84;6640:269;6589:320;;;:::o;6915:227::-;7055:34;7051:1;7043:6;7039:14;7032:58;7124:10;7119:2;7111:6;7107:15;7100:35;6915:227;:::o;7148:366::-;7290:3;7311:67;7375:2;7370:3;7311:67;:::i;:::-;7304:74;;7387:93;7476:3;7387:93;:::i;:::-;7505:2;7500:3;7496:12;7489:19;;7148:366;;;:::o;7520:419::-;7686:4;7724:2;7713:9;7709:18;7701:26;;7773:9;7767:4;7763:20;7759:1;7748:9;7744:17;7737:47;7801:131;7927:4;7801:131;:::i;:::-;7793:139;;7520:419;;;:::o;7945:180::-;7993:77;7990:1;7983:88;8090:4;8087:1;8080:15;8114:4;8111:1;8104:15;8131:305;8171:3;8190:20;8208:1;8190:20;:::i;:::-;8185:25;;8224:20;8242:1;8224:20;:::i;:::-;8219:25;;8378:1;8310:66;8306:74;8303:1;8300:81;8297:107;;;8384:18;;:::i;:::-;8297:107;8428:1;8425;8421:9;8414:16;;8131:305;;;;:::o;8442:235::-;8582:34;8578:1;8570:6;8566:14;8559:58;8651:18;8646:2;8638:6;8634:15;8627:43;8442:235;:::o;8683:366::-;8825:3;8846:67;8910:2;8905:3;8846:67;:::i;:::-;8839:74;;8922:93;9011:3;8922:93;:::i;:::-;9040:2;9035:3;9031:12;9024:19;;8683:366;;;:::o;9055:419::-;9221:4;9259:2;9248:9;9244:18;9236:26;;9308:9;9302:4;9298:20;9294:1;9283:9;9279:17;9272:47;9336:131;9462:4;9336:131;:::i;:::-;9328:139;;9055:419;;;:::o;9480:223::-;9620:34;9616:1;9608:6;9604:14;9597:58;9689:6;9684:2;9676:6;9672:15;9665:31;9480:223;:::o;9709:366::-;9851:3;9872:67;9936:2;9931:3;9872:67;:::i;:::-;9865:74;;9948:93;10037:3;9948:93;:::i;:::-;10066:2;10061:3;10057:12;10050:19;;9709:366;;;:::o;10081:419::-;10247:4;10285:2;10274:9;10270:18;10262:26;;10334:9;10328:4;10324:20;10320:1;10309:9;10305:17;10298:47;10362:131;10488:4;10362:131;:::i;:::-;10354:139;;10081:419;;;:::o;10506:224::-;10646:34;10642:1;10634:6;10630:14;10623:58;10715:7;10710:2;10702:6;10698:15;10691:32;10506:224;:::o;10736:366::-;10878:3;10899:67;10963:2;10958:3;10899:67;:::i;:::-;10892:74;;10975:93;11064:3;10975:93;:::i;:::-;11093:2;11088:3;11084:12;11077:19;;10736:366;;;:::o;11108:419::-;11274:4;11312:2;11301:9;11297:18;11289:26;;11361:9;11355:4;11351:20;11347:1;11336:9;11332:17;11325:47;11389:131;11515:4;11389:131;:::i;:::-;11381:139;;11108:419;;;:::o;11533:182::-;11673:34;11669:1;11661:6;11657:14;11650:58;11533:182;:::o;11721:366::-;11863:3;11884:67;11948:2;11943:3;11884:67;:::i;:::-;11877:74;;11960:93;12049:3;11960:93;:::i;:::-;12078:2;12073:3;12069:12;12062:19;;11721:366;;;:::o;12093:419::-;12259:4;12297:2;12286:9;12282:18;12274:26;;12346:9;12340:4;12336:20;12332:1;12321:9;12317:17;12310:47;12374:131;12500:4;12374:131;:::i;:::-;12366:139;;12093:419;;;:::o;12518:161::-;12658:13;12654:1;12646:6;12642:14;12635:37;12518:161;:::o;12685:366::-;12827:3;12848:67;12912:2;12907:3;12848:67;:::i;:::-;12841:74;;12924:93;13013:3;12924:93;:::i;:::-;13042:2;13037:3;13033:12;13026:19;;12685:366;;;:::o;13057:419::-;13223:4;13261:2;13250:9;13246:18;13238:26;;13310:9;13304:4;13300:20;13296:1;13285:9;13281:17;13274:47;13338:131;13464:4;13338:131;:::i;:::-;13330:139;;13057:419;;;:::o;13482:225::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:8;13686:2;13678:6;13674:15;13667:33;13482:225;:::o;13713:366::-;13855:3;13876:67;13940:2;13935:3;13876:67;:::i;:::-;13869:74;;13952:93;14041:3;13952:93;:::i;:::-;14070:2;14065:3;14061:12;14054:19;;13713:366;;;:::o;14085:419::-;14251:4;14289:2;14278:9;14274:18;14266:26;;14338:9;14332:4;14328:20;14324:1;14313:9;14309:17;14302:47;14366:131;14492:4;14366:131;:::i;:::-;14358:139;;14085:419;;;:::o;14510:223::-;14650:34;14646:1;14638:6;14634:14;14627:58;14719:6;14714:2;14706:6;14702:15;14695:31;14510:223;:::o;14739:366::-;14881:3;14902:67;14966:2;14961:3;14902:67;:::i;:::-;14895:74;;14978:93;15067:3;14978:93;:::i;:::-;15096:2;15091:3;15087:12;15080:19;;14739:366;;;:::o;15111:419::-;15277:4;15315:2;15304:9;15300:18;15292:26;;15364:9;15358:4;15354:20;15350:1;15339:9;15335:17;15328:47;15392:131;15518:4;15392:131;:::i;:::-;15384:139;;15111:419;;;:::o;15536:221::-;15676:34;15672:1;15664:6;15660:14;15653:58;15745:4;15740:2;15732:6;15728:15;15721:29;15536:221;:::o;15763:366::-;15905:3;15926:67;15990:2;15985:3;15926:67;:::i;:::-;15919:74;;16002:93;16091:3;16002:93;:::i;:::-;16120:2;16115:3;16111:12;16104:19;;15763:366;;;:::o;16135:419::-;16301:4;16339:2;16328:9;16324:18;16316:26;;16388:9;16382:4;16378:20;16374:1;16363:9;16359:17;16352:47;16416:131;16542:4;16416:131;:::i;:::-;16408:139;;16135:419;;;:::o;16560:224::-;16700:34;16696:1;16688:6;16684:14;16677:58;16769:7;16764:2;16756:6;16752:15;16745:32;16560:224;:::o;16790:366::-;16932:3;16953:67;17017:2;17012:3;16953:67;:::i;:::-;16946:74;;17029:93;17118:3;17029:93;:::i;:::-;17147:2;17142:3;17138:12;17131:19;;16790:366;;;:::o;17162:419::-;17328:4;17366:2;17355:9;17351:18;17343:26;;17415:9;17409:4;17405:20;17401:1;17390:9;17386:17;17379:47;17443:131;17569:4;17443:131;:::i;:::-;17435:139;;17162:419;;;:::o;17587:222::-;17727:34;17723:1;17715:6;17711:14;17704:58;17796:5;17791:2;17783:6;17779:15;17772:30;17587:222;:::o;17815:366::-;17957:3;17978:67;18042:2;18037:3;17978:67;:::i;:::-;17971:74;;18054:93;18143:3;18054:93;:::i;:::-;18172:2;18167:3;18163:12;18156:19;;17815:366;;;:::o;18187:419::-;18353:4;18391:2;18380:9;18376:18;18368:26;;18440:9;18434:4;18430:20;18426:1;18415:9;18411:17;18404:47;18468:131;18594:4;18468:131;:::i;:::-;18460:139;;18187:419;;;:::o;18612:225::-;18752:34;18748:1;18740:6;18736:14;18729:58;18821:8;18816:2;18808:6;18804:15;18797:33;18612:225;:::o;18843:366::-;18985:3;19006:67;19070:2;19065:3;19006:67;:::i;:::-;18999:74;;19082:93;19171:3;19082:93;:::i;:::-;19200:2;19195:3;19191:12;19184:19;;18843:366;;;:::o;19215:419::-;19381:4;19419:2;19408:9;19404:18;19396:26;;19468:9;19462:4;19458:20;19454:1;19443:9;19439:17;19432:47;19496:131;19622:4;19496:131;:::i;:::-;19488:139;;19215:419;;;:::o;19640:181::-;19780:33;19776:1;19768:6;19764:14;19757:57;19640:181;:::o;19827:366::-;19969:3;19990:67;20054:2;20049:3;19990:67;:::i;:::-;19983:74;;20066:93;20155:3;20066:93;:::i;:::-;20184:2;20179:3;20175:12;20168:19;;19827:366;;;:::o;20199:419::-;20365:4;20403:2;20392:9;20388:18;20380:26;;20452:9;20446:4;20442:20;20438:1;20427:9;20423:17;20416:47;20480:131;20606:4;20480:131;:::i;:::-;20472:139;;20199:419;;;:::o;20624:223::-;20764:34;20760:1;20752:6;20748:14;20741:58;20833:6;20828:2;20820:6;20816:15;20809:31;20624:223;:::o;20853:366::-;20995:3;21016:67;21080:2;21075:3;21016:67;:::i;:::-;21009:74;;21092:93;21181:3;21092:93;:::i;:::-;21210:2;21205:3;21201:12;21194:19;;20853:366;;;:::o;21225:419::-;21391:4;21429:2;21418:9;21414:18;21406:26;;21478:9;21472:4;21468:20;21464:1;21453:9;21449:17;21442:47;21506:131;21632:4;21506:131;:::i;:::-;21498:139;;21225:419;;;:::o;21650:220::-;21790:34;21786:1;21778:6;21774:14;21767:58;21859:3;21854:2;21846:6;21842:15;21835:28;21650:220;:::o;21876:366::-;22018:3;22039:67;22103:2;22098:3;22039:67;:::i;:::-;22032:74;;22115:93;22204:3;22115:93;:::i;:::-;22233:2;22228:3;22224:12;22217:19;;21876:366;;;:::o;22248:419::-;22414:4;22452:2;22441:9;22437:18;22429:26;;22501:9;22495:4;22491:20;22487:1;22476:9;22472:17;22465:47;22529:131;22655:4;22529:131;:::i;:::-;22521:139;;22248:419;;;:::o;22673:221::-;22813:34;22809:1;22801:6;22797:14;22790:58;22882:4;22877:2;22869:6;22865:15;22858:29;22673:221;:::o;22900:366::-;23042:3;23063:67;23127:2;23122:3;23063:67;:::i;:::-;23056:74;;23139:93;23228:3;23139:93;:::i;:::-;23257:2;23252:3;23248:12;23241:19;;22900:366;;;:::o;23272:419::-;23438:4;23476:2;23465:9;23461:18;23453:26;;23525:9;23519:4;23515:20;23511:1;23500:9;23496:17;23489:47;23553:131;23679:4;23553:131;:::i;:::-;23545:139;;23272:419;;;:::o;23697:191::-;23737:4;23757:20;23775:1;23757:20;:::i;:::-;23752:25;;23791:20;23809:1;23791:20;:::i;:::-;23786:25;;23830:1;23827;23824:8;23821:34;;;23835:18;;:::i;:::-;23821:34;23880:1;23877;23873:9;23865:17;;23697:191;;;;:::o
Swarm Source
ipfs://900a8b31442149708e93ab20833955785723afd1d48140ede87bbc17082c7300
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.