Polygon Sponsored slots available. Book your slot here!
ERC-20
Overview
Max Total Supply
995 pPOE
Holders
0
Total Transfers
-
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
GovPOE
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.8.0; import "./FlatPoExtended.sol"; contract GovPOE is PoExtended{ /// @notice A record of each accounts delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint96 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /** * @notice Construct a new Gov token */ constructor(string memory name_, string memory symbol_) PoExtended(name_,symbol_) {} /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) public { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name())), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "POE::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "POE::delegateBySig: invalid nonce"); require(block.timestamp <= expiry, "POE::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint96) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { require(blockNumber < block.number, "POE::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint96 delegatorBalance = uint96(balanceOf(delegator)); delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint96 srcRepNew = sub96(srcRepOld, amount, "POE::_moveVotes: vote amount underflows"); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint96 dstRepNew = add96(dstRepOld, amount, "POE::_moveVotes: vote amount overflows"); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { uint32 blockNumber = safe32(block.number, "POE::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function safe96(uint n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function getChainId() internal view returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {POE} from "./PoE.sol"; /** * @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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } } /** * @title PoExtended * @author Carson Case [[email protected]] * @notice PoExtended is a POE token with owner delegated minters and a merkle claim system */ abstract contract PoExtended is POE, Ownable{ using MerkleProof for bytes32[]; /// @dev the merkle root which CAN be updated address public merkleRoot; mapping(address => bool) approved_minters; constructor(string memory name_, string memory symbol_) POE(name_,symbol_){} /// @dev some functions only callable by approved minters modifier onlyMinter(){ require(approved_minters[msg.sender], "must be approved by owner to call this function"); _; } // Begin merkle root functions... /// @dev function for owner to update merkle root function updateMerkleRoot(address _new) external onlyMinter{ merkleRoot = _new; } /// @dev claim function. Any user can claim (and mint) with a verified merkle proof function claim(bytes32[] memory proof) external{ bytes32 root = bytes20(merkleRoot) << 12; bytes32 leaf = bytes20(msg.sender) << 12; require(proof.verify(root,leaf), "Address not eligible for claim"); _mint(msg.sender); } /// @dev only owner can add minters function addMinter(address _minter) external onlyOwner{ require(approved_minters[_minter] != true, "Minter is already approved"); approved_minters[_minter] = true; } /// @dev owner can remove them too function removeMinter(address _minter) external onlyOwner{ require(approved_minters[_minter] != false, "Minter is already not-approved"); approved_minters[_minter] = false; } /// @dev A minter can forefit their minting status (useful for contracts) function forefitMinterRole()external{ require(approved_minters[msg.sender] == true, "msg.sender must be an approved minter"); approved_minters[msg.sender] = false; } /** * @dev Mints 1 POE token to the given address. */ function mint(address account) external onlyMinter returns (bool) { _mint(account); return true; } /** * @dev Burns 1 POE token from the given address. */ function burn(address account) external onlyOwner returns (bool) { _burn(account, balanceOf(account)); return true; } /** * @dev Batch mint POE tokens to multiple addresses. */ function mintMany(address[] memory accounts) external onlyMinter returns (bool) { for (uint256 i = 0; i < accounts.length; i++) { _mint(accounts[i]); } return true; } /** * @dev Batch burn POE tokens from multiple addresses. */ function burnMany(address[] memory accounts) external onlyOwner returns (bool) { for (uint256 i = 0; i < accounts.length; i++) { _burn(accounts[i], balanceOf(accounts[i])); } return true; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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 POE{ mapping (address => uint256) private _balances; uint256 private _totalSupply; string private _name; string private _symbol; event Transfer(address, address, uint); /** * @dev Sets the values for {name} and {symbol}. * * The defaut 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 returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() external 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 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() external view virtual returns (uint8) { return 0; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** @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) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); require(balanceOf(account) == 0, "User already holds a PoE token"); _beforeTokenTransfer(address(0), account, 1); _totalSupply += 1; _balances[account] += 1; emit Transfer(address(0), account, 1); } /** * @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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), 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 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 { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"burnMany","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forefitMinterRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"updateMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200419a3803806200419a833981810160405281019062000037919062000295565b8181818181600290805190602001906200005392919062000167565b5080600390805190602001906200006c92919062000167565b5050506200008f620000836200009960201b60201c565b620000a160201b60201c565b505050506200049e565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200017590620003af565b90600052602060002090601f016020900481019282620001995760008555620001e5565b82601f10620001b457805160ff1916838001178555620001e5565b82800160010185558215620001e5579182015b82811115620001e4578251825591602001919060010190620001c7565b5b509050620001f49190620001f8565b5090565b5b8082111562000213576000816000905550600101620001f9565b5090565b60006200022e620002288462000343565b6200031a565b9050828152602081018484840111156200024d576200024c6200047e565b5b6200025a84828562000379565b509392505050565b600082601f8301126200027a576200027962000479565b5b81516200028c84826020860162000217565b91505092915050565b60008060408385031215620002af57620002ae62000488565b5b600083015167ffffffffffffffff811115620002d057620002cf62000483565b5b620002de8582860162000262565b925050602083015167ffffffffffffffff81111562000302576200030162000483565b5b620003108582860162000262565b9150509250929050565b60006200032662000339565b9050620003348282620003e5565b919050565b6000604051905090565b600067ffffffffffffffff8211156200036157620003606200044a565b5b6200036c826200048d565b9050602081019050919050565b60005b83811015620003995780820151818401526020810190506200037c565b83811115620003a9576000848401525b50505050565b60006002820490506001821680620003c857607f821691505b60208210811415620003df57620003de6200041b565b5b50919050565b620003f0826200048d565b810181811067ffffffffffffffff821117156200041257620004116200044a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b613cec80620004ae6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637ecebe00116100f9578063b4b5ea5711610097578063e7a324dc11610071578063e7a324dc1461051b578063eaca5a7614610539578063f1127ed814610555578063f2fde38b14610586576101c4565b8063b4b5ea571461049f578063ba982d54146104cf578063c3cda520146104ff576101c4565b80638da5cb5b116100d35780638da5cb5b1461042b57806395d89b4114610449578063983b2d5614610467578063b391c50814610483576101c4565b80637ecebe00146103c157806387b8fcce146103f157806389afcb44146103fb576101c4565b8063587cde1e116101665780636fcfff45116101405780636fcfff451461032757806370a0823114610357578063715018a614610387578063782d6fe114610391576101c4565b8063587cde1e146102ab5780635c19a95c146102db5780636a627842146102f7576101c4565b80632eb4a7ab116101a25780632eb4a7ab146102235780633092afd514610241578063313ce5671461025d578063397ada211461027b576101c4565b806306fdde03146101c957806318160ddd146101e757806320606b7014610205575b600080fd5b6101d16105a2565b6040516101de9190613036565b60405180910390f35b6101ef610634565b6040516101fc9190613238565b60405180910390f35b61020d61063e565b60405161021a9190612f4c565b60405180910390f35b61022b610662565b6040516102389190612ea8565b60405180910390f35b61025b60048036038101906102569190612972565b610688565b005b6102656107f3565b6040516102729190613297565b60405180910390f35b61029560048036038101906102909190612aac565b6107f8565b6040516102a29190612f31565b60405180910390f35b6102c560048036038101906102c09190612972565b6108d2565b6040516102d29190612ea8565b60405180910390f35b6102f560048036038101906102f09190612972565b610905565b005b610311600480360381019061030c9190612972565b610912565b60405161031e9190612f31565b60405180910390f35b610341600480360381019061033c9190612972565b6109b2565b60405161034e9190613253565b60405180910390f35b610371600480360381019061036c9190612972565b6109d5565b60405161037e9190613238565b60405180910390f35b61038f610a1d565b005b6103ab60048036038101906103a6919061299f565b610aa5565b6040516103b891906132b2565b60405180910390f35b6103db60048036038101906103d69190612972565b610ee0565b6040516103e89190613238565b60405180910390f35b6103f9610ef8565b005b61041560048036038101906104109190612972565b610fe5565b6040516104229190612f31565b60405180910390f35b61043361107e565b6040516104409190612ea8565b60405180910390f35b6104516110a8565b60405161045e9190613036565b60405180910390f35b610481600480360381019061047c9190612972565b61113a565b005b61049d60048036038101906104989190612af5565b6112a5565b005b6104b960048036038101906104b49190612972565b61137d565b6040516104c691906132b2565b60405180910390f35b6104e960048036038101906104e49190612aac565b611474565b6040516104f69190612f31565b60405180910390f35b610519600480360381019061051491906129df565b611561565b005b6105236117f6565b6040516105309190612f4c565b60405180910390f35b610553600480360381019061054e9190612972565b61181a565b005b61056f600480360381019061056a9190612a6c565b6118ea565b60405161057d92919061326e565b60405180910390f35b6105a0600480360381019061059b9190612972565b611943565b005b6060600280546105b190613617565b80601f01602080910402602001604051908101604052809291908181526020018280546105dd90613617565b801561062a5780601f106105ff5761010080835404028352916020019161062a565b820191906000526020600020905b81548152906001019060200180831161060d57829003601f168201915b5050505050905090565b6000600154905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610690611a3b565b73ffffffffffffffffffffffffffffffffffffffff166106ae61107e565b73ffffffffffffffffffffffffffffffffffffffff1614610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb90613178565b60405180910390fd5b60001515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f906130f8565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600090565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d906131b8565b60405180910390fd5b60005b82518110156108c8576108b58382815181106108a8576108a761375a565b5b6020026020010151611a43565b80806108c09061367a565b915050610889565b5060019050919050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090f3382611bba565b50565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610997906131b8565b60405180910390fd5b6109a982611a43565b60019050919050565b60096020528060005260406000206000915054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a25611a3b565b73ffffffffffffffffffffffffffffffffffffffff16610a4361107e565b73ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090613178565b60405180910390fd5b610aa36000611d2b565b565b6000438210610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090613138565b60405180910390fd5b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610b56576000915050610eda565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610ba591906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610c6a57600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610c2c91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050610eda565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610ceb576000915050610eda565b600080600183610cfb91906134d1565b90505b8163ffffffff168163ffffffff161115610e5c57600060028383610d2291906134d1565b610d2c919061346c565b82610d3791906134d1565b90506000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610e2b57806020015195505050505050610eda565b86816000015163ffffffff161015610e4557819350610e55565b600182610e5291906134d1565b92505b5050610cfe565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b600a6020528060005260406000206000915090505481565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290613118565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000610fef611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661100d61107e565b73ffffffffffffffffffffffffffffffffffffffff1614611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90613178565b60405180910390fd5b61107582611070846109d5565b611df1565b60019050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546110b790613617565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613617565b80156111305780601f1061110557610100808354040283529160200191611130565b820191906000526020600020905b81548152906001019060200180831161111357829003601f168201915b5050505050905090565b611142611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661116061107e565b73ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90613178565b60405180910390fd5b60011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613158565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b6bffffffffffffffffffffffff1916901b6bffffffffffffffffffffffff191690506000600c3360601b6bffffffffffffffffffffffff1916901b6bffffffffffffffffffffffff19169050611330828285611f9b9092919063ffffffff16565b61136f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611366906131f8565b60405180910390fd5b61137833611a43565b505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116113e757600061146c565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361143591906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b600061147e611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661149c61107e565b73ffffffffffffffffffffffffffffffffffffffff16146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613178565b60405180910390fd5b60005b8251811015611557576115448382815181106115145761151361375a565b5b602002602001015161153f8584815181106115325761153161375a565b5b60200260200101516109d5565b611df1565b808061154f9061367a565b9150506114f5565b5060019050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86661158c6105a2565b8051906020012061159b612051565b306040516020016115af9493929190612fac565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016116009493929190612f67565b6040516020818303038152906040528051906020012090506000828260405160200161162d929190612e71565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161166a9493929190612ff1565b6020604051602081039080840390855afa15801561168c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff906130b8565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906117589061367a565b91905055891461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906130d8565b60405180910390fd5b874211156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906131d8565b60405180910390fd5b6117ea818b611bba565b50505050505050505050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d906131b8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6008602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b61194b611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661196961107e565b73ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2690613098565b60405180910390fd5b611a3881611d2b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613218565b60405180910390fd5b6000611abe826109d5565b14611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613078565b60405180910390fd5b611b0b600082600161205e565b6001806000828254611b1d919061339a565b9250508190555060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b73919061339a565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000826001604051611baf93929190612ec3565b60405180910390a150565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611c29846109d5565b905082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611d25828483612063565b50505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890613198565b60405180910390fd5b611e6d8260008361205e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613058565b60405180910390fd5b8181611eff919061349d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160016000828254611f53919061349d565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600084604051611f8e93929190612efa565b60405180910390a1505050565b60008082905060005b8551811015612043576000868281518110611fc257611fc161375a565b5b60200260200101519050808311612003578281604051602001611fe6929190612e45565b60405160208183030381529060405280519060200120925061202f565b8083604051602001612016929190612e45565b6040516020818303038152906040528051906020012092505b50808061203b9061367a565b915050611fa4565b508381149150509392505050565b6000804690508091505090565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120ad57506000816bffffffffffffffffffffffff16115b1561236b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461220e576000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116121505760006121d5565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461219e91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006121fc8285604051806060016040528060278152602001613c5d60279139612370565b905061220a868484846123ea565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461236a576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116122ac576000612331565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846122fa91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006123588285604051806060016040528060268152602001613c37602691396126f8565b9050612366858484846123ea565b5050505b5b505050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb9190613036565b60405180910390fd5b5082846123e19190613505565b90509392505050565b600061240e43604051806060016040528060338152602001613c8460339139612777565b905060008463ffffffff161180156124ac57508063ffffffff16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761247691906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156125505781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761250091906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506126a1565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018461264391906133f0565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516126e99291906132cd565b60405180910390a25050505050565b6000808385612707919061342a565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061276b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127629190613036565b60405180910390fd5b50809150509392505050565b6000640100000000831082906127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9190613036565b60405180910390fd5b5082905092915050565b60006127e06127db8461331b565b6132f6565b90508083825260208201905082856020860282011115612803576128026137bd565b5b60005b85811015612833578161281988826128ad565b845260208401935060208301925050600181019050612806565b5050509392505050565b600061285061284b84613347565b6132f6565b90508083825260208201905082856020860282011115612873576128726137bd565b5b60005b858110156128a35781612889888261291e565b845260208401935060208301925050600181019050612876565b5050509392505050565b6000813590506128bc81613bc3565b92915050565b600082601f8301126128d7576128d66137b8565b5b81356128e78482602086016127cd565b91505092915050565b600082601f830112612905576129046137b8565b5b813561291584826020860161283d565b91505092915050565b60008135905061292d81613bda565b92915050565b60008135905061294281613bf1565b92915050565b60008135905061295781613c08565b92915050565b60008135905061296c81613c1f565b92915050565b600060208284031215612988576129876137c7565b5b6000612996848285016128ad565b91505092915050565b600080604083850312156129b6576129b56137c7565b5b60006129c4858286016128ad565b92505060206129d585828601612933565b9150509250929050565b60008060008060008060c087890312156129fc576129fb6137c7565b5b6000612a0a89828a016128ad565b9650506020612a1b89828a01612933565b9550506040612a2c89828a01612933565b9450506060612a3d89828a0161295d565b9350506080612a4e89828a0161291e565b92505060a0612a5f89828a0161291e565b9150509295509295509295565b60008060408385031215612a8357612a826137c7565b5b6000612a91858286016128ad565b9250506020612aa285828601612948565b9150509250929050565b600060208284031215612ac257612ac16137c7565b5b600082013567ffffffffffffffff811115612ae057612adf6137c2565b5b612aec848285016128c2565b91505092915050565b600060208284031215612b0b57612b0a6137c7565b5b600082013567ffffffffffffffff811115612b2957612b286137c2565b5b612b35848285016128f0565b91505092915050565b612b4781613539565b82525050565b612b568161354b565b82525050565b612b6581613557565b82525050565b612b7c612b7782613557565b6136c3565b82525050565b612b8b816135c0565b82525050565b6000612b9c82613373565b612ba6818561337e565b9350612bb68185602086016135e4565b612bbf816137cc565b840191505092915050565b6000612bd760228361337e565b9150612be2826137dd565b604082019050919050565b6000612bfa601e8361337e565b9150612c058261382c565b602082019050919050565b6000612c1d60268361337e565b9150612c2882613855565b604082019050919050565b6000612c4060028361338f565b9150612c4b826138a4565b600282019050919050565b6000612c6360258361337e565b9150612c6e826138cd565b604082019050919050565b6000612c8660218361337e565b9150612c918261391c565b604082019050919050565b6000612ca9601e8361337e565b9150612cb48261396b565b602082019050919050565b6000612ccc60258361337e565b9150612cd782613994565b604082019050919050565b6000612cef60268361337e565b9150612cfa826139e3565b604082019050919050565b6000612d12601a8361337e565b9150612d1d82613a32565b602082019050919050565b6000612d3560208361337e565b9150612d4082613a5b565b602082019050919050565b6000612d5860218361337e565b9150612d6382613a84565b604082019050919050565b6000612d7b602f8361337e565b9150612d8682613ad3565b604082019050919050565b6000612d9e60258361337e565b9150612da982613b22565b604082019050919050565b6000612dc1601e8361337e565b9150612dcc82613b71565b602082019050919050565b6000612de4601f8361337e565b9150612def82613b9a565b602082019050919050565b612e0381613581565b82525050565b612e128161358b565b82525050565b612e218161359b565b82525050565b612e30816135d2565b82525050565b612e3f816135a8565b82525050565b6000612e518285612b6b565b602082019150612e618284612b6b565b6020820191508190509392505050565b6000612e7c82612c33565b9150612e888285612b6b565b602082019150612e988284612b6b565b6020820191508190509392505050565b6000602082019050612ebd6000830184612b3e565b92915050565b6000606082019050612ed86000830186612b3e565b612ee56020830185612b3e565b612ef26040830184612b82565b949350505050565b6000606082019050612f0f6000830186612b3e565b612f1c6020830185612b3e565b612f296040830184612dfa565b949350505050565b6000602082019050612f466000830184612b4d565b92915050565b6000602082019050612f616000830184612b5c565b92915050565b6000608082019050612f7c6000830187612b5c565b612f896020830186612b3e565b612f966040830185612dfa565b612fa36060830184612dfa565b95945050505050565b6000608082019050612fc16000830187612b5c565b612fce6020830186612b5c565b612fdb6040830185612dfa565b612fe86060830184612b3e565b95945050505050565b60006080820190506130066000830187612b5c565b6130136020830186612e18565b6130206040830185612b5c565b61302d6060830184612b5c565b95945050505050565b600060208201905081810360008301526130508184612b91565b905092915050565b6000602082019050818103600083015261307181612bca565b9050919050565b6000602082019050818103600083015261309181612bed565b9050919050565b600060208201905081810360008301526130b181612c10565b9050919050565b600060208201905081810360008301526130d181612c56565b9050919050565b600060208201905081810360008301526130f181612c79565b9050919050565b6000602082019050818103600083015261311181612c9c565b9050919050565b6000602082019050818103600083015261313181612cbf565b9050919050565b6000602082019050818103600083015261315181612ce2565b9050919050565b6000602082019050818103600083015261317181612d05565b9050919050565b6000602082019050818103600083015261319181612d28565b9050919050565b600060208201905081810360008301526131b181612d4b565b9050919050565b600060208201905081810360008301526131d181612d6e565b9050919050565b600060208201905081810360008301526131f181612d91565b9050919050565b6000602082019050818103600083015261321181612db4565b9050919050565b6000602082019050818103600083015261323181612dd7565b9050919050565b600060208201905061324d6000830184612dfa565b92915050565b60006020820190506132686000830184612e09565b92915050565b60006040820190506132836000830185612e09565b6132906020830184612e36565b9392505050565b60006020820190506132ac6000830184612e18565b92915050565b60006020820190506132c76000830184612e36565b92915050565b60006040820190506132e26000830185612e27565b6132ef6020830184612e27565b9392505050565b6000613300613311565b905061330c8282613649565b919050565b6000604051905090565b600067ffffffffffffffff82111561333657613335613789565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561336257613361613789565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006133a582613581565b91506133b083613581565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133e5576133e46136cd565b5b828201905092915050565b60006133fb8261358b565b91506134068361358b565b92508263ffffffff0382111561341f5761341e6136cd565b5b828201905092915050565b6000613435826135a8565b9150613440836135a8565b9250826bffffffffffffffffffffffff03821115613461576134606136cd565b5b828201905092915050565b60006134778261358b565b91506134828361358b565b925082613492576134916136fc565b5b828204905092915050565b60006134a882613581565b91506134b383613581565b9250828210156134c6576134c56136cd565b5b828203905092915050565b60006134dc8261358b565b91506134e78361358b565b9250828210156134fa576134f96136cd565b5b828203905092915050565b6000613510826135a8565b915061351b836135a8565b92508282101561352e5761352d6136cd565b5b828203905092915050565b600061354482613561565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006135cb82613581565b9050919050565b60006135dd826135a8565b9050919050565b60005b838110156136025780820151818401526020810190506135e7565b83811115613611576000848401525b50505050565b6000600282049050600182168061362f57607f821691505b602082108114156136435761364261372b565b5b50919050565b613652826137cc565b810181811067ffffffffffffffff8211171561367157613670613789565b5b80604052505050565b600061368582613581565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156136b8576136b76136cd565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f5573657220616c726561647920686f6c6473206120506f4520746f6b656e0000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f504f453a3a64656c656761746542795369673a20696e76616c6964207369676e60008201527f6174757265000000000000000000000000000000000000000000000000000000602082015250565b7f504f453a3a64656c656761746542795369673a20696e76616c6964206e6f6e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74657220697320616c7265616479206e6f742d617070726f7665640000600082015250565b7f6d73672e73656e646572206d75737420626520616e20617070726f766564206d60008201527f696e746572000000000000000000000000000000000000000000000000000000602082015250565b7f504f453a3a6765745072696f72566f7465733a206e6f7420796574206465746560008201527f726d696e65640000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74657220697320616c726561647920617070726f766564000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f6d75737420626520617070726f766564206279206f776e657220746f2063616c60008201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b7f504f453a3a64656c656761746542795369673a207369676e617475726520657860008201527f7069726564000000000000000000000000000000000000000000000000000000602082015250565b7f41646472657373206e6f7420656c696769626c6520666f7220636c61696d0000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b613bcc81613539565b8114613bd757600080fd5b50565b613be381613557565b8114613bee57600080fd5b50565b613bfa81613581565b8114613c0557600080fd5b50565b613c118161358b565b8114613c1c57600080fd5b50565b613c288161359b565b8114613c3357600080fd5b5056fe504f453a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773504f453a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773504f453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212203a385192fed2fabf9b5614f5ea1f795c2abd03cee8961473d583b5aa8c1d90e964736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b506f6c79676f6e20504f45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470504f4500000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637ecebe00116100f9578063b4b5ea5711610097578063e7a324dc11610071578063e7a324dc1461051b578063eaca5a7614610539578063f1127ed814610555578063f2fde38b14610586576101c4565b8063b4b5ea571461049f578063ba982d54146104cf578063c3cda520146104ff576101c4565b80638da5cb5b116100d35780638da5cb5b1461042b57806395d89b4114610449578063983b2d5614610467578063b391c50814610483576101c4565b80637ecebe00146103c157806387b8fcce146103f157806389afcb44146103fb576101c4565b8063587cde1e116101665780636fcfff45116101405780636fcfff451461032757806370a0823114610357578063715018a614610387578063782d6fe114610391576101c4565b8063587cde1e146102ab5780635c19a95c146102db5780636a627842146102f7576101c4565b80632eb4a7ab116101a25780632eb4a7ab146102235780633092afd514610241578063313ce5671461025d578063397ada211461027b576101c4565b806306fdde03146101c957806318160ddd146101e757806320606b7014610205575b600080fd5b6101d16105a2565b6040516101de9190613036565b60405180910390f35b6101ef610634565b6040516101fc9190613238565b60405180910390f35b61020d61063e565b60405161021a9190612f4c565b60405180910390f35b61022b610662565b6040516102389190612ea8565b60405180910390f35b61025b60048036038101906102569190612972565b610688565b005b6102656107f3565b6040516102729190613297565b60405180910390f35b61029560048036038101906102909190612aac565b6107f8565b6040516102a29190612f31565b60405180910390f35b6102c560048036038101906102c09190612972565b6108d2565b6040516102d29190612ea8565b60405180910390f35b6102f560048036038101906102f09190612972565b610905565b005b610311600480360381019061030c9190612972565b610912565b60405161031e9190612f31565b60405180910390f35b610341600480360381019061033c9190612972565b6109b2565b60405161034e9190613253565b60405180910390f35b610371600480360381019061036c9190612972565b6109d5565b60405161037e9190613238565b60405180910390f35b61038f610a1d565b005b6103ab60048036038101906103a6919061299f565b610aa5565b6040516103b891906132b2565b60405180910390f35b6103db60048036038101906103d69190612972565b610ee0565b6040516103e89190613238565b60405180910390f35b6103f9610ef8565b005b61041560048036038101906104109190612972565b610fe5565b6040516104229190612f31565b60405180910390f35b61043361107e565b6040516104409190612ea8565b60405180910390f35b6104516110a8565b60405161045e9190613036565b60405180910390f35b610481600480360381019061047c9190612972565b61113a565b005b61049d60048036038101906104989190612af5565b6112a5565b005b6104b960048036038101906104b49190612972565b61137d565b6040516104c691906132b2565b60405180910390f35b6104e960048036038101906104e49190612aac565b611474565b6040516104f69190612f31565b60405180910390f35b610519600480360381019061051491906129df565b611561565b005b6105236117f6565b6040516105309190612f4c565b60405180910390f35b610553600480360381019061054e9190612972565b61181a565b005b61056f600480360381019061056a9190612a6c565b6118ea565b60405161057d92919061326e565b60405180910390f35b6105a0600480360381019061059b9190612972565b611943565b005b6060600280546105b190613617565b80601f01602080910402602001604051908101604052809291908181526020018280546105dd90613617565b801561062a5780601f106105ff5761010080835404028352916020019161062a565b820191906000526020600020905b81548152906001019060200180831161060d57829003601f168201915b5050505050905090565b6000600154905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610690611a3b565b73ffffffffffffffffffffffffffffffffffffffff166106ae61107e565b73ffffffffffffffffffffffffffffffffffffffff1614610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb90613178565b60405180910390fd5b60001515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f906130f8565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600090565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d906131b8565b60405180910390fd5b60005b82518110156108c8576108b58382815181106108a8576108a761375a565b5b6020026020010151611a43565b80806108c09061367a565b915050610889565b5060019050919050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090f3382611bba565b50565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610997906131b8565b60405180910390fd5b6109a982611a43565b60019050919050565b60096020528060005260406000206000915054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a25611a3b565b73ffffffffffffffffffffffffffffffffffffffff16610a4361107e565b73ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090613178565b60405180910390fd5b610aa36000611d2b565b565b6000438210610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090613138565b60405180910390fd5b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610b56576000915050610eda565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610ba591906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610c6a57600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610c2c91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050610eda565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610ceb576000915050610eda565b600080600183610cfb91906134d1565b90505b8163ffffffff168163ffffffff161115610e5c57600060028383610d2291906134d1565b610d2c919061346c565b82610d3791906134d1565b90506000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610e2b57806020015195505050505050610eda565b86816000015163ffffffff161015610e4557819350610e55565b600182610e5291906134d1565b92505b5050610cfe565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b600a6020528060005260406000206000915090505481565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290613118565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000610fef611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661100d61107e565b73ffffffffffffffffffffffffffffffffffffffff1614611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90613178565b60405180910390fd5b61107582611070846109d5565b611df1565b60019050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546110b790613617565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613617565b80156111305780601f1061110557610100808354040283529160200191611130565b820191906000526020600020905b81548152906001019060200180831161111357829003601f168201915b5050505050905090565b611142611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661116061107e565b73ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90613178565b60405180910390fd5b60011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613158565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b6bffffffffffffffffffffffff1916901b6bffffffffffffffffffffffff191690506000600c3360601b6bffffffffffffffffffffffff1916901b6bffffffffffffffffffffffff19169050611330828285611f9b9092919063ffffffff16565b61136f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611366906131f8565b60405180910390fd5b61137833611a43565b505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116113e757600061146c565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361143591906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b600061147e611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661149c61107e565b73ffffffffffffffffffffffffffffffffffffffff16146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613178565b60405180910390fd5b60005b8251811015611557576115448382815181106115145761151361375a565b5b602002602001015161153f8584815181106115325761153161375a565b5b60200260200101516109d5565b611df1565b808061154f9061367a565b9150506114f5565b5060019050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86661158c6105a2565b8051906020012061159b612051565b306040516020016115af9493929190612fac565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016116009493929190612f67565b6040516020818303038152906040528051906020012090506000828260405160200161162d929190612e71565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161166a9493929190612ff1565b6020604051602081039080840390855afa15801561168c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff906130b8565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906117589061367a565b91905055891461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906130d8565b60405180910390fd5b874211156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906131d8565b60405180910390fd5b6117ea818b611bba565b50505050505050505050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d906131b8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6008602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b61194b611a3b565b73ffffffffffffffffffffffffffffffffffffffff1661196961107e565b73ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2690613098565b60405180910390fd5b611a3881611d2b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613218565b60405180910390fd5b6000611abe826109d5565b14611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613078565b60405180910390fd5b611b0b600082600161205e565b6001806000828254611b1d919061339a565b9250508190555060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b73919061339a565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000826001604051611baf93929190612ec3565b60405180910390a150565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611c29846109d5565b905082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611d25828483612063565b50505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890613198565b60405180910390fd5b611e6d8260008361205e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613058565b60405180910390fd5b8181611eff919061349d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160016000828254611f53919061349d565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600084604051611f8e93929190612efa565b60405180910390a1505050565b60008082905060005b8551811015612043576000868281518110611fc257611fc161375a565b5b60200260200101519050808311612003578281604051602001611fe6929190612e45565b60405160208183030381529060405280519060200120925061202f565b8083604051602001612016929190612e45565b6040516020818303038152906040528051906020012092505b50808061203b9061367a565b915050611fa4565b508381149150509392505050565b6000804690508091505090565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120ad57506000816bffffffffffffffffffffffff16115b1561236b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461220e576000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116121505760006121d5565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461219e91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006121fc8285604051806060016040528060278152602001613c5d60279139612370565b905061220a868484846123ea565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461236a576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116122ac576000612331565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846122fa91906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006123588285604051806060016040528060268152602001613c37602691396126f8565b9050612366858484846123ea565b5050505b5b505050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb9190613036565b60405180910390fd5b5082846123e19190613505565b90509392505050565b600061240e43604051806060016040528060338152602001613c8460339139612777565b905060008463ffffffff161180156124ac57508063ffffffff16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761247691906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156125505781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761250091906134d1565b63ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506126a1565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018461264391906133f0565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516126e99291906132cd565b60405180910390a25050505050565b6000808385612707919061342a565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061276b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127629190613036565b60405180910390fd5b50809150509392505050565b6000640100000000831082906127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9190613036565b60405180910390fd5b5082905092915050565b60006127e06127db8461331b565b6132f6565b90508083825260208201905082856020860282011115612803576128026137bd565b5b60005b85811015612833578161281988826128ad565b845260208401935060208301925050600181019050612806565b5050509392505050565b600061285061284b84613347565b6132f6565b90508083825260208201905082856020860282011115612873576128726137bd565b5b60005b858110156128a35781612889888261291e565b845260208401935060208301925050600181019050612876565b5050509392505050565b6000813590506128bc81613bc3565b92915050565b600082601f8301126128d7576128d66137b8565b5b81356128e78482602086016127cd565b91505092915050565b600082601f830112612905576129046137b8565b5b813561291584826020860161283d565b91505092915050565b60008135905061292d81613bda565b92915050565b60008135905061294281613bf1565b92915050565b60008135905061295781613c08565b92915050565b60008135905061296c81613c1f565b92915050565b600060208284031215612988576129876137c7565b5b6000612996848285016128ad565b91505092915050565b600080604083850312156129b6576129b56137c7565b5b60006129c4858286016128ad565b92505060206129d585828601612933565b9150509250929050565b60008060008060008060c087890312156129fc576129fb6137c7565b5b6000612a0a89828a016128ad565b9650506020612a1b89828a01612933565b9550506040612a2c89828a01612933565b9450506060612a3d89828a0161295d565b9350506080612a4e89828a0161291e565b92505060a0612a5f89828a0161291e565b9150509295509295509295565b60008060408385031215612a8357612a826137c7565b5b6000612a91858286016128ad565b9250506020612aa285828601612948565b9150509250929050565b600060208284031215612ac257612ac16137c7565b5b600082013567ffffffffffffffff811115612ae057612adf6137c2565b5b612aec848285016128c2565b91505092915050565b600060208284031215612b0b57612b0a6137c7565b5b600082013567ffffffffffffffff811115612b2957612b286137c2565b5b612b35848285016128f0565b91505092915050565b612b4781613539565b82525050565b612b568161354b565b82525050565b612b6581613557565b82525050565b612b7c612b7782613557565b6136c3565b82525050565b612b8b816135c0565b82525050565b6000612b9c82613373565b612ba6818561337e565b9350612bb68185602086016135e4565b612bbf816137cc565b840191505092915050565b6000612bd760228361337e565b9150612be2826137dd565b604082019050919050565b6000612bfa601e8361337e565b9150612c058261382c565b602082019050919050565b6000612c1d60268361337e565b9150612c2882613855565b604082019050919050565b6000612c4060028361338f565b9150612c4b826138a4565b600282019050919050565b6000612c6360258361337e565b9150612c6e826138cd565b604082019050919050565b6000612c8660218361337e565b9150612c918261391c565b604082019050919050565b6000612ca9601e8361337e565b9150612cb48261396b565b602082019050919050565b6000612ccc60258361337e565b9150612cd782613994565b604082019050919050565b6000612cef60268361337e565b9150612cfa826139e3565b604082019050919050565b6000612d12601a8361337e565b9150612d1d82613a32565b602082019050919050565b6000612d3560208361337e565b9150612d4082613a5b565b602082019050919050565b6000612d5860218361337e565b9150612d6382613a84565b604082019050919050565b6000612d7b602f8361337e565b9150612d8682613ad3565b604082019050919050565b6000612d9e60258361337e565b9150612da982613b22565b604082019050919050565b6000612dc1601e8361337e565b9150612dcc82613b71565b602082019050919050565b6000612de4601f8361337e565b9150612def82613b9a565b602082019050919050565b612e0381613581565b82525050565b612e128161358b565b82525050565b612e218161359b565b82525050565b612e30816135d2565b82525050565b612e3f816135a8565b82525050565b6000612e518285612b6b565b602082019150612e618284612b6b565b6020820191508190509392505050565b6000612e7c82612c33565b9150612e888285612b6b565b602082019150612e988284612b6b565b6020820191508190509392505050565b6000602082019050612ebd6000830184612b3e565b92915050565b6000606082019050612ed86000830186612b3e565b612ee56020830185612b3e565b612ef26040830184612b82565b949350505050565b6000606082019050612f0f6000830186612b3e565b612f1c6020830185612b3e565b612f296040830184612dfa565b949350505050565b6000602082019050612f466000830184612b4d565b92915050565b6000602082019050612f616000830184612b5c565b92915050565b6000608082019050612f7c6000830187612b5c565b612f896020830186612b3e565b612f966040830185612dfa565b612fa36060830184612dfa565b95945050505050565b6000608082019050612fc16000830187612b5c565b612fce6020830186612b5c565b612fdb6040830185612dfa565b612fe86060830184612b3e565b95945050505050565b60006080820190506130066000830187612b5c565b6130136020830186612e18565b6130206040830185612b5c565b61302d6060830184612b5c565b95945050505050565b600060208201905081810360008301526130508184612b91565b905092915050565b6000602082019050818103600083015261307181612bca565b9050919050565b6000602082019050818103600083015261309181612bed565b9050919050565b600060208201905081810360008301526130b181612c10565b9050919050565b600060208201905081810360008301526130d181612c56565b9050919050565b600060208201905081810360008301526130f181612c79565b9050919050565b6000602082019050818103600083015261311181612c9c565b9050919050565b6000602082019050818103600083015261313181612cbf565b9050919050565b6000602082019050818103600083015261315181612ce2565b9050919050565b6000602082019050818103600083015261317181612d05565b9050919050565b6000602082019050818103600083015261319181612d28565b9050919050565b600060208201905081810360008301526131b181612d4b565b9050919050565b600060208201905081810360008301526131d181612d6e565b9050919050565b600060208201905081810360008301526131f181612d91565b9050919050565b6000602082019050818103600083015261321181612db4565b9050919050565b6000602082019050818103600083015261323181612dd7565b9050919050565b600060208201905061324d6000830184612dfa565b92915050565b60006020820190506132686000830184612e09565b92915050565b60006040820190506132836000830185612e09565b6132906020830184612e36565b9392505050565b60006020820190506132ac6000830184612e18565b92915050565b60006020820190506132c76000830184612e36565b92915050565b60006040820190506132e26000830185612e27565b6132ef6020830184612e27565b9392505050565b6000613300613311565b905061330c8282613649565b919050565b6000604051905090565b600067ffffffffffffffff82111561333657613335613789565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561336257613361613789565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006133a582613581565b91506133b083613581565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133e5576133e46136cd565b5b828201905092915050565b60006133fb8261358b565b91506134068361358b565b92508263ffffffff0382111561341f5761341e6136cd565b5b828201905092915050565b6000613435826135a8565b9150613440836135a8565b9250826bffffffffffffffffffffffff03821115613461576134606136cd565b5b828201905092915050565b60006134778261358b565b91506134828361358b565b925082613492576134916136fc565b5b828204905092915050565b60006134a882613581565b91506134b383613581565b9250828210156134c6576134c56136cd565b5b828203905092915050565b60006134dc8261358b565b91506134e78361358b565b9250828210156134fa576134f96136cd565b5b828203905092915050565b6000613510826135a8565b915061351b836135a8565b92508282101561352e5761352d6136cd565b5b828203905092915050565b600061354482613561565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006135cb82613581565b9050919050565b60006135dd826135a8565b9050919050565b60005b838110156136025780820151818401526020810190506135e7565b83811115613611576000848401525b50505050565b6000600282049050600182168061362f57607f821691505b602082108114156136435761364261372b565b5b50919050565b613652826137cc565b810181811067ffffffffffffffff8211171561367157613670613789565b5b80604052505050565b600061368582613581565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156136b8576136b76136cd565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f5573657220616c726561647920686f6c6473206120506f4520746f6b656e0000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f504f453a3a64656c656761746542795369673a20696e76616c6964207369676e60008201527f6174757265000000000000000000000000000000000000000000000000000000602082015250565b7f504f453a3a64656c656761746542795369673a20696e76616c6964206e6f6e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74657220697320616c7265616479206e6f742d617070726f7665640000600082015250565b7f6d73672e73656e646572206d75737420626520616e20617070726f766564206d60008201527f696e746572000000000000000000000000000000000000000000000000000000602082015250565b7f504f453a3a6765745072696f72566f7465733a206e6f7420796574206465746560008201527f726d696e65640000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74657220697320616c726561647920617070726f766564000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f6d75737420626520617070726f766564206279206f776e657220746f2063616c60008201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b7f504f453a3a64656c656761746542795369673a207369676e617475726520657860008201527f7069726564000000000000000000000000000000000000000000000000000000602082015250565b7f41646472657373206e6f7420656c696769626c6520666f7220636c61696d0000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b613bcc81613539565b8114613bd757600080fd5b50565b613be381613557565b8114613bee57600080fd5b50565b613bfa81613581565b8114613c0557600080fd5b50565b613c118161358b565b8114613c1c57600080fd5b50565b613c288161359b565b8114613c3357600080fd5b5056fe504f453a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773504f453a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773504f453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212203a385192fed2fabf9b5614f5ea1f795c2abd03cee8961473d583b5aa8c1d90e964736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b506f6c79676f6e20504f45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470504f4500000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Polygon POE
Arg [1] : symbol_ (string): pPOE
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 506f6c79676f6e20504f45000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 70504f4500000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
59:8026:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:91:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3056:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;699:122:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4921:25:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6135:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2906:85:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7120:221:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;149:45:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1834:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6686:121:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;577:49:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3218:118:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2411:94:0;;;:::i;:::-;;4024:1217:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1113:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6419:188:0;;;:::i;:::-;;6892:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2170:97:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5899:188:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5588:262;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3371:222:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:244:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2370:800:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;915:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5396:95:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;438:70:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2660:192:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1960:91:2;2005:13;2038:5;2031:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:91;:::o;3056:99::-;3108:7;3135:12;;3128:19;;3056:99;:::o;699:122:1:-;741:80;699:122;:::o;4921:25:0:-;;;;;;;;;;;;;:::o;6135:197::-;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6240:5:::1;6211:34;;:16;:25;6228:7;6211:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;6203:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;6319:5;6291:16;:25;6308:7;6291:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6135:197:::0;:::o;2906:85:2:-;2957:5;2906:85;:::o;7120:221:0:-;7194:4;5192:16;:28;5209:10;5192:28;;;;;;;;;;;;;;;;;;;;;;;;;5184:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;7216:9:::1;7211:91;7235:8;:15;7231:1;:19;7211:91;;;7272:18;7278:8;7287:1;7278:11;;;;;;;;:::i;:::-;;;;;;;;7272:5;:18::i;:::-;7252:3;;;;;:::i;:::-;;;;7211:91;;;;7329:4;7322:11;;7120:221:::0;;;:::o;149:45:1:-;;;;;;;;;;;;;;;;;;;;;;:::o;1834:102::-;1896:32;1906:10;1918:9;1896;:32::i;:::-;1834:102;:::o;6686:121:0:-;6746:4;5192:16;:28;5209:10;5192:28;;;;;;;;;;;;;;;;;;;;;;;;;5184:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;6763:14:::1;6769:7;6763:5;:14::i;:::-;6795:4;6788:11;;6686:121:::0;;;:::o;577:49:1:-;;;;;;;;;;;;;;;;;;;;;;:::o;3218:118:2:-;3283:7;3310:9;:18;3320:7;3310:18;;;;;;;;;;;;;;;;3303:25;;3218:118;;;:::o;2411:94:0:-;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2476:21:::1;2494:1;2476:9;:21::i;:::-;2411:94::o:0;4024:1217:1:-;4103:6;4144:12;4130:11;:26;4122:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4212:19;4234:14;:23;4249:7;4234:23;;;;;;;;;;;;;;;;;;;;;;;;;4212:45;;4288:1;4272:12;:17;;;4268:58;;;4313:1;4306:8;;;;;4268:58;4438:11;4386;:20;4398:7;4386:20;;;;;;;;;;;;;;;:38;4422:1;4407:12;:16;;;;:::i;:::-;4386:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;4382:147;;4473:11;:20;4485:7;4473:20;;;;;;;;;;;;;;;:38;4509:1;4494:12;:16;;;;:::i;:::-;4473:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;4466:51;;;;;4382:147;4626:11;4590;:20;4602:7;4590:20;;;;;;;;;;;;;;;:23;4611:1;4590:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;4586:88;;;4661:1;4654:8;;;;;4586:88;4686:12;4713;4743:1;4728:12;:16;;;;:::i;:::-;4713:31;;4755:428;4770:5;4762:13;;:5;:13;;;4755:428;;;4792:13;4834:1;4825:5;4817;:13;;;;:::i;:::-;4816:19;;;;:::i;:::-;4808:5;:27;;;;:::i;:::-;4792:43;;4877:20;4900:11;:20;4912:7;4900:20;;;;;;;;;;;;;;;:28;4921:6;4900:28;;;;;;;;;;;;;;;4877:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4963:11;4947:2;:12;;;:27;;;4943:229;;;5002:2;:8;;;4995:15;;;;;;;;;4943:229;5051:11;5036:2;:12;;;:26;;;5032:140;;;5091:6;5083:14;;5032:140;;;5155:1;5146:6;:10;;;;:::i;:::-;5138:18;;5032:140;4777:406;;4755:428;;;5200:11;:20;5212:7;5200:20;;;;;;;;;;;;;;;:27;5221:5;5200:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;5193:40;;;;;4024:1217;;;;;:::o;1113:39::-;;;;;;;;;;;;;;;;;:::o;6419:188:0:-;6506:4;6474:36;;:16;:28;6491:10;6474:28;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;6466:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;6594:5;6563:16;:28;6580:10;6563:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6419:188::o;6892:140::-;6951:4;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6968:34:::1;6974:7;6983:18;6993:7;6983:9;:18::i;:::-;6968:5;:34::i;:::-;7020:4;7013:11;;6892:140:::0;;;:::o;1760:87::-;1806:7;1833:6;;;;;;;;;;;1826:13;;1760:87;:::o;2170:97:2:-;2219:13;2252:7;2245:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:97;:::o;5899:188:0:-;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6001:4:::1;5972:33;;:16;:25;5989:7;5972:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;5964:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6075:4;6047:16;:25;6064:7;6047:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5899:188:::0;:::o;5588:262::-;5646:12;5684:2;5669:10;;;;;;;;;;;5661:19;;:25;;;;;5646:40;;;;;5697:12;5735:2;5720:10;5712:19;;:25;;;;;5697:40;;;;;5756:23;5769:4;5774;5756:5;:12;;:23;;;;;:::i;:::-;5748:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5825:17;5831:10;5825:5;:17::i;:::-;5635:215;;5588:262;:::o;3371:222:1:-;3436:6;3455:19;3477:14;:23;3492:7;3477:23;;;;;;;;;;;;;;;;;;;;;;;;;3455:45;;3533:1;3518:12;:16;;;:67;;3584:1;3518:67;;;3537:11;:20;3549:7;3537:20;;;;;;;;;;;;;;;:38;3573:1;3558:12;:16;;;;:::i;:::-;3537:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;3518:67;3511:74;;;3371:222;;;:::o;7432:244:0:-;7505:4;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7527:9:::1;7522:115;7546:8;:15;7542:1;:19;7522:115;;;7583:42;7589:8;7598:1;7589:11;;;;;;;;:::i;:::-;;;;;;;;7602:22;7612:8;7621:1;7612:11;;;;;;;;:::i;:::-;;;;;;;;7602:9;:22::i;:::-;7583:5;:42::i;:::-;7563:3;;;;;:::i;:::-;;;;7522:115;;;;7664:4;7657:11;;7432:244:::0;;;:::o;2370:800:1:-;2486:23;741:80;2566:6;:4;:6::i;:::-;2550:24;;;;;;2576:12;:10;:12::i;:::-;2598:4;2522:82;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2512:93;;;;;;2486:119;;2616:18;961:71;2679:9;2690:5;2697:6;2647:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2637:68;;;;;;2616:89;;2716:14;2772:15;2789:10;2743:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2733:68;;;;;;2716:85;;2812:17;2832:26;2842:6;2850:1;2853;2856;2832:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:46;;2898:1;2877:23;;:9;:23;;;;2869:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2970:6;:17;2977:9;2970:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;2961:5;:28;2953:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3065:6;3046:15;:25;;3038:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3131:31;3141:9;3152;3131;:31::i;:::-;3124:38;;;;2370:800;;;;;;:::o;915:117::-;961:71;915:117;:::o;5396:95:0:-;5192:16;:28;5209:10;5192:28;;;;;;;;;;;;;;;;;;;;;;;;;5184:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;5479:4:::1;5466:10;;:17;;;;;;;;;;;;;;;;;;5396:95:::0;:::o;438:70:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2660:192:0:-;1991:12;:10;:12::i;:::-;1980:23;;:7;:5;:7::i;:::-;:23;;;1972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2769:1:::1;2749:22;;:8;:22;;;;2741:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2825:19;2835:8;2825:9;:19::i;:::-;2660:192:::0;:::o;636:98::-;689:7;716:10;709:17;;636:98;:::o;3622:379:2:-;3709:1;3690:21;;:7;:21;;;;3682:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3788:1;3766:18;3776:7;3766:9;:18::i;:::-;:23;3758:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3837:44;3866:1;3870:7;3879:1;3837:20;:44::i;:::-;3910:1;3894:12;;:17;;;;;;;:::i;:::-;;;;;;;;3944:1;3922:9;:18;3932:7;3922:18;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;3961:32;3978:1;3982:7;3991:1;3961:32;;;;;;;;:::i;:::-;;;;;;;;3622:379;:::o;5249:384:1:-;5326:23;5352:9;:20;5362:9;5352:20;;;;;;;;;;;;;;;;;;;;;;;;;5326:46;;5383:23;5416:20;5426:9;5416;:20::i;:::-;5383:54;;5471:9;5448;:20;5458:9;5448:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5542:9;5498:54;;5525:15;5498:54;;5514:9;5498:54;;;;;;;;;;;;5565:60;5580:15;5597:9;5608:16;5565:14;:60::i;:::-;5315:318;;5249:384;;:::o;2860:173:0:-;2916:16;2935:6;;;;;;;;;;;2916:25;;2961:8;2952:6;;:17;;;;;;;;;;;;;;;;;;3016:8;2985:40;;3006:8;2985:40;;;;;;;;;;;;2905:128;2860:173;:::o;4334:494:2:-;4437:1;4418:21;;:7;:21;;;;4410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4490:49;4511:7;4528:1;4532:6;4490:20;:49::i;:::-;4552:22;4577:9;:18;4587:7;4577:18;;;;;;;;;;;;;;;;4552:43;;4632:6;4614:14;:24;;4606:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4726:6;4709:14;:23;;;;:::i;:::-;4688:9;:18;4698:7;4688:18;;;;;;;;;;;;;;;:44;;;;4759:6;4743:12;;:22;;;;;;;:::i;:::-;;;;;;;;4783:37;4792:7;4809:1;4813:6;4783:37;;;;;;;;:::i;:::-;;;;;;;;4399:429;4334:494;;:::o;3775:830:0:-;3900:4;3917:20;3940:4;3917:27;;3962:9;3957:525;3981:5;:12;3977:1;:16;3957:525;;;4015:20;4038:5;4044:1;4038:8;;;;;;;;:::i;:::-;;;;;;;;4015:31;;4083:12;4067;:28;4063:408;;4237:12;4251;4220:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4210:55;;;;;;4195:70;;4063:408;;;4427:12;4441;4410:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4400:55;;;;;;4385:70;;4063:408;4000:482;3995:3;;;;;:::i;:::-;;;;3957:525;;;;4593:4;4577:12;:20;4570:27;;;3775:830;;;;;:::o;7929:153:1:-;7974:4;7991:15;8039:9;8028:20;;8067:7;8060:14;;;7929:153;:::o;5435:92:2:-;;;;:::o;5641:937:1:-;5746:6;5736:16;;:6;:16;;;;:30;;;;;5765:1;5756:6;:10;;;5736:30;5732:839;;;5805:1;5787:20;;:6;:20;;;5783:381;;5828:16;5847:14;:22;5862:6;5847:22;;;;;;;;;;;;;;;;;;;;;;;;;5828:41;;5888:16;5919:1;5907:9;:13;;;:60;;5966:1;5907:60;;;5923:11;:19;5935:6;5923:19;;;;;;;;;;;;;;;:34;5955:1;5943:9;:13;;;;:::i;:::-;5923:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;5907:60;5888:79;;5986:16;6005:67;6011:9;6022:6;6005:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;5986:86;;6091:57;6108:6;6116:9;6127;6138;6091:16;:57::i;:::-;5809:355;;;5783:381;6202:1;6184:20;;:6;:20;;;6180:380;;6225:16;6244:14;:22;6259:6;6244:22;;;;;;;;;;;;;;;;;;;;;;;;;6225:41;;6285:16;6316:1;6304:9;:13;;;:60;;6363:1;6304:60;;;6320:11;:19;6332:6;6320:19;;;;;;;;;;;;;;;:34;6352:1;6340:9;:13;;;;:::i;:::-;6320:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;6304:60;6285:79;;6383:16;6402:66;6408:9;6419:6;6402:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;6383:85;;6487:57;6504:6;6512:9;6523;6534;6487:16;:57::i;:::-;6206:354;;;6180:380;5732:839;5641:937;;;:::o;7756:165::-;7842:6;7874:1;7869:6;;:1;:6;;;;7877:12;7861:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7912:1;7908;:5;;;;:::i;:::-;7901:12;;7756:165;;;;;:::o;6586:628::-;6704:18;6725:75;6732:12;6725:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;6704:96;;6830:1;6815:12;:16;;;:85;;;;;6889:11;6835:65;;:11;:22;6847:9;6835:22;;;;;;;;;;;;;;;:40;6873:1;6858:12;:16;;;;:::i;:::-;6835:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;6815:85;6811:329;;;6964:8;6915:11;:22;6927:9;6915:22;;;;;;;;;;;;;;;:40;6953:1;6938:12;:16;;;;:::i;:::-;6915:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;6811:329;;;7040:33;;;;;;;;7051:11;7040:33;;;;;;7064:8;7040:33;;;;;7001:11;:22;7013:9;7001:22;;;;;;;;;;;;;;;:36;7024:12;7001:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7129:1;7114:12;:16;;;;:::i;:::-;7086:14;:25;7101:9;7086:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;6811:329;7176:9;7155:51;;;7187:8;7197;7155:51;;;;;;;:::i;:::-;;;;;;;;6695:519;6586:628;;;;:::o;7560:188::-;7646:6;7665:8;7680:1;7676;:5;;;;:::i;:::-;7665:16;;7705:1;7700:6;;:1;:6;;;;7708:12;7692:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7739:1;7732:8;;;7560:188;;;;;:::o;7222:161::-;7297:6;7328:5;7324:1;:9;7335:12;7316:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7373:1;7359:16;;7222:161;;;;:::o;24:722:3:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:139::-;1543:5;1581:6;1568:20;1559:29;;1597:33;1624:5;1597:33;:::i;:::-;1497:139;;;;:::o;1659:370::-;1730:5;1779:3;1772:4;1764:6;1760:17;1756:27;1746:122;;1787:79;;:::i;:::-;1746:122;1904:6;1891:20;1929:94;2019:3;2011:6;2004:4;1996:6;1992:17;1929:94;:::i;:::-;1920:103;;1736:293;1659:370;;;;:::o;2052:::-;2123:5;2172:3;2165:4;2157:6;2153:17;2149:27;2139:122;;2180:79;;:::i;:::-;2139:122;2297:6;2284:20;2322:94;2412:3;2404:6;2397:4;2389:6;2385:17;2322:94;:::i;:::-;2313:103;;2129:293;2052:370;;;;:::o;2428:139::-;2474:5;2512:6;2499:20;2490:29;;2528:33;2555:5;2528:33;:::i;:::-;2428:139;;;;:::o;2573:::-;2619:5;2657:6;2644:20;2635:29;;2673:33;2700:5;2673:33;:::i;:::-;2573:139;;;;:::o;2718:137::-;2763:5;2801:6;2788:20;2779:29;;2817:32;2843:5;2817:32;:::i;:::-;2718:137;;;;:::o;2861:135::-;2905:5;2943:6;2930:20;2921:29;;2959:31;2984:5;2959:31;:::i;:::-;2861:135;;;;:::o;3002:329::-;3061:6;3110:2;3098:9;3089:7;3085:23;3081:32;3078:119;;;3116:79;;:::i;:::-;3078:119;3236:1;3261:53;3306:7;3297:6;3286:9;3282:22;3261:53;:::i;:::-;3251:63;;3207:117;3002:329;;;;:::o;3337:474::-;3405:6;3413;3462:2;3450:9;3441:7;3437:23;3433:32;3430:119;;;3468:79;;:::i;:::-;3430:119;3588:1;3613:53;3658:7;3649:6;3638:9;3634:22;3613:53;:::i;:::-;3603:63;;3559:117;3715:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;:::i;:::-;3731:63;;3686:118;3337:474;;;;;:::o;3817:1053::-;3919:6;3927;3935;3943;3951;3959;4008:3;3996:9;3987:7;3983:23;3979:33;3976:120;;;4015:79;;:::i;:::-;3976:120;4135:1;4160:53;4205:7;4196:6;4185:9;4181:22;4160:53;:::i;:::-;4150:63;;4106:117;4262:2;4288:53;4333:7;4324:6;4313:9;4309:22;4288:53;:::i;:::-;4278:63;;4233:118;4390:2;4416:53;4461:7;4452:6;4441:9;4437:22;4416:53;:::i;:::-;4406:63;;4361:118;4518:2;4544:51;4587:7;4578:6;4567:9;4563:22;4544:51;:::i;:::-;4534:61;;4489:116;4644:3;4671:53;4716:7;4707:6;4696:9;4692:22;4671:53;:::i;:::-;4661:63;;4615:119;4773:3;4800:53;4845:7;4836:6;4825:9;4821:22;4800:53;:::i;:::-;4790:63;;4744:119;3817:1053;;;;;;;;:::o;4876:472::-;4943:6;4951;5000:2;4988:9;4979:7;4975:23;4971:32;4968:119;;;5006:79;;:::i;:::-;4968:119;5126:1;5151:53;5196:7;5187:6;5176:9;5172:22;5151:53;:::i;:::-;5141:63;;5097:117;5253:2;5279:52;5323:7;5314:6;5303:9;5299:22;5279:52;:::i;:::-;5269:62;;5224:117;4876:472;;;;;:::o;5354:539::-;5438:6;5487:2;5475:9;5466:7;5462:23;5458:32;5455:119;;;5493:79;;:::i;:::-;5455:119;5641:1;5630:9;5626:17;5613:31;5671:18;5663:6;5660:30;5657:117;;;5693:79;;:::i;:::-;5657:117;5798:78;5868:7;5859:6;5848:9;5844:22;5798:78;:::i;:::-;5788:88;;5584:302;5354:539;;;;:::o;5899:::-;5983:6;6032:2;6020:9;6011:7;6007:23;6003:32;6000:119;;;6038:79;;:::i;:::-;6000:119;6186:1;6175:9;6171:17;6158:31;6216:18;6208:6;6205:30;6202:117;;;6238:79;;:::i;:::-;6202:117;6343:78;6413:7;6404:6;6393:9;6389:22;6343:78;:::i;:::-;6333:88;;6129:302;5899:539;;;;:::o;6444:118::-;6531:24;6549:5;6531:24;:::i;:::-;6526:3;6519:37;6444:118;;:::o;6568:109::-;6649:21;6664:5;6649:21;:::i;:::-;6644:3;6637:34;6568:109;;:::o;6683:118::-;6770:24;6788:5;6770:24;:::i;:::-;6765:3;6758:37;6683:118;;:::o;6807:157::-;6912:45;6932:24;6950:5;6932:24;:::i;:::-;6912:45;:::i;:::-;6907:3;6900:58;6807:157;;:::o;6970:147::-;7065:45;7104:5;7065:45;:::i;:::-;7060:3;7053:58;6970:147;;:::o;7123:364::-;7211:3;7239:39;7272:5;7239:39;:::i;:::-;7294:71;7358:6;7353:3;7294:71;:::i;:::-;7287:78;;7374:52;7419:6;7414:3;7407:4;7400:5;7396:16;7374:52;:::i;:::-;7451:29;7473:6;7451:29;:::i;:::-;7446:3;7442:39;7435:46;;7215:272;7123:364;;;;:::o;7493:366::-;7635:3;7656:67;7720:2;7715:3;7656:67;:::i;:::-;7649:74;;7732:93;7821:3;7732:93;:::i;:::-;7850:2;7845:3;7841:12;7834:19;;7493:366;;;:::o;7865:::-;8007:3;8028:67;8092:2;8087:3;8028:67;:::i;:::-;8021:74;;8104:93;8193:3;8104:93;:::i;:::-;8222:2;8217:3;8213:12;8206:19;;7865:366;;;:::o;8237:::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:400::-;8769:3;8790:84;8872:1;8867:3;8790:84;:::i;:::-;8783:91;;8883:93;8972:3;8883:93;:::i;:::-;9001:1;8996:3;8992:11;8985:18;;8609:400;;;:::o;9015:366::-;9157:3;9178:67;9242:2;9237:3;9178:67;:::i;:::-;9171:74;;9254:93;9343:3;9254:93;:::i;:::-;9372:2;9367:3;9363:12;9356:19;;9015:366;;;:::o;9387:::-;9529:3;9550:67;9614:2;9609:3;9550:67;:::i;:::-;9543:74;;9626:93;9715:3;9626:93;:::i;:::-;9744:2;9739:3;9735:12;9728:19;;9387:366;;;:::o;9759:::-;9901:3;9922:67;9986:2;9981:3;9922:67;:::i;:::-;9915:74;;9998:93;10087:3;9998:93;:::i;:::-;10116:2;10111:3;10107:12;10100:19;;9759:366;;;:::o;10131:::-;10273:3;10294:67;10358:2;10353:3;10294:67;:::i;:::-;10287:74;;10370:93;10459:3;10370:93;:::i;:::-;10488:2;10483:3;10479:12;10472:19;;10131:366;;;:::o;10503:::-;10645:3;10666:67;10730:2;10725:3;10666:67;:::i;:::-;10659:74;;10742:93;10831:3;10742:93;:::i;:::-;10860:2;10855:3;10851:12;10844:19;;10503:366;;;:::o;10875:::-;11017:3;11038:67;11102:2;11097:3;11038:67;:::i;:::-;11031:74;;11114:93;11203:3;11114:93;:::i;:::-;11232:2;11227:3;11223:12;11216:19;;10875:366;;;:::o;11247:::-;11389:3;11410:67;11474:2;11469:3;11410:67;:::i;:::-;11403:74;;11486:93;11575:3;11486:93;:::i;:::-;11604:2;11599:3;11595:12;11588:19;;11247:366;;;:::o;11619:::-;11761:3;11782:67;11846:2;11841:3;11782:67;:::i;:::-;11775:74;;11858:93;11947:3;11858:93;:::i;:::-;11976:2;11971:3;11967:12;11960:19;;11619:366;;;:::o;11991:::-;12133:3;12154:67;12218:2;12213:3;12154:67;:::i;:::-;12147:74;;12230:93;12319:3;12230:93;:::i;:::-;12348:2;12343:3;12339:12;12332:19;;11991:366;;;:::o;12363:::-;12505:3;12526:67;12590:2;12585:3;12526:67;:::i;:::-;12519:74;;12602:93;12691:3;12602:93;:::i;:::-;12720:2;12715:3;12711:12;12704:19;;12363:366;;;:::o;12735:::-;12877:3;12898:67;12962:2;12957:3;12898:67;:::i;:::-;12891:74;;12974:93;13063:3;12974:93;:::i;:::-;13092:2;13087:3;13083:12;13076:19;;12735:366;;;:::o;13107:::-;13249:3;13270:67;13334:2;13329:3;13270:67;:::i;:::-;13263:74;;13346:93;13435:3;13346:93;:::i;:::-;13464:2;13459:3;13455:12;13448:19;;13107:366;;;:::o;13479:118::-;13566:24;13584:5;13566:24;:::i;:::-;13561:3;13554:37;13479:118;;:::o;13603:115::-;13688:23;13705:5;13688:23;:::i;:::-;13683:3;13676:36;13603:115;;:::o;13724:112::-;13807:22;13823:5;13807:22;:::i;:::-;13802:3;13795:35;13724:112;;:::o;13842:129::-;13928:36;13958:5;13928:36;:::i;:::-;13923:3;13916:49;13842:129;;:::o;13977:115::-;14062:23;14079:5;14062:23;:::i;:::-;14057:3;14050:36;13977:115;;:::o;14098:397::-;14238:3;14253:75;14324:3;14315:6;14253:75;:::i;:::-;14353:2;14348:3;14344:12;14337:19;;14366:75;14437:3;14428:6;14366:75;:::i;:::-;14466:2;14461:3;14457:12;14450:19;;14486:3;14479:10;;14098:397;;;;;:::o;14501:663::-;14742:3;14764:148;14908:3;14764:148;:::i;:::-;14757:155;;14922:75;14993:3;14984:6;14922:75;:::i;:::-;15022:2;15017:3;15013:12;15006:19;;15035:75;15106:3;15097:6;15035:75;:::i;:::-;15135:2;15130:3;15126:12;15119:19;;15155:3;15148:10;;14501:663;;;;;:::o;15170:222::-;15263:4;15301:2;15290:9;15286:18;15278:26;;15314:71;15382:1;15371:9;15367:17;15358:6;15314:71;:::i;:::-;15170:222;;;;:::o;15398:458::-;15555:4;15593:2;15582:9;15578:18;15570:26;;15606:71;15674:1;15663:9;15659:17;15650:6;15606:71;:::i;:::-;15687:72;15755:2;15744:9;15740:18;15731:6;15687:72;:::i;:::-;15769:80;15845:2;15834:9;15830:18;15821:6;15769:80;:::i;:::-;15398:458;;;;;;:::o;15862:442::-;16011:4;16049:2;16038:9;16034:18;16026:26;;16062:71;16130:1;16119:9;16115:17;16106:6;16062:71;:::i;:::-;16143:72;16211:2;16200:9;16196:18;16187:6;16143:72;:::i;:::-;16225;16293:2;16282:9;16278:18;16269:6;16225:72;:::i;:::-;15862:442;;;;;;:::o;16310:210::-;16397:4;16435:2;16424:9;16420:18;16412:26;;16448:65;16510:1;16499:9;16495:17;16486:6;16448:65;:::i;:::-;16310:210;;;;:::o;16526:222::-;16619:4;16657:2;16646:9;16642:18;16634:26;;16670:71;16738:1;16727:9;16723:17;16714:6;16670:71;:::i;:::-;16526:222;;;;:::o;16754:553::-;16931:4;16969:3;16958:9;16954:19;16946:27;;16983:71;17051:1;17040:9;17036:17;17027:6;16983:71;:::i;:::-;17064:72;17132:2;17121:9;17117:18;17108:6;17064:72;:::i;:::-;17146;17214:2;17203:9;17199:18;17190:6;17146:72;:::i;:::-;17228;17296:2;17285:9;17281:18;17272:6;17228:72;:::i;:::-;16754:553;;;;;;;:::o;17313:::-;17490:4;17528:3;17517:9;17513:19;17505:27;;17542:71;17610:1;17599:9;17595:17;17586:6;17542:71;:::i;:::-;17623:72;17691:2;17680:9;17676:18;17667:6;17623:72;:::i;:::-;17705;17773:2;17762:9;17758:18;17749:6;17705:72;:::i;:::-;17787;17855:2;17844:9;17840:18;17831:6;17787:72;:::i;:::-;17313:553;;;;;;;:::o;17872:545::-;18045:4;18083:3;18072:9;18068:19;18060:27;;18097:71;18165:1;18154:9;18150:17;18141:6;18097:71;:::i;:::-;18178:68;18242:2;18231:9;18227:18;18218:6;18178:68;:::i;:::-;18256:72;18324:2;18313:9;18309:18;18300:6;18256:72;:::i;:::-;18338;18406:2;18395:9;18391:18;18382:6;18338:72;:::i;:::-;17872:545;;;;;;;:::o;18423:313::-;18536:4;18574:2;18563:9;18559:18;18551:26;;18623:9;18617:4;18613:20;18609:1;18598:9;18594:17;18587:47;18651:78;18724:4;18715:6;18651:78;:::i;:::-;18643:86;;18423:313;;;;:::o;18742:419::-;18908:4;18946:2;18935:9;18931:18;18923:26;;18995:9;18989:4;18985:20;18981:1;18970:9;18966:17;18959:47;19023:131;19149:4;19023:131;:::i;:::-;19015:139;;18742:419;;;:::o;19167:::-;19333:4;19371:2;19360:9;19356:18;19348:26;;19420:9;19414:4;19410:20;19406:1;19395:9;19391:17;19384:47;19448:131;19574:4;19448:131;:::i;:::-;19440:139;;19167:419;;;:::o;19592:::-;19758:4;19796:2;19785:9;19781:18;19773:26;;19845:9;19839:4;19835:20;19831:1;19820:9;19816:17;19809:47;19873:131;19999:4;19873:131;:::i;:::-;19865:139;;19592:419;;;:::o;20017:::-;20183:4;20221:2;20210:9;20206:18;20198:26;;20270:9;20264:4;20260:20;20256:1;20245:9;20241:17;20234:47;20298:131;20424:4;20298:131;:::i;:::-;20290:139;;20017:419;;;:::o;20442:::-;20608:4;20646:2;20635:9;20631:18;20623:26;;20695:9;20689:4;20685:20;20681:1;20670:9;20666:17;20659:47;20723:131;20849:4;20723:131;:::i;:::-;20715:139;;20442:419;;;:::o;20867:::-;21033:4;21071:2;21060:9;21056:18;21048:26;;21120:9;21114:4;21110:20;21106:1;21095:9;21091:17;21084:47;21148:131;21274:4;21148:131;:::i;:::-;21140:139;;20867:419;;;:::o;21292:::-;21458:4;21496:2;21485:9;21481:18;21473:26;;21545:9;21539:4;21535:20;21531:1;21520:9;21516:17;21509:47;21573:131;21699:4;21573:131;:::i;:::-;21565:139;;21292:419;;;:::o;21717:::-;21883:4;21921:2;21910:9;21906:18;21898:26;;21970:9;21964:4;21960:20;21956:1;21945:9;21941:17;21934:47;21998:131;22124:4;21998:131;:::i;:::-;21990:139;;21717:419;;;:::o;22142:::-;22308:4;22346:2;22335:9;22331:18;22323:26;;22395:9;22389:4;22385:20;22381:1;22370:9;22366:17;22359:47;22423:131;22549:4;22423:131;:::i;:::-;22415:139;;22142:419;;;:::o;22567:::-;22733:4;22771:2;22760:9;22756:18;22748:26;;22820:9;22814:4;22810:20;22806:1;22795:9;22791:17;22784:47;22848:131;22974:4;22848:131;:::i;:::-;22840:139;;22567:419;;;:::o;22992:::-;23158:4;23196:2;23185:9;23181:18;23173:26;;23245:9;23239:4;23235:20;23231:1;23220:9;23216:17;23209:47;23273:131;23399:4;23273:131;:::i;:::-;23265:139;;22992:419;;;:::o;23417:::-;23583:4;23621:2;23610:9;23606:18;23598:26;;23670:9;23664:4;23660:20;23656:1;23645:9;23641:17;23634:47;23698:131;23824:4;23698:131;:::i;:::-;23690:139;;23417:419;;;:::o;23842:::-;24008:4;24046:2;24035:9;24031:18;24023:26;;24095:9;24089:4;24085:20;24081:1;24070:9;24066:17;24059:47;24123:131;24249:4;24123:131;:::i;:::-;24115:139;;23842:419;;;:::o;24267:::-;24433:4;24471:2;24460:9;24456:18;24448:26;;24520:9;24514:4;24510:20;24506:1;24495:9;24491:17;24484:47;24548:131;24674:4;24548:131;:::i;:::-;24540:139;;24267:419;;;:::o;24692:::-;24858:4;24896:2;24885:9;24881:18;24873:26;;24945:9;24939:4;24935:20;24931:1;24920:9;24916:17;24909:47;24973:131;25099:4;24973:131;:::i;:::-;24965:139;;24692:419;;;:::o;25117:222::-;25210:4;25248:2;25237:9;25233:18;25225:26;;25261:71;25329:1;25318:9;25314:17;25305:6;25261:71;:::i;:::-;25117:222;;;;:::o;25345:218::-;25436:4;25474:2;25463:9;25459:18;25451:26;;25487:69;25553:1;25542:9;25538:17;25529:6;25487:69;:::i;:::-;25345:218;;;;:::o;25569:324::-;25686:4;25724:2;25713:9;25709:18;25701:26;;25737:69;25803:1;25792:9;25788:17;25779:6;25737:69;:::i;:::-;25816:70;25882:2;25871:9;25867:18;25858:6;25816:70;:::i;:::-;25569:324;;;;;:::o;25899:214::-;25988:4;26026:2;26015:9;26011:18;26003:26;;26039:67;26103:1;26092:9;26088:17;26079:6;26039:67;:::i;:::-;25899:214;;;;:::o;26119:218::-;26210:4;26248:2;26237:9;26233:18;26225:26;;26261:69;26327:1;26316:9;26312:17;26303:6;26261:69;:::i;:::-;26119:218;;;;:::o;26343:328::-;26462:4;26500:2;26489:9;26485:18;26477:26;;26513:70;26580:1;26569:9;26565:17;26556:6;26513:70;:::i;:::-;26593:71;26660:2;26649:9;26645:18;26636:6;26593:71;:::i;:::-;26343:328;;;;;:::o;26677:129::-;26711:6;26738:20;;:::i;:::-;26728:30;;26767:33;26795:4;26787:6;26767:33;:::i;:::-;26677:129;;;:::o;26812:75::-;26845:6;26878:2;26872:9;26862:19;;26812:75;:::o;26893:311::-;26970:4;27060:18;27052:6;27049:30;27046:56;;;27082:18;;:::i;:::-;27046:56;27132:4;27124:6;27120:17;27112:25;;27192:4;27186;27182:15;27174:23;;26893:311;;;:::o;27210:::-;27287:4;27377:18;27369:6;27366:30;27363:56;;;27399:18;;:::i;:::-;27363:56;27449:4;27441:6;27437:17;27429:25;;27509:4;27503;27499:15;27491:23;;27210:311;;;:::o;27527:99::-;27579:6;27613:5;27607:12;27597:22;;27527:99;;;:::o;27632:169::-;27716:11;27750:6;27745:3;27738:19;27790:4;27785:3;27781:14;27766:29;;27632:169;;;;:::o;27807:148::-;27909:11;27946:3;27931:18;;27807:148;;;;:::o;27961:305::-;28001:3;28020:20;28038:1;28020:20;:::i;:::-;28015:25;;28054:20;28072:1;28054:20;:::i;:::-;28049:25;;28208:1;28140:66;28136:74;28133:1;28130:81;28127:107;;;28214:18;;:::i;:::-;28127:107;28258:1;28255;28251:9;28244:16;;27961:305;;;;:::o;28272:246::-;28311:3;28330:19;28347:1;28330:19;:::i;:::-;28325:24;;28363:19;28380:1;28363:19;:::i;:::-;28358:24;;28460:1;28448:10;28444:18;28441:1;28438:25;28435:51;;;28466:18;;:::i;:::-;28435:51;28510:1;28507;28503:9;28496:16;;28272:246;;;;:::o;28524:262::-;28563:3;28582:19;28599:1;28582:19;:::i;:::-;28577:24;;28615:19;28632:1;28615:19;:::i;:::-;28610:24;;28728:1;28700:26;28696:34;28693:1;28690:41;28687:67;;;28734:18;;:::i;:::-;28687:67;28778:1;28775;28771:9;28764:16;;28524:262;;;;:::o;28792:182::-;28831:1;28848:19;28865:1;28848:19;:::i;:::-;28843:24;;28881:19;28898:1;28881:19;:::i;:::-;28876:24;;28919:1;28909:35;;28924:18;;:::i;:::-;28909:35;28966:1;28963;28959:9;28954:14;;28792:182;;;;:::o;28980:191::-;29020:4;29040:20;29058:1;29040:20;:::i;:::-;29035:25;;29074:20;29092:1;29074:20;:::i;:::-;29069:25;;29113:1;29110;29107:8;29104:34;;;29118:18;;:::i;:::-;29104:34;29163:1;29160;29156:9;29148:17;;28980:191;;;;:::o;29177:188::-;29216:4;29236:19;29253:1;29236:19;:::i;:::-;29231:24;;29269:19;29286:1;29269:19;:::i;:::-;29264:24;;29307:1;29304;29301:8;29298:34;;;29312:18;;:::i;:::-;29298:34;29357:1;29354;29350:9;29342:17;;29177:188;;;;:::o;29371:::-;29410:4;29430:19;29447:1;29430:19;:::i;:::-;29425:24;;29463:19;29480:1;29463:19;:::i;:::-;29458:24;;29501:1;29498;29495:8;29492:34;;;29506:18;;:::i;:::-;29492:34;29551:1;29548;29544:9;29536:17;;29371:188;;;;:::o;29565:96::-;29602:7;29631:24;29649:5;29631:24;:::i;:::-;29620:35;;29565:96;;;:::o;29667:90::-;29701:7;29744:5;29737:13;29730:21;29719:32;;29667:90;;;:::o;29763:77::-;29800:7;29829:5;29818:16;;29763:77;;;:::o;29846:126::-;29883:7;29923:42;29916:5;29912:54;29901:65;;29846:126;;;:::o;29978:77::-;30015:7;30044:5;30033:16;;29978:77;;;:::o;30061:93::-;30097:7;30137:10;30130:5;30126:22;30115:33;;30061:93;;;:::o;30160:86::-;30195:7;30235:4;30228:5;30224:16;30213:27;;30160:86;;;:::o;30252:109::-;30288:7;30328:26;30321:5;30317:38;30306:49;;30252:109;;;:::o;30367:121::-;30425:9;30458:24;30476:5;30458:24;:::i;:::-;30445:37;;30367:121;;;:::o;30494:111::-;30543:9;30576:23;30593:5;30576:23;:::i;:::-;30563:36;;30494:111;;;:::o;30611:307::-;30679:1;30689:113;30703:6;30700:1;30697:13;30689:113;;;30788:1;30783:3;30779:11;30773:18;30769:1;30764:3;30760:11;30753:39;30725:2;30722:1;30718:10;30713:15;;30689:113;;;30820:6;30817:1;30814:13;30811:101;;;30900:1;30891:6;30886:3;30882:16;30875:27;30811:101;30660:258;30611:307;;;:::o;30924:320::-;30968:6;31005:1;30999:4;30995:12;30985:22;;31052:1;31046:4;31042:12;31073:18;31063:81;;31129:4;31121:6;31117:17;31107:27;;31063:81;31191:2;31183:6;31180:14;31160:18;31157:38;31154:84;;;31210:18;;:::i;:::-;31154:84;30975:269;30924:320;;;:::o;31250:281::-;31333:27;31355:4;31333:27;:::i;:::-;31325:6;31321:40;31463:6;31451:10;31448:22;31427:18;31415:10;31412:34;31409:62;31406:88;;;31474:18;;:::i;:::-;31406:88;31514:10;31510:2;31503:22;31293:238;31250:281;;:::o;31537:233::-;31576:3;31599:24;31617:5;31599:24;:::i;:::-;31590:33;;31645:66;31638:5;31635:77;31632:103;;;31715:18;;:::i;:::-;31632:103;31762:1;31755:5;31751:13;31744:20;;31537:233;;;:::o;31776:79::-;31815:7;31844:5;31833:16;;31776:79;;;:::o;31861:180::-;31909:77;31906:1;31899:88;32006:4;32003:1;31996:15;32030:4;32027:1;32020:15;32047:180;32095:77;32092:1;32085:88;32192:4;32189:1;32182:15;32216:4;32213:1;32206:15;32233:180;32281:77;32278:1;32271:88;32378:4;32375:1;32368:15;32402:4;32399:1;32392:15;32419:180;32467:77;32464:1;32457:88;32564:4;32561:1;32554:15;32588:4;32585:1;32578:15;32605:180;32653:77;32650:1;32643:88;32750:4;32747:1;32740:15;32774:4;32771:1;32764:15;32791:117;32900:1;32897;32890:12;32914:117;33023:1;33020;33013:12;33037:117;33146:1;33143;33136:12;33160:117;33269:1;33266;33259:12;33283:102;33324:6;33375:2;33371:7;33366:2;33359:5;33355:14;33351:28;33341:38;;33283:102;;;:::o;33391:221::-;33531:34;33527:1;33519:6;33515:14;33508:58;33600:4;33595:2;33587:6;33583:15;33576:29;33391:221;:::o;33618:180::-;33758:32;33754:1;33746:6;33742:14;33735:56;33618:180;:::o;33804:225::-;33944:34;33940:1;33932:6;33928:14;33921:58;34013:8;34008:2;34000:6;33996:15;33989:33;33804:225;:::o;34035:214::-;34175:66;34171:1;34163:6;34159:14;34152:90;34035:214;:::o;34255:224::-;34395:34;34391:1;34383:6;34379:14;34372:58;34464:7;34459:2;34451:6;34447:15;34440:32;34255:224;:::o;34485:220::-;34625:34;34621:1;34613:6;34609:14;34602:58;34694:3;34689:2;34681:6;34677:15;34670:28;34485:220;:::o;34711:180::-;34851:32;34847:1;34839:6;34835:14;34828:56;34711:180;:::o;34897:224::-;35037:34;35033:1;35025:6;35021:14;35014:58;35106:7;35101:2;35093:6;35089:15;35082:32;34897:224;:::o;35127:225::-;35267:34;35263:1;35255:6;35251:14;35244:58;35336:8;35331:2;35323:6;35319:15;35312:33;35127:225;:::o;35358:176::-;35498:28;35494:1;35486:6;35482:14;35475:52;35358:176;:::o;35540:182::-;35680:34;35676:1;35668:6;35664:14;35657:58;35540:182;:::o;35728:220::-;35868:34;35864:1;35856:6;35852:14;35845:58;35937:3;35932:2;35924:6;35920:15;35913:28;35728:220;:::o;35954:234::-;36094:34;36090:1;36082:6;36078:14;36071:58;36163:17;36158:2;36150:6;36146:15;36139:42;35954:234;:::o;36194:224::-;36334:34;36330:1;36322:6;36318:14;36311:58;36403:7;36398:2;36390:6;36386:15;36379:32;36194:224;:::o;36424:180::-;36564:32;36560:1;36552:6;36548:14;36541:56;36424:180;:::o;36610:181::-;36750:33;36746:1;36738:6;36734:14;36727:57;36610:181;:::o;36797:122::-;36870:24;36888:5;36870:24;:::i;:::-;36863:5;36860:35;36850:63;;36909:1;36906;36899:12;36850:63;36797:122;:::o;36925:::-;36998:24;37016:5;36998:24;:::i;:::-;36991:5;36988:35;36978:63;;37037:1;37034;37027:12;36978:63;36925:122;:::o;37053:::-;37126:24;37144:5;37126:24;:::i;:::-;37119:5;37116:35;37106:63;;37165:1;37162;37155:12;37106:63;37053:122;:::o;37181:120::-;37253:23;37270:5;37253:23;:::i;:::-;37246:5;37243:34;37233:62;;37291:1;37288;37281:12;37233:62;37181:120;:::o;37307:118::-;37378:22;37394:5;37378:22;:::i;:::-;37371:5;37368:33;37358:61;;37415:1;37412;37405:12;37358:61;37307:118;:::o
Swarm Source
ipfs://3a385192fed2fabf9b5614f5ea1f795c2abd03cee8961473d583b5aa8c1d90e9
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.