Token Gold
Overview ERC20
Total Supply:
40,000,000 GLD
Holders:
6,826 addresses
Profile Summary
Contract:
Decimals:
18
Balance
8.479839012709735835 GLD
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GoldToken
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-25 */ // Sources flattened with hardhat v2.6.8 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File @openzeppelin/contracts/token/ERC20/[email protected] /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts/math/[email protected] /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File @openzeppelin/contracts/token/ERC20/[email protected] /** * @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 guidelines: functions revert instead * of 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, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) public { _name = name_; _symbol = symbol_; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); 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].add(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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @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 to 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 { } } // File contracts/twc.sol // contracts/GLDToken.sol pragma solidity ^0.8.0; contract GoldToken is ERC20 { constructor() ERC20("Gold", "GLD") { _mint(msg.sender,40000000000000000000000000); } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"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":[{"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474c44000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000308565b508060049080519060200190620000af92919062000308565b506012600560006101000a81548160ff021916908360ff1602179055505050620000eb336a2116545850052128000000620000f160201b60201c565b620005d6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015b9062000439565b60405180910390fd5b6200017860008383620002a060201b60201c565b6200019481600254620002a560201b6200071f1790919060201c565b600281905550620001f2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002a560201b6200071f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029491906200045b565b60405180910390a35050565b505050565b6000808284620002b6919062000489565b905083811015620002fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f59062000417565b60405180910390fd5b8091505092915050565b8280546200031690620004f0565b90600052602060002090601f0160209004810192826200033a576000855562000386565b82601f106200035557805160ff191683800117855562000386565b8280016001018555821562000386579182015b828111156200038557825182559160200191906001019062000368565b5b50905062000395919062000399565b5090565b5b80821115620003b45760008160009055506001016200039a565b5090565b6000620003c7601b8362000478565b9150620003d48262000584565b602082019050919050565b6000620003ee601f8362000478565b9150620003fb82620005ad565b602082019050919050565b6200041181620004e6565b82525050565b600060208201905081810360008301526200043281620003b8565b9050919050565b600060208201905081810360008301526200045481620003df565b9050919050565b600060208201905062000472600083018462000406565b92915050565b600082825260208201905092915050565b60006200049682620004e6565b9150620004a383620004e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004db57620004da62000526565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200050957607f821691505b6020821081141562000520576200051f62000555565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113aa80620005e66000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610ea2565b60405180910390f35b6100e660048036038101906100e19190610d32565b610308565b6040516100f39190610e87565b60405180910390f35b610104610326565b6040516101119190610f64565b60405180910390f35b610134600480360381019061012f9190610cdf565b610330565b6040516101419190610e87565b60405180910390f35b610152610409565b60405161015f9190610f7f565b60405180910390f35b610182600480360381019061017d9190610d32565b610420565b60405161018f9190610e87565b60405180910390f35b6101b260048036038101906101ad9190610c72565b6104d3565b6040516101bf9190610f64565b60405180910390f35b6101d061051b565b6040516101dd9190610ea2565b60405180910390f35b61020060048036038101906101fb9190610d32565b6105ad565b60405161020d9190610e87565b60405180910390f35b610230600480360381019061022b9190610d32565b61067a565b60405161023d9190610e87565b60405180910390f35b610260600480360381019061025b9190610c9f565b610698565b60405161026d9190610f64565b60405180910390f35b606060038054610285906110c8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b1906110c8565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c61031561077d565b8484610785565b6001905092915050565b6000600254905090565b600061033d848484610950565b6103fe8461034961077d565b6103f98560405180606001604052806028815260200161132860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103af61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006104c961042d61077d565b846104c4856001600061043e61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b610785565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461052a906110c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610556906110c8565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b60006106706105ba61077d565b8461066b8560405180606001604052806025815260200161135060259139600160006105e461077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b6001905092915050565b600061068e61068761077d565b8484610950565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828461072e9190610fb6565b905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a90610f04565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90610f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90610ee4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109439190610f64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790610f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790610ec4565b60405180910390fd5b610a3b838383610c43565b610aa681604051806060016040528060268152602001611302602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b39816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd89190610f64565b60405180910390a3505050565b6000838311158290610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c249190610ea2565b60405180910390fd5b508284610c3a919061100c565b90509392505050565b505050565b600081359050610c57816112d3565b92915050565b600081359050610c6c816112ea565b92915050565b600060208284031215610c8857610c87611158565b5b6000610c9684828501610c48565b91505092915050565b60008060408385031215610cb657610cb5611158565b5b6000610cc485828601610c48565b9250506020610cd585828601610c48565b9150509250929050565b600080600060608486031215610cf857610cf7611158565b5b6000610d0686828701610c48565b9350506020610d1786828701610c48565b9250506040610d2886828701610c5d565b9150509250925092565b60008060408385031215610d4957610d48611158565b5b6000610d5785828601610c48565b9250506020610d6885828601610c5d565b9150509250929050565b610d7b81611052565b82525050565b6000610d8c82610f9a565b610d968185610fa5565b9350610da6818560208601611095565b610daf8161115d565b840191505092915050565b6000610dc7602383610fa5565b9150610dd28261116e565b604082019050919050565b6000610dea602283610fa5565b9150610df5826111bd565b604082019050919050565b6000610e0d601b83610fa5565b9150610e188261120c565b602082019050919050565b6000610e30602583610fa5565b9150610e3b82611235565b604082019050919050565b6000610e53602483610fa5565b9150610e5e82611284565b604082019050919050565b610e728161107e565b82525050565b610e8181611088565b82525050565b6000602082019050610e9c6000830184610d72565b92915050565b60006020820190508181036000830152610ebc8184610d81565b905092915050565b60006020820190508181036000830152610edd81610dba565b9050919050565b60006020820190508181036000830152610efd81610ddd565b9050919050565b60006020820190508181036000830152610f1d81610e00565b9050919050565b60006020820190508181036000830152610f3d81610e23565b9050919050565b60006020820190508181036000830152610f5d81610e46565b9050919050565b6000602082019050610f796000830184610e69565b92915050565b6000602082019050610f946000830184610e78565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fc18261107e565b9150610fcc8361107e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611001576110006110fa565b5b828201905092915050565b60006110178261107e565b91506110228361107e565b925082821015611035576110346110fa565b5b828203905092915050565b600061104b8261105e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156110b3578082015181840152602081019050611098565b838111156110c2576000848401525b50505050565b600060028204905060018216806110e057607f821691505b602082108114156110f4576110f3611129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6112dc81611040565b81146112e757600080fd5b50565b6112f38161107e565b81146112fe57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f73270d70ea1065aa75f3b5762fc42b94c525ebd9c6a2c2d28dc61c23f93cd5c64736f6c63430008070033
Deployed ByteCode Sourcemap
22410:136:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15596:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14549:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16247:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14393:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16977:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14720:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13660:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17698:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15060:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13450:91;13495:13;13528:5;13521:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:91;:::o;15596:169::-;15679:4;15696:39;15705:12;:10;:12::i;:::-;15719:7;15728:6;15696:8;:39::i;:::-;15753:4;15746:11;;15596:169;;;;:::o;14549:108::-;14610:7;14637:12;;14630:19;;14549:108;:::o;16247:321::-;16353:4;16370:36;16380:6;16388:9;16399:6;16370:9;:36::i;:::-;16417:121;16426:6;16434:12;:10;:12::i;:::-;16448:89;16486:6;16448:89;;;;;;;;;;;;;;;;;:11;:19;16460:6;16448:19;;;;;;;;;;;;;;;:33;16468:12;:10;:12::i;:::-;16448:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16417:8;:121::i;:::-;16556:4;16549:11;;16247:321;;;;;:::o;14393:91::-;14442:5;14467:9;;;;;;;;;;;14460:16;;14393:91;:::o;16977:218::-;17065:4;17082:83;17091:12;:10;:12::i;:::-;17105:7;17114:50;17153:10;17114:11;:25;17126:12;:10;:12::i;:::-;17114:25;;;;;;;;;;;;;;;:34;17140:7;17114:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17082:8;:83::i;:::-;17183:4;17176:11;;16977:218;;;;:::o;14720:127::-;14794:7;14821:9;:18;14831:7;14821:18;;;;;;;;;;;;;;;;14814:25;;14720:127;;;:::o;13660:95::-;13707:13;13740:7;13733:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13660:95;:::o;17698:269::-;17791:4;17808:129;17817:12;:10;:12::i;:::-;17831:7;17840:96;17879:15;17840:96;;;;;;;;;;;;;;;;;:11;:25;17852:12;:10;:12::i;:::-;17840:25;;;;;;;;;;;;;;;:34;17866:7;17840:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17808:8;:129::i;:::-;17955:4;17948:11;;17698:269;;;;:::o;15060:175::-;15146:4;15163:42;15173:12;:10;:12::i;:::-;15187:9;15198:6;15163:9;:42::i;:::-;15223:4;15216:11;;15060:175;;;;:::o;15298:151::-;15387:7;15414:11;:18;15426:5;15414:18;;;;;;;;;;;;;;;:27;15433:7;15414:27;;;;;;;;;;;;;;;;15407:34;;15298:151;;;;:::o;6646:179::-;6704:7;6724:9;6740:1;6736;:5;;;;:::i;:::-;6724:17;;6765:1;6760;:6;;6752:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6816:1;6809:8;;;6646:179;;;;:::o;727:115::-;780:15;823:10;808:26;;727:115;:::o;20845:346::-;20964:1;20947:19;;:5;:19;;;;20939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21045:1;21026:21;;:7;:21;;;;21018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21129:6;21099:11;:18;21111:5;21099:18;;;;;;;;;;;;;;;:27;21118:7;21099:27;;;;;;;;;;;;;;;:36;;;;21167:7;21151:32;;21160:5;21151:32;;;21176:6;21151:32;;;;;;:::i;:::-;;;;;;;;20845:346;;;:::o;18457:539::-;18581:1;18563:20;;:6;:20;;;;18555:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18665:1;18644:23;;:9;:23;;;;18636:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18720:47;18741:6;18749:9;18760:6;18720:20;:47::i;:::-;18800:71;18822:6;18800:71;;;;;;;;;;;;;;;;;:9;:17;18810:6;18800:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;18780:9;:17;18790:6;18780:17;;;;;;;;;;;;;;;:91;;;;18905:32;18930:6;18905:9;:20;18915:9;18905:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18882:9;:20;18892:9;18882:20;;;;;;;;;;;;;;;:55;;;;18970:9;18953:35;;18962:6;18953:35;;;18981:6;18953:35;;;;;;:::i;:::-;;;;;;;;18457:539;;;:::o;9473:166::-;9559:7;9592:1;9587;:6;;9595:12;9579:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9630:1;9626;:5;;;;:::i;:::-;9619:12;;9473:166;;;;;:::o;22224:92::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2217:109;;:::o;2332:364::-;2420:3;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;2332:364;;;;:::o;2702:366::-;2844:3;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2941:93;3030:3;2941:93;:::i;:::-;3059:2;3054:3;3050:12;3043:19;;2702:366;;;:::o;3074:::-;3216:3;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3313:93;3402:3;3313:93;:::i;:::-;3431:2;3426:3;3422:12;3415:19;;3074:366;;;:::o;3446:::-;3588:3;3609:67;3673:2;3668:3;3609:67;:::i;:::-;3602:74;;3685:93;3774:3;3685:93;:::i;:::-;3803:2;3798:3;3794:12;3787:19;;3446:366;;;:::o;3818:::-;3960:3;3981:67;4045:2;4040:3;3981:67;:::i;:::-;3974:74;;4057:93;4146:3;4057:93;:::i;:::-;4175:2;4170:3;4166:12;4159:19;;3818:366;;;:::o;4190:::-;4332:3;4353:67;4417:2;4412:3;4353:67;:::i;:::-;4346:74;;4429:93;4518:3;4429:93;:::i;:::-;4547:2;4542:3;4538:12;4531:19;;4190:366;;;:::o;4562:118::-;4649:24;4667:5;4649:24;:::i;:::-;4644:3;4637:37;4562:118;;:::o;4686:112::-;4769:22;4785:5;4769:22;:::i;:::-;4764:3;4757:35;4686:112;;:::o;4804:210::-;4891:4;4929:2;4918:9;4914:18;4906:26;;4942:65;5004:1;4993:9;4989:17;4980:6;4942:65;:::i;:::-;4804:210;;;;:::o;5020:313::-;5133:4;5171:2;5160:9;5156:18;5148:26;;5220:9;5214:4;5210:20;5206:1;5195:9;5191:17;5184:47;5248:78;5321:4;5312:6;5248:78;:::i;:::-;5240:86;;5020:313;;;;:::o;5339:419::-;5505:4;5543:2;5532:9;5528:18;5520:26;;5592:9;5586:4;5582:20;5578:1;5567:9;5563:17;5556:47;5620:131;5746:4;5620:131;:::i;:::-;5612:139;;5339:419;;;:::o;5764:::-;5930:4;5968:2;5957:9;5953:18;5945:26;;6017:9;6011:4;6007:20;6003:1;5992:9;5988:17;5981:47;6045:131;6171:4;6045:131;:::i;:::-;6037:139;;5764:419;;;:::o;6189:::-;6355:4;6393:2;6382:9;6378:18;6370:26;;6442:9;6436:4;6432:20;6428:1;6417:9;6413:17;6406:47;6470:131;6596:4;6470:131;:::i;:::-;6462:139;;6189:419;;;:::o;6614:::-;6780:4;6818:2;6807:9;6803:18;6795:26;;6867:9;6861:4;6857:20;6853:1;6842:9;6838:17;6831:47;6895:131;7021:4;6895:131;:::i;:::-;6887:139;;6614:419;;;:::o;7039:::-;7205:4;7243:2;7232:9;7228:18;7220:26;;7292:9;7286:4;7282:20;7278:1;7267:9;7263:17;7256:47;7320:131;7446:4;7320:131;:::i;:::-;7312:139;;7039:419;;;:::o;7464:222::-;7557:4;7595:2;7584:9;7580:18;7572:26;;7608:71;7676:1;7665:9;7661:17;7652:6;7608:71;:::i;:::-;7464:222;;;;:::o;7692:214::-;7781:4;7819:2;7808:9;7804:18;7796:26;;7832:67;7896:1;7885:9;7881:17;7872:6;7832:67;:::i;:::-;7692:214;;;;:::o;7993:99::-;8045:6;8079:5;8073:12;8063:22;;7993:99;;;:::o;8098:169::-;8182:11;8216:6;8211:3;8204:19;8256:4;8251:3;8247:14;8232:29;;8098:169;;;;:::o;8273:305::-;8313:3;8332:20;8350:1;8332:20;:::i;:::-;8327:25;;8366:20;8384:1;8366:20;:::i;:::-;8361:25;;8520:1;8452:66;8448:74;8445:1;8442:81;8439:107;;;8526:18;;:::i;:::-;8439:107;8570:1;8567;8563:9;8556:16;;8273:305;;;;:::o;8584:191::-;8624:4;8644:20;8662:1;8644:20;:::i;:::-;8639:25;;8678:20;8696:1;8678:20;:::i;:::-;8673:25;;8717:1;8714;8711:8;8708:34;;;8722:18;;:::i;:::-;8708:34;8767:1;8764;8760:9;8752:17;;8584:191;;;;:::o;8781:96::-;8818:7;8847:24;8865:5;8847:24;:::i;:::-;8836:35;;8781:96;;;:::o;8883:90::-;8917:7;8960:5;8953:13;8946:21;8935:32;;8883:90;;;:::o;8979:126::-;9016:7;9056:42;9049:5;9045:54;9034:65;;8979:126;;;:::o;9111:77::-;9148:7;9177:5;9166:16;;9111:77;;;:::o;9194:86::-;9229:7;9269:4;9262:5;9258:16;9247:27;;9194:86;;;:::o;9286:307::-;9354:1;9364:113;9378:6;9375:1;9372:13;9364:113;;;9463:1;9458:3;9454:11;9448:18;9444:1;9439:3;9435:11;9428:39;9400:2;9397:1;9393:10;9388:15;;9364:113;;;9495:6;9492:1;9489:13;9486:101;;;9575:1;9566:6;9561:3;9557:16;9550:27;9486:101;9335:258;9286:307;;;:::o;9599:320::-;9643:6;9680:1;9674:4;9670:12;9660:22;;9727:1;9721:4;9717:12;9748:18;9738:81;;9804:4;9796:6;9792:17;9782:27;;9738:81;9866:2;9858:6;9855:14;9835:18;9832:38;9829:84;;;9885:18;;:::i;:::-;9829:84;9650:269;9599:320;;;:::o;9925:180::-;9973:77;9970:1;9963:88;10070:4;10067:1;10060:15;10094:4;10091:1;10084:15;10111:180;10159:77;10156:1;10149:88;10256:4;10253:1;10246:15;10280:4;10277:1;10270:15;10420:117;10529:1;10526;10519:12;10543:102;10584:6;10635:2;10631:7;10626:2;10619:5;10615:14;10611:28;10601:38;;10543:102;;;:::o;10651:222::-;10791:34;10787:1;10779:6;10775:14;10768:58;10860:5;10855:2;10847:6;10843:15;10836:30;10651:222;:::o;10879:221::-;11019:34;11015:1;11007:6;11003:14;10996:58;11088:4;11083:2;11075:6;11071:15;11064:29;10879:221;:::o;11106:177::-;11246:29;11242:1;11234:6;11230:14;11223:53;11106:177;:::o;11289:224::-;11429:34;11425:1;11417:6;11413:14;11406:58;11498:7;11493:2;11485:6;11481:15;11474:32;11289:224;:::o;11519:223::-;11659:34;11655:1;11647:6;11643:14;11636:58;11728:6;11723:2;11715:6;11711:15;11704:31;11519:223;:::o;11748:122::-;11821:24;11839:5;11821:24;:::i;:::-;11814:5;11811:35;11801:63;;11860:1;11857;11850:12;11801:63;11748:122;:::o;11876:::-;11949:24;11967:5;11949:24;:::i;:::-;11942:5;11939:35;11929:63;;11988:1;11985;11978:12;11929:63;11876:122;:::o
Swarm Source
ipfs://f73270d70ea1065aa75f3b5762fc42b94c525ebd9c6a2c2d28dc61c23f93cd5c