Contract
0xdd4f6ab1a398e4aedc3cd9aed3fd389f697e15e3
3
Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
EvoxCapital
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-02-12 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.8.0; interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping (uint256 => address) private _owners; // Mapping owner address to token count mapping (address => uint256) private _balances; // Mapping from token ID to approved address mapping (uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } /** * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden * in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom(address from, address to, uint256 tokenId) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); _transfer(from, to, tokenId); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); _mint(to, tokenId); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { // solhint-disable-next-line no-inline-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } } // <3 pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; uint256 public newTokenId; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } pragma solidity ^0.8.0; contract EvoxCapital is Ownable, ERC721Enumerable, ReentrancyGuard { using Strings for uint256; uint256 public maxNFT = 10000; uint256 public minPrice = 2*(10**18); uint256 public maxPrice = 100 * (10**18); address payable private manager; constructor() ERC721("EvoxCapital", "EvoxCapital") {manager = payable(msg.sender);} receive() external payable nonReentrant() { if(msg.sender != manager) { if(msg.value >= minPrice && msg.value <= maxPrice) { //you can use == if you wanna stable nft price! for (uint256 i = 0; i < msg.value/(2*(10**18)); i++) { if(totalSupply() + 1 <= maxNFT) { newTokenId += 1; _safeMint(msg.sender, newTokenId); uint balance = address(this).balance; payable(manager).transfer(balance); } else {revert();} } } else {revert();} } } function fmint() public onlyOwner() { for (uint256 i = 0; i < 50; i++) { if(totalSupply() + 1 <= maxNFT) { newTokenId += 1; _safeMint(msg.sender, newTokenId); uint balance = address(this).balance; payable(manager).transfer(balance); } else {revert();} } } function getNFTzBelongingToOwner(address _owner) external view returns (uint256[] memory) { uint256 numNFT = balanceOf(_owner); if (numNFT == 0) { return new uint256[](0); } else { uint256[] memory result = new uint256[](numNFT); for (uint256 i = 0; i < numNFT; i++) { result[i] = tokenOfOwnerByIndex(_owner, i); } return result; } } string private _baseTokenURI = 'https://gateway.pinata.cloud/ipfs/QmTLP9BAZEL91XTGY4J4yuhLTSB7uTSLoM4Xy7Ep4GgDKd/new.json'; function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function tokenURI(uint256 _tokenId) public view override returns (string memory) { string memory base = _baseTokenURI; string memory _tokenURI = Strings.toString(_tokenId); //string memory ending = ".json"; // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } return string(abi.encodePacked(base)); } function setPrice(uint256 newPrice) public onlyOwner() { minPrice = newPrice; } function setBaseURI(string memory baseURI) external onlyOwner() { _baseTokenURI = baseURI; } function withdraw(uint256 _wamount) public onlyOwner() { //uint balance = address(this).balance; <- this code lines calculate all amount of contract and send this amount entirely to manager payable(msg.sender).transfer(_wamount); } function getEthBalance() public view returns(uint) { return address(this).balance; } function depositer() public payable returns(uint256){ require(msg.sender == manager,"only manager can reach here"); return address(this).balance; } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override(ERC721Enumerable) { super._beforeTokenTransfer(from, to, tokenId); } function batchTransfer(address recipient, uint[] memory tokenIds) public { for (uint256 index; index < tokenIds.length; index++) { transferFrom(msg.sender, recipient, tokenIds[index]); } } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"fmint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getNFTzBelongingToOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wamount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052612710600d55671bc16d674ec80000600e5568056bc75e2d63100000600f55604051806080016040528060598152602001620044fb6059913960119080519060200190620000549291906200020a565b503480156200006257600080fd5b506040518060400160405280600b81526020017f45766f784361706974616c0000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f45766f784361706974616c0000000000000000000000000000000000000000008152506000620000e16200020260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160019080519060200190620001979291906200020a565b508060029080519060200190620001b09291906200020a565b5050506001600c8190555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200031f565b600033905090565b8280546200021890620002ba565b90600052602060002090601f0160209004810192826200023c576000855562000288565b82601f106200025757805160ff191683800117855562000288565b8280016001018555821562000288579182015b82811115620002875782518255916020019190600101906200026a565b5b5090506200029791906200029b565b5090565b5b80821115620002b65760008160009055506001016200029c565b5090565b60006002820490506001821680620002d357607f821691505b60208210811415620002ea57620002e9620002f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6141cc806200032f6000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063b88d4fde11610095578063e45be8eb11610064578063e45be8eb14610864578063e985e9c51461088f578063f2fde38b146108cc578063fd6cba46146108f55761039f565b8063b88d4fde146107a8578063c87b56dd146107d1578063e38d6b5c1461080e578063e456b01c146108395761039f565b806391b7f5ed116100d157806391b7f5ed1461070257806395d89b411461072b578063a22cb46514610756578063ac3c99521461077f5761039f565b806370a082311461065857806370ed0ada14610695578063715018a6146106c05780638da5cb5b146106d75761039f565b80632c1ba8391161017a57806342842e0e1161014957806342842e0e1461058c5780634f6ccce7146105b557806355f804b3146105f25780636352211e1461061b5761039f565b80632c1ba839146104dd5780632e1a7d4d146104fb5780632f745c5914610524578063340754ed146105615761039f565b8063095ea7b3116101b6578063095ea7b31461044957806318160ddd146104725780631c401b791461049d57806323b872dd146104b45761039f565b806301ffc9a7146103a457806306fdde03146103e1578063081812fc1461040c5761039f565b3661039f576002600c541415610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021e90613745565b60405180910390fd5b6002600c81905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461039557600e5434101580156102985750600f543411155b1561038f5760005b671bc16d674ec80000346102b49190613905565b81101561038957600d5460016102c8610932565b6102d291906138af565b11610371576001600a60008282546102ea91906138af565b925050819055506102fd33600a5461093f565b6000479050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561036a573d6000803e3d6000fd5b5050610376565b600080fd5b808061038190613a83565b9150506102a0565b50610394565b600080fd5b5b6001600c81905550005b600080fd5b3480156103b057600080fd5b506103cb60048036038101906103c69190612f6a565b61095d565b6040516103d891906134c8565b60405180910390f35b3480156103ed57600080fd5b506103f661096f565b60405161040391906134e3565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e919061300d565b610a01565b604051610440919061343f565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612f2a565b610a86565b005b34801561047e57600080fd5b50610487610932565b6040516104949190613765565b60405180910390f35b3480156104a957600080fd5b506104b2610b9e565b005b3480156104c057600080fd5b506104db60048036038101906104d69190612db8565b610cf7565b005b6104e5610d57565b6040516104f29190613765565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061300d565b610def565b005b34801561053057600080fd5b5061054b60048036038101906105469190612f2a565b610eb5565b6040516105589190613765565b60405180910390f35b34801561056d57600080fd5b50610576610f5a565b6040516105839190613765565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190612db8565b610f60565b005b3480156105c157600080fd5b506105dc60048036038101906105d7919061300d565b610f80565b6040516105e99190613765565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190612fc4565b610ff1565b005b34801561062757600080fd5b50610642600480360381019061063d919061300d565b611087565b60405161064f919061343f565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612d4b565b611139565b60405161068c9190613765565b60405180910390f35b3480156106a157600080fd5b506106aa6111f1565b6040516106b79190613765565b60405180910390f35b3480156106cc57600080fd5b506106d56111f9565b005b3480156106e357600080fd5b506106ec611333565b6040516106f9919061343f565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061300d565b61135c565b005b34801561073757600080fd5b506107406113e2565b60405161074d91906134e3565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190612eea565b611474565b005b34801561078b57600080fd5b506107a660048036038101906107a19190612e8e565b6115f5565b005b3480156107b457600080fd5b506107cf60048036038101906107ca9190612e0b565b61163e565b005b3480156107dd57600080fd5b506107f860048036038101906107f3919061300d565b6116a0565b60405161080591906134e3565b60405180910390f35b34801561081a57600080fd5b5061082361177c565b6040516108309190613765565b60405180910390f35b34801561084557600080fd5b5061084e611782565b60405161085b9190613765565b60405180910390f35b34801561087057600080fd5b50610879611788565b6040516108869190613765565b60405180910390f35b34801561089b57600080fd5b506108b660048036038101906108b19190612d78565b61178e565b6040516108c391906134c8565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190612d4b565b611822565b005b34801561090157600080fd5b5061091c60048036038101906109179190612d4b565b6119cb565b60405161092991906134a6565b60405180910390f35b6000600980549050905090565b610959828260405180602001604052806000815250611ad5565b5050565b600061096882611b30565b9050919050565b60606001805461097e90613a20565b80601f01602080910402602001604051908101604052809291908181526020018280546109aa90613a20565b80156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b5050505050905090565b6000610a0c82611baa565b610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290613665565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a9182611087565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af9906136c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b21611c16565b73ffffffffffffffffffffffffffffffffffffffff161480610b505750610b4f81610b4a611c16565b61178e565b5b610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906135e5565b60405180910390fd5b610b998383611c1e565b505050565b610ba6611c16565b73ffffffffffffffffffffffffffffffffffffffff16610bc4611333565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190613685565b60405180910390fd5b60005b6032811015610cf457600d546001610c33610932565b610c3d91906138af565b11610cdc576001600a6000828254610c5591906138af565b92505081905550610c6833600a5461093f565b6000479050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cd5573d6000803e3d6000fd5b5050610ce1565b600080fd5b8080610cec90613a83565b915050610c1d565b50565b610d08610d02611c16565b82611cd7565b610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e906136e5565b60405180910390fd5b610d52838383611db5565b505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de090613725565b60405180910390fd5b47905090565b610df7611c16565b73ffffffffffffffffffffffffffffffffffffffff16610e15611333565b73ffffffffffffffffffffffffffffffffffffffff1614610e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6290613685565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eb1573d6000803e3d6000fd5b5050565b6000610ec083611139565b8210610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890613505565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a5481565b610f7b8383836040518060200160405280600081525061163e565b505050565b6000610f8a610932565b8210610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290613705565b60405180910390fd5b60098281548110610fdf57610fde613bb9565b5b90600052602060002001549050919050565b610ff9611c16565b73ffffffffffffffffffffffffffffffffffffffff16611017611333565b73ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613685565b60405180910390fd5b8060119080519060200190611083929190612ac1565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790613625565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190613605565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600047905090565b611201611c16565b73ffffffffffffffffffffffffffffffffffffffff1661121f611333565b73ffffffffffffffffffffffffffffffffffffffff1614611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90613685565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611364611c16565b73ffffffffffffffffffffffffffffffffffffffff16611382611333565b73ffffffffffffffffffffffffffffffffffffffff16146113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90613685565b60405180910390fd5b80600e8190555050565b6060600280546113f190613a20565b80601f016020809104026020016040519081016040528092919081815260200182805461141d90613a20565b801561146a5780601f1061143f5761010080835404028352916020019161146a565b820191906000526020600020905b81548152906001019060200180831161144d57829003601f168201915b5050505050905090565b61147c611c16565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e1906135a5565b60405180910390fd5b80600660006114f7611c16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115a4611c16565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115e991906134c8565b60405180910390a35050565b60005b815181101561163957611626338484848151811061161957611618613bb9565b5b6020026020010151610cf7565b808061163190613a83565b9150506115f8565b505050565b61164f611649611c16565b83611cd7565b61168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906136e5565b60405180910390fd5b61169a84848484612011565b50505050565b60606000601180546116b190613a20565b80601f01602080910402602001604051908101604052809291908181526020018280546116dd90613a20565b801561172a5780601f106116ff5761010080835404028352916020019161172a565b820191906000526020600020905b81548152906001019060200180831161170d57829003601f168201915b50505050509050600061173c8461206d565b9050600082511415611752578092505050611777565b816040516020016117639190613428565b604051602081830303815290604052925050505b919050565b600f5481565b600d5481565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61182a611c16565b73ffffffffffffffffffffffffffffffffffffffff16611848611333565b73ffffffffffffffffffffffffffffffffffffffff161461189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590613685565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190590613545565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060006119d883611139565b90506000811415611a3557600067ffffffffffffffff8111156119fe576119fd613be8565b5b604051908082528060200260200182016040528015611a2c5781602001602082028036833780820191505090505b50915050611ad0565b60008167ffffffffffffffff811115611a5157611a50613be8565b5b604051908082528060200260200182016040528015611a7f5781602001602082028036833780820191505090505b50905060005b82811015611ac957611a978582610eb5565b828281518110611aaa57611aa9613bb9565b5b6020026020010181815250508080611ac190613a83565b915050611a85565b5080925050505b919050565b611ae260008484846121ce565b611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613525565b60405180910390fd5b611b2b8383612365565b505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ba35750611ba282612533565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611c9183611087565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611ce282611baa565b611d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d18906135c5565b60405180910390fd5b6000611d2c83611087565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d9b57508373ffffffffffffffffffffffffffffffffffffffff16611d8384610a01565b73ffffffffffffffffffffffffffffffffffffffff16145b80611dac5750611dab818561178e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611dd582611087565b73ffffffffffffffffffffffffffffffffffffffff1614611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e22906136a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290613585565b60405180910390fd5b611ea6838383612615565b611eb1600082611c1e565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f019190613936565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f5891906138af565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61201d848484846121ce565b61205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390613525565b60405180910390fd5b612067848484611db5565b50505050565b606060008214156120b5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121c9565b600082905060005b600082146120e75780806120d090613a83565b915050600a826120e09190613905565b91506120bd565b60008167ffffffffffffffff81111561210357612102613be8565b5b6040519080825280601f01601f1916602001820160405280156121355781602001600182028036833780820191505090505b5090505b600085146121c25760018261214e9190613936565b9150600a8561215d9190613acc565b603061216991906138af565b60f81b81838151811061217f5761217e613bb9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121bb9190613905565b9450612139565b8093505050505b919050565b60006121ef8473ffffffffffffffffffffffffffffffffffffffff16612625565b15612358578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612218611c16565b8786866040518563ffffffff1660e01b815260040161223a949392919061345a565b602060405180830381600087803b15801561225457600080fd5b505af192505050801561228557506040513d601f19601f820116820180604052508101906122829190612f97565b60015b612308573d80600081146122b5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ba565b606091505b50600081511415612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790613525565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061235d565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90613645565b60405180910390fd5b6123de81611baa565b1561241e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241590613565565b60405180910390fd5b61242a60008383612615565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461247a91906138af565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806125fe57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061260e575061260d82612638565b5b9050919050565b6126208383836126a2565b505050565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6126ad8383836127b6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f0576126eb816127bb565b61272f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461272e5761272d8382612804565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127725761276d81612971565b6127b1565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146127b0576127af8282612a42565b5b5b505050565b505050565b600980549050600b600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161281184611139565b61281b9190613936565b9050600060086000848152602001908152602001600020549050818114612900576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506129859190613936565b90506000600b60008481526020019081526020016000205490506000600983815481106129b5576129b4613bb9565b5b9060005260206000200154905080600983815481106129d7576129d6613bb9565b5b906000526020600020018190555081600b600083815260200190815260200160002081905550600b6000858152602001908152602001600020600090556009805480612a2657612a25613b8a565b5b6001900381819060005260206000200160009055905550505050565b6000612a4d83611139565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b828054612acd90613a20565b90600052602060002090601f016020900481019282612aef5760008555612b36565b82601f10612b0857805160ff1916838001178555612b36565b82800160010185558215612b36579182015b82811115612b35578251825591602001919060010190612b1a565b5b509050612b439190612b47565b5090565b5b80821115612b60576000816000905550600101612b48565b5090565b6000612b77612b72846137a5565b613780565b90508083825260208201905082856020860282011115612b9a57612b99613c1c565b5b60005b85811015612bca5781612bb08882612d36565b845260208401935060208301925050600181019050612b9d565b5050509392505050565b6000612be7612be2846137d1565b613780565b905082815260208101848484011115612c0357612c02613c21565b5b612c0e8482856139de565b509392505050565b6000612c29612c2484613802565b613780565b905082815260208101848484011115612c4557612c44613c21565b5b612c508482856139de565b509392505050565b600081359050612c678161413a565b92915050565b600082601f830112612c8257612c81613c17565b5b8135612c92848260208601612b64565b91505092915050565b600081359050612caa81614151565b92915050565b600081359050612cbf81614168565b92915050565b600081519050612cd481614168565b92915050565b600082601f830112612cef57612cee613c17565b5b8135612cff848260208601612bd4565b91505092915050565b600082601f830112612d1d57612d1c613c17565b5b8135612d2d848260208601612c16565b91505092915050565b600081359050612d458161417f565b92915050565b600060208284031215612d6157612d60613c2b565b5b6000612d6f84828501612c58565b91505092915050565b60008060408385031215612d8f57612d8e613c2b565b5b6000612d9d85828601612c58565b9250506020612dae85828601612c58565b9150509250929050565b600080600060608486031215612dd157612dd0613c2b565b5b6000612ddf86828701612c58565b9350506020612df086828701612c58565b9250506040612e0186828701612d36565b9150509250925092565b60008060008060808587031215612e2557612e24613c2b565b5b6000612e3387828801612c58565b9450506020612e4487828801612c58565b9350506040612e5587828801612d36565b925050606085013567ffffffffffffffff811115612e7657612e75613c26565b5b612e8287828801612cda565b91505092959194509250565b60008060408385031215612ea557612ea4613c2b565b5b6000612eb385828601612c58565b925050602083013567ffffffffffffffff811115612ed457612ed3613c26565b5b612ee085828601612c6d565b9150509250929050565b60008060408385031215612f0157612f00613c2b565b5b6000612f0f85828601612c58565b9250506020612f2085828601612c9b565b9150509250929050565b60008060408385031215612f4157612f40613c2b565b5b6000612f4f85828601612c58565b9250506020612f6085828601612d36565b9150509250929050565b600060208284031215612f8057612f7f613c2b565b5b6000612f8e84828501612cb0565b91505092915050565b600060208284031215612fad57612fac613c2b565b5b6000612fbb84828501612cc5565b91505092915050565b600060208284031215612fda57612fd9613c2b565b5b600082013567ffffffffffffffff811115612ff857612ff7613c26565b5b61300484828501612d08565b91505092915050565b60006020828403121561302357613022613c2b565b5b600061303184828501612d36565b91505092915050565b6000613046838361340a565b60208301905092915050565b61305b8161396a565b82525050565b600061306c82613843565b6130768185613871565b935061308183613833565b8060005b838110156130b2578151613099888261303a565b97506130a483613864565b925050600181019050613085565b5085935050505092915050565b6130c88161397c565b82525050565b60006130d98261384e565b6130e38185613882565b93506130f38185602086016139ed565b6130fc81613c30565b840191505092915050565b600061311282613859565b61311c8185613893565b935061312c8185602086016139ed565b61313581613c30565b840191505092915050565b600061314b82613859565b61315581856138a4565b93506131658185602086016139ed565b80840191505092915050565b600061317e602b83613893565b915061318982613c41565b604082019050919050565b60006131a1603283613893565b91506131ac82613c90565b604082019050919050565b60006131c4602683613893565b91506131cf82613cdf565b604082019050919050565b60006131e7601c83613893565b91506131f282613d2e565b602082019050919050565b600061320a602483613893565b915061321582613d57565b604082019050919050565b600061322d601983613893565b915061323882613da6565b602082019050919050565b6000613250602c83613893565b915061325b82613dcf565b604082019050919050565b6000613273603883613893565b915061327e82613e1e565b604082019050919050565b6000613296602a83613893565b91506132a182613e6d565b604082019050919050565b60006132b9602983613893565b91506132c482613ebc565b604082019050919050565b60006132dc602083613893565b91506132e782613f0b565b602082019050919050565b60006132ff602c83613893565b915061330a82613f34565b604082019050919050565b6000613322602083613893565b915061332d82613f83565b602082019050919050565b6000613345602983613893565b915061335082613fac565b604082019050919050565b6000613368602183613893565b915061337382613ffb565b604082019050919050565b600061338b603183613893565b91506133968261404a565b604082019050919050565b60006133ae602c83613893565b91506133b982614099565b604082019050919050565b60006133d1601c83613893565b91506133dc826140e8565b602082019050919050565b60006133f4601f83613893565b91506133ff82614111565b602082019050919050565b613413816139d4565b82525050565b613422816139d4565b82525050565b60006134348284613140565b915081905092915050565b60006020820190506134546000830184613052565b92915050565b600060808201905061346f6000830187613052565b61347c6020830186613052565b6134896040830185613419565b818103606083015261349b81846130ce565b905095945050505050565b600060208201905081810360008301526134c08184613061565b905092915050565b60006020820190506134dd60008301846130bf565b92915050565b600060208201905081810360008301526134fd8184613107565b905092915050565b6000602082019050818103600083015261351e81613171565b9050919050565b6000602082019050818103600083015261353e81613194565b9050919050565b6000602082019050818103600083015261355e816131b7565b9050919050565b6000602082019050818103600083015261357e816131da565b9050919050565b6000602082019050818103600083015261359e816131fd565b9050919050565b600060208201905081810360008301526135be81613220565b9050919050565b600060208201905081810360008301526135de81613243565b9050919050565b600060208201905081810360008301526135fe81613266565b9050919050565b6000602082019050818103600083015261361e81613289565b9050919050565b6000602082019050818103600083015261363e816132ac565b9050919050565b6000602082019050818103600083015261365e816132cf565b9050919050565b6000602082019050818103600083015261367e816132f2565b9050919050565b6000602082019050818103600083015261369e81613315565b9050919050565b600060208201905081810360008301526136be81613338565b9050919050565b600060208201905081810360008301526136de8161335b565b9050919050565b600060208201905081810360008301526136fe8161337e565b9050919050565b6000602082019050818103600083015261371e816133a1565b9050919050565b6000602082019050818103600083015261373e816133c4565b9050919050565b6000602082019050818103600083015261375e816133e7565b9050919050565b600060208201905061377a6000830184613419565b92915050565b600061378a61379b565b90506137968282613a52565b919050565b6000604051905090565b600067ffffffffffffffff8211156137c0576137bf613be8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156137ec576137eb613be8565b5b6137f582613c30565b9050602081019050919050565b600067ffffffffffffffff82111561381d5761381c613be8565b5b61382682613c30565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006138ba826139d4565b91506138c5836139d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138fa576138f9613afd565b5b828201905092915050565b6000613910826139d4565b915061391b836139d4565b92508261392b5761392a613b2c565b5b828204905092915050565b6000613941826139d4565b915061394c836139d4565b92508282101561395f5761395e613afd565b5b828203905092915050565b6000613975826139b4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613a0b5780820151818401526020810190506139f0565b83811115613a1a576000848401525b50505050565b60006002820490506001821680613a3857607f821691505b60208210811415613a4c57613a4b613b5b565b5b50919050565b613a5b82613c30565b810181811067ffffffffffffffff82111715613a7a57613a79613be8565b5b80604052505050565b6000613a8e826139d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ac157613ac0613afd565b5b600182019050919050565b6000613ad7826139d4565b9150613ae2836139d4565b925082613af257613af1613b2c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f6f6e6c79206d616e616765722063616e20726561636820206865726500000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6141438161396a565b811461414e57600080fd5b50565b61415a8161397c565b811461416557600080fd5b50565b61417181613988565b811461417c57600080fd5b50565b614188816139d4565b811461419357600080fd5b5056fea2646970667358221220762b82c0e26b16afd38abc0e675f35bcfab9c720c44d794318dbeec82ae56e7a64736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d544c503942415a454c393158544759344a347975684c545342377554534c6f4d345879374570344767444b642f6e65772e6a736f6e
Deployed ByteCode Sourcemap
43446:3798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20750:1;21347:7;;:19;;21339:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20750:1;21480:7;:18;;;;43870:7:::1;;;;;;;;;;;43856:21;;:10;:21;;;43853:552;;43911:8;;43898:9;:21;;:46;;;;;43936:8;;43923:9;:21;;43898:46;43895:500;;;44014:9;44009:355;44044:10;44033:9;:22;;;;:::i;:::-;44029:1;:26;44009:355;;;44106:6;;44101:1;44085:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:27;44082:263;;44147:1;44133:10;;:15;;;;;;;:::i;:::-;;;;;;;;44167:33;44177:10;44189;;44167:9;:33::i;:::-;44219:12;44234:21;44219:36;;44282:7;;;;;;;;;;;44274:25;;:34;44300:7;44274:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;44114:214;44082:263;;;44335:8;::::0;::::1;44082:263;44057:3;;;;;:::i;:::-;;;;44009:355;;;;43895:500;;;44385:8;::::0;::::1;43895:500;43853:552;20706:1:::0;21659:7;:22;;;;43446:3798;;;;;47048:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25900:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27360:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26897:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37941:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44424:339;;;;;;;;;;;;;:::i;:::-;;28250:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46447:162;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46089:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37609:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37065:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28626:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38131:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45983:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25594:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25324:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46347:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18518:148;;;;;;;;;;;;;:::i;:::-;;17867:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45890;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26069:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27653:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46818:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28848:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45438:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43626:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43550:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43584:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28019:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18821:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44769:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37941:113;38002:7;38029:10;:17;;;;38022:24;;37941:113;:::o;31584:110::-;31660:26;31670:2;31674:7;31660:26;;;;;;;;;;;;:9;:26::i;:::-;31584:110;;:::o;47048:193::-;47176:4;47199:36;47223:11;47199:23;:36::i;:::-;47192:43;;47048:193;;;:::o;25900:100::-;25954:13;25987:5;25980:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25900:100;:::o;27360:221::-;27436:7;27464:16;27472:7;27464;:16::i;:::-;27456:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27549:15;:24;27565:7;27549:24;;;;;;;;;;;;;;;;;;;;;27542:31;;27360:221;;;:::o;26897:397::-;26978:13;26994:23;27009:7;26994:14;:23::i;:::-;26978:39;;27042:5;27036:11;;:2;:11;;;;27028:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27122:5;27106:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27131:37;27148:5;27155:12;:10;:12::i;:::-;27131:16;:37::i;:::-;27106:62;27098:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27265:21;27274:2;27278:7;27265:8;:21::i;:::-;26967:327;26897:397;;:::o;44424:339::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44474:9:::1;44469:287;44493:2;44489:1;:6;44469:287;;;44538:6;;44533:1;44517:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:27;44514:233;;44573:1;44559:10;;:15;;;;;;;:::i;:::-;;;;;;;;44587:33;44597:10;44609;;44587:9;:33::i;:::-;44633:12;44648:21;44633:36;;44690:7;;;;;;;;;;;44682:25;;:34;44708:7;44682:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;44546:184;44514:233;;;44737:8;::::0;::::1;44514:233;44497:3;;;;;:::i;:::-;;;;44469:287;;;;44424:339::o:0;28250:305::-;28411:41;28430:12;:10;:12::i;:::-;28444:7;28411:18;:41::i;:::-;28403:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;28519:28;28529:4;28535:2;28539:7;28519:9;:28::i;:::-;28250:305;;;:::o;46447:162::-;46491:7;46529;;;;;;;;;;;46515:21;;:10;:21;;;46507:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;46582:21;46575:28;;46447:162;:::o;46089:244::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46297:10:::1;46289:28;;:38;46318:8;46289:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;46089:244:::0;:::o;37609:256::-;37706:7;37742:23;37759:5;37742:16;:23::i;:::-;37734:5;:31;37726:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;37831:12;:19;37844:5;37831:19;;;;;;;;;;;;;;;:26;37851:5;37831:26;;;;;;;;;;;;37824:33;;37609:256;;;;:::o;37065:25::-;;;;:::o;28626:151::-;28730:39;28747:4;28753:2;28757:7;28730:39;;;;;;;;;;;;:16;:39::i;:::-;28626:151;;;:::o;38131:233::-;38206:7;38242:30;:28;:30::i;:::-;38234:5;:38;38226:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;38339:10;38350:5;38339:17;;;;;;;;:::i;:::-;;;;;;;;;;38332:24;;38131:233;;;:::o;45983:100::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46070:7:::1;46054:13;:23;;;;;;;;;;;;:::i;:::-;;45983:100:::0;:::o;25594:239::-;25666:7;25686:13;25702:7;:16;25710:7;25702:16;;;;;;;;;;;;;;;;;;;;;25686:32;;25754:1;25737:19;;:5;:19;;;;25729:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25820:5;25813:12;;;25594:239;;;:::o;25324:208::-;25396:7;25441:1;25424:19;;:5;:19;;;;25416:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25508:9;:16;25518:5;25508:16;;;;;;;;;;;;;;;;25501:23;;25324:208;;;:::o;46347:92::-;46392:4;46412:21;46405:28;;46347:92;:::o;18518:148::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18625:1:::1;18588:40;;18609:6;::::0;::::1;;;;;;;;18588:40;;;;;;;;;;;;18656:1;18639:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;18518:148::o:0;17867:87::-;17913:7;17940:6;;;;;;;;;;;17933:13;;17867:87;:::o;45890:::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45963:8:::1;45952;:19;;;;45890:87:::0;:::o;26069:104::-;26125:13;26158:7;26151:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26069:104;:::o;27653:295::-;27768:12;:10;:12::i;:::-;27756:24;;:8;:24;;;;27748:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27868:8;27823:18;:32;27842:12;:10;:12::i;:::-;27823:32;;;;;;;;;;;;;;;:42;27856:8;27823:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;27921:8;27892:48;;27907:12;:10;:12::i;:::-;27892:48;;;27931:8;27892:48;;;;;;:::i;:::-;;;;;;;;27653:295;;:::o;46818:224::-;46907:13;46902:133;46930:8;:15;46922:5;:23;46902:133;;;46971:52;46984:10;46996:9;47007:8;47016:5;47007:15;;;;;;;;:::i;:::-;;;;;;;;46971:12;:52::i;:::-;46947:7;;;;;:::i;:::-;;;;46902:133;;;;46818:224;;:::o;28848:285::-;28980:41;28999:12;:10;:12::i;:::-;29013:7;28980:18;:41::i;:::-;28972:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29086:39;29100:4;29106:2;29110:7;29119:5;29086:13;:39::i;:::-;28848:285;;;;:::o;45438:446::-;45524:13;45553:18;45574:13;45553:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45598:23;45624:26;45641:8;45624:16;:26::i;:::-;45598:52;;45789:1;45773:4;45767:18;:23;45763:68;;;45810:9;45803:16;;;;;;45763:68;45872:4;45855:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;45841:37;;;;45438:446;;;;:::o;43626:41::-;;;;:::o;43550:29::-;;;;:::o;43584:37::-;;;;:::o;28019:164::-;28116:4;28140:18;:25;28159:5;28140:25;;;;;;;;;;;;;;;:35;28166:8;28140:35;;;;;;;;;;;;;;;;;;;;;;;;;28133:42;;28019:164;;;;:::o;18821:244::-;18098:12;:10;:12::i;:::-;18087:23;;:7;:5;:7::i;:::-;:23;;;18079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18930:1:::1;18910:22;;:8;:22;;;;18902:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19020:8;18991:38;;19012:6;::::0;::::1;;;;;;;;18991:38;;;;;;;;;;;;19049:8;19040:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;18821:244:::0;:::o;44769:418::-;44856:16;44884:14;44901:17;44911:6;44901:9;:17::i;:::-;44884:34;;44939:1;44929:6;:11;44925:257;;;44972:1;44958:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44951:23;;;;;44925:257;44997:23;45037:6;45023:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44997:47;;45058:9;45053:100;45077:6;45073:1;:10;45053:100;;;45113:30;45133:6;45141:1;45113:19;:30::i;:::-;45101:6;45108:1;45101:9;;;;;;;;:::i;:::-;;;;;;;:42;;;;;45085:3;;;;;:::i;:::-;;;;45053:100;;;;45168:6;45161:13;;;;44769:418;;;;:::o;31921:250::-;32025:54;32056:1;32060:2;32064:7;32073:5;32025:22;:54::i;:::-;32017:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;32145:18;32151:2;32155:7;32145:5;:18::i;:::-;31921:250;;;:::o;37288:237::-;37390:4;37429:35;37414:50;;;:11;:50;;;;:103;;;;37481:36;37505:11;37481:23;:36::i;:::-;37414:103;37407:110;;37288:237;;;:::o;30600:127::-;30665:4;30717:1;30689:30;;:7;:16;30697:7;30689:16;;;;;;;;;;;;;;;;;;;;;:30;;;;30682:37;;30600:127;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;34115:174::-;34217:2;34190:15;:24;34206:7;34190:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;34273:7;34269:2;34235:46;;34244:23;34259:7;34244:14;:23::i;:::-;34235:46;;;;;;;;;;;;34115:174;;:::o;30894:348::-;30987:4;31012:16;31020:7;31012;:16::i;:::-;31004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31088:13;31104:23;31119:7;31104:14;:23::i;:::-;31088:39;;31157:5;31146:16;;:7;:16;;;:51;;;;31190:7;31166:31;;:20;31178:7;31166:11;:20::i;:::-;:31;;;31146:51;:87;;;;31201:32;31218:5;31225:7;31201:16;:32::i;:::-;31146:87;31138:96;;;30894:348;;;;:::o;33453:544::-;33578:4;33551:31;;:23;33566:7;33551:14;:23::i;:::-;:31;;;33543:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;33661:1;33647:16;;:2;:16;;;;33639:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;33717:39;33738:4;33744:2;33748:7;33717:20;:39::i;:::-;33821:29;33838:1;33842:7;33821:8;:29::i;:::-;33882:1;33863:9;:15;33873:4;33863:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;33911:1;33894:9;:13;33904:2;33894:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33942:2;33923:7;:16;33931:7;33923:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33981:7;33977:2;33962:27;;33971:4;33962:27;;;;;;;;;;;;33453:544;;;:::o;30015:272::-;30137:48;30160:4;30166:2;30170:7;30179:5;30137:22;:48::i;:::-;30129:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;30251:28;30261:4;30267:2;30271:7;30251:9;:28::i;:::-;30015:272;;;;:::o;21949:723::-;22005:13;22235:1;22226:5;:10;22222:53;;;22253:10;;;;;;;;;;;;;;;;;;;;;22222:53;22285:12;22300:5;22285:20;;22316:14;22341:78;22356:1;22348:4;:9;22341:78;;22374:8;;;;;:::i;:::-;;;;22405:2;22397:10;;;;;:::i;:::-;;;22341:78;;;22429:19;22461:6;22451:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22429:39;;22479:154;22495:1;22486:5;:10;22479:154;;22523:1;22513:11;;;;;:::i;:::-;;;22590:2;22582:5;:10;;;;:::i;:::-;22569:2;:24;;;;:::i;:::-;22556:39;;22539:6;22546;22539:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;22619:2;22610:11;;;;;:::i;:::-;;;22479:154;;;22657:6;22643:21;;;;;21949:723;;;;:::o;34854:843::-;34975:4;35001:15;:2;:13;;;:15::i;:::-;34997:693;;;35053:2;35037:36;;;35074:12;:10;:12::i;:::-;35088:4;35094:7;35103:5;35037:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35033:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35300:1;35283:6;:13;:18;35279:341;;;35326:60;;;;;;;;;;:::i;:::-;;;;;;;;35279:341;35570:6;35564:13;35555:6;35551:2;35547:15;35540:38;35033:602;35170:45;;;35160:55;;;:6;:55;;;;35153:62;;;;;34997:693;35674:4;35667:11;;34854:843;;;;;;;:::o;32507:382::-;32601:1;32587:16;;:2;:16;;;;32579:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32660:16;32668:7;32660;:16::i;:::-;32659:17;32651:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;32722:45;32751:1;32755:2;32759:7;32722:20;:45::i;:::-;32797:1;32780:9;:13;32790:2;32780:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;32828:2;32809:7;:16;32817:7;32809:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32873:7;32869:2;32848:33;;32865:1;32848:33;;;;;;;;;;;;32507:382;;:::o;24968:292::-;25070:4;25109:25;25094:40;;;:11;:40;;;;:105;;;;25166:33;25151:48;;;:11;:48;;;;25094:105;:158;;;;25216:36;25240:11;25216:23;:36::i;:::-;25094:158;25087:165;;24968:292;;;:::o;46615:195::-;46759:45;46786:4;46792:2;46796:7;46759:26;:45::i;:::-;46615:195;;;:::o;9571:422::-;9631:4;9839:12;9950:7;9938:20;9930:28;;9984:1;9977:4;:8;9970:15;;;9571:422;;;:::o;8699:157::-;8784:4;8823:25;8808:40;;;:11;:40;;;;8801:47;;8699:157;;;:::o;38977:555::-;39087:45;39114:4;39120:2;39124:7;39087:26;:45::i;:::-;39165:1;39149:18;;:4;:18;;;39145:187;;;39184:40;39216:7;39184:31;:40::i;:::-;39145:187;;;39254:2;39246:10;;:4;:10;;;39242:90;;39273:47;39306:4;39312:7;39273:32;:47::i;:::-;39242:90;39145:187;39360:1;39346:16;;:2;:16;;;39342:183;;;39379:45;39416:7;39379:36;:45::i;:::-;39342:183;;;39452:4;39446:10;;:2;:10;;;39442:83;;39473:40;39501:2;39505:7;39473:27;:40::i;:::-;39442:83;39342:183;38977:555;;;:::o;36308:93::-;;;;:::o;40255:164::-;40359:10;:17;;;;40332:15;:24;40348:7;40332:24;;;;;;;;;;;:44;;;;40387:10;40403:7;40387:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40255:164;:::o;41046:988::-;41312:22;41362:1;41337:22;41354:4;41337:16;:22::i;:::-;:26;;;;:::i;:::-;41312:51;;41374:18;41395:17;:26;41413:7;41395:26;;;;;;;;;;;;41374:47;;41542:14;41528:10;:28;41524:328;;41573:19;41595:12;:18;41608:4;41595:18;;;;;;;;;;;;;;;:34;41614:14;41595:34;;;;;;;;;;;;41573:56;;41679:11;41646:12;:18;41659:4;41646:18;;;;;;;;;;;;;;;:30;41665:10;41646:30;;;;;;;;;;;:44;;;;41796:10;41763:17;:30;41781:11;41763:30;;;;;;;;;;;:43;;;;41558:294;41524:328;41948:17;:26;41966:7;41948:26;;;;;;;;;;;41941:33;;;41992:12;:18;42005:4;41992:18;;;;;;;;;;;;;;;:34;42011:14;41992:34;;;;;;;;;;;41985:41;;;41127:907;;41046:988;;:::o;42329:1079::-;42582:22;42627:1;42607:10;:17;;;;:21;;;;:::i;:::-;42582:46;;42639:18;42660:15;:24;42676:7;42660:24;;;;;;;;;;;;42639:45;;43011:19;43033:10;43044:14;43033:26;;;;;;;;:::i;:::-;;;;;;;;;;43011:48;;43097:11;43072:10;43083;43072:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;43208:10;43177:15;:28;43193:11;43177:28;;;;;;;;;;;:41;;;;43349:15;:24;43365:7;43349:24;;;;;;;;;;;43342:31;;;43384:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;42400:1008;;;42329:1079;:::o;39833:221::-;39918:14;39935:20;39952:2;39935:16;:20::i;:::-;39918:37;;39993:7;39966:12;:16;39979:2;39966:16;;;;;;;;;;;;;;;:24;39983:6;39966:24;;;;;;;;;;;:34;;;;40040:6;40011:17;:26;40029:7;40011:26;;;;;;;;;;;:35;;;;39907:147;39833:221;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;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;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:684::-;5897:6;5905;5954:2;5942:9;5933:7;5929:23;5925:32;5922:119;;;5960:79;;:::i;:::-;5922:119;6080:1;6105:53;6150:7;6141:6;6130:9;6126:22;6105:53;:::i;:::-;6095:63;;6051:117;6235:2;6224:9;6220:18;6207:32;6266:18;6258:6;6255:30;6252:117;;;6288:79;;:::i;:::-;6252:117;6393:78;6463:7;6454:6;6443:9;6439:22;6393:78;:::i;:::-;6383:88;;6178:303;5804:684;;;;;:::o;6494:468::-;6559:6;6567;6616:2;6604:9;6595:7;6591:23;6587:32;6584:119;;;6622:79;;:::i;:::-;6584:119;6742:1;6767:53;6812:7;6803:6;6792:9;6788:22;6767:53;:::i;:::-;6757:63;;6713:117;6869:2;6895:50;6937:7;6928:6;6917:9;6913:22;6895:50;:::i;:::-;6885:60;;6840:115;6494:468;;;;;:::o;6968:474::-;7036:6;7044;7093:2;7081:9;7072:7;7068:23;7064:32;7061:119;;;7099:79;;:::i;:::-;7061:119;7219:1;7244:53;7289:7;7280:6;7269:9;7265:22;7244:53;:::i;:::-;7234:63;;7190:117;7346:2;7372:53;7417:7;7408:6;7397:9;7393:22;7372:53;:::i;:::-;7362:63;;7317:118;6968:474;;;;;:::o;7448:327::-;7506:6;7555:2;7543:9;7534:7;7530:23;7526:32;7523:119;;;7561:79;;:::i;:::-;7523:119;7681:1;7706:52;7750:7;7741:6;7730:9;7726:22;7706:52;:::i;:::-;7696:62;;7652:116;7448:327;;;;:::o;7781:349::-;7850:6;7899:2;7887:9;7878:7;7874:23;7870:32;7867:119;;;7905:79;;:::i;:::-;7867:119;8025:1;8050:63;8105:7;8096:6;8085:9;8081:22;8050:63;:::i;:::-;8040:73;;7996:127;7781:349;;;;:::o;8136:509::-;8205:6;8254:2;8242:9;8233:7;8229:23;8225:32;8222:119;;;8260:79;;:::i;:::-;8222:119;8408:1;8397:9;8393:17;8380:31;8438:18;8430:6;8427:30;8424:117;;;8460:79;;:::i;:::-;8424:117;8565:63;8620:7;8611:6;8600:9;8596:22;8565:63;:::i;:::-;8555:73;;8351:287;8136:509;;;;:::o;8651:329::-;8710:6;8759:2;8747:9;8738:7;8734:23;8730:32;8727:119;;;8765:79;;:::i;:::-;8727:119;8885:1;8910:53;8955:7;8946:6;8935:9;8931:22;8910:53;:::i;:::-;8900:63;;8856:117;8651:329;;;;:::o;8986:179::-;9055:10;9076:46;9118:3;9110:6;9076:46;:::i;:::-;9154:4;9149:3;9145:14;9131:28;;8986:179;;;;:::o;9171:118::-;9258:24;9276:5;9258:24;:::i;:::-;9253:3;9246:37;9171:118;;:::o;9325:732::-;9444:3;9473:54;9521:5;9473:54;:::i;:::-;9543:86;9622:6;9617:3;9543:86;:::i;:::-;9536:93;;9653:56;9703:5;9653:56;:::i;:::-;9732:7;9763:1;9748:284;9773:6;9770:1;9767:13;9748:284;;;9849:6;9843:13;9876:63;9935:3;9920:13;9876:63;:::i;:::-;9869:70;;9962:60;10015:6;9962:60;:::i;:::-;9952:70;;9808:224;9795:1;9792;9788:9;9783:14;;9748:284;;;9752:14;10048:3;10041:10;;9449:608;;;9325:732;;;;:::o;10063:109::-;10144:21;10159:5;10144:21;:::i;:::-;10139:3;10132:34;10063:109;;:::o;10178:360::-;10264:3;10292:38;10324:5;10292:38;:::i;:::-;10346:70;10409:6;10404:3;10346:70;:::i;:::-;10339:77;;10425:52;10470:6;10465:3;10458:4;10451:5;10447:16;10425:52;:::i;:::-;10502:29;10524:6;10502:29;:::i;:::-;10497:3;10493:39;10486:46;;10268:270;10178:360;;;;:::o;10544:364::-;10632:3;10660:39;10693:5;10660:39;:::i;:::-;10715:71;10779:6;10774:3;10715:71;:::i;:::-;10708:78;;10795:52;10840:6;10835:3;10828:4;10821:5;10817:16;10795:52;:::i;:::-;10872:29;10894:6;10872:29;:::i;:::-;10867:3;10863:39;10856:46;;10636:272;10544:364;;;;:::o;10914:377::-;11020:3;11048:39;11081:5;11048:39;:::i;:::-;11103:89;11185:6;11180:3;11103:89;:::i;:::-;11096:96;;11201:52;11246:6;11241:3;11234:4;11227:5;11223:16;11201:52;:::i;:::-;11278:6;11273:3;11269:16;11262:23;;11024:267;10914:377;;;;:::o;11297:366::-;11439:3;11460:67;11524:2;11519:3;11460:67;:::i;:::-;11453:74;;11536:93;11625:3;11536:93;:::i;:::-;11654:2;11649:3;11645:12;11638:19;;11297:366;;;:::o;11669:::-;11811:3;11832:67;11896:2;11891:3;11832:67;:::i;:::-;11825:74;;11908:93;11997:3;11908:93;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;11669:366;;;:::o;12041:::-;12183:3;12204:67;12268:2;12263:3;12204:67;:::i;:::-;12197:74;;12280:93;12369:3;12280:93;:::i;:::-;12398:2;12393:3;12389:12;12382:19;;12041:366;;;:::o;12413:::-;12555:3;12576:67;12640:2;12635:3;12576:67;:::i;:::-;12569:74;;12652:93;12741:3;12652:93;:::i;:::-;12770:2;12765:3;12761:12;12754:19;;12413:366;;;:::o;12785:::-;12927:3;12948:67;13012:2;13007:3;12948:67;:::i;:::-;12941:74;;13024:93;13113:3;13024:93;:::i;:::-;13142:2;13137:3;13133:12;13126:19;;12785:366;;;:::o;13157:::-;13299:3;13320:67;13384:2;13379:3;13320:67;:::i;:::-;13313:74;;13396:93;13485:3;13396:93;:::i;:::-;13514:2;13509:3;13505:12;13498:19;;13157:366;;;:::o;13529:::-;13671:3;13692:67;13756:2;13751:3;13692:67;:::i;:::-;13685:74;;13768:93;13857:3;13768:93;:::i;:::-;13886:2;13881:3;13877:12;13870:19;;13529:366;;;:::o;13901:::-;14043:3;14064:67;14128:2;14123:3;14064:67;:::i;:::-;14057:74;;14140:93;14229:3;14140:93;:::i;:::-;14258:2;14253:3;14249:12;14242:19;;13901:366;;;:::o;14273:::-;14415:3;14436:67;14500:2;14495:3;14436:67;:::i;:::-;14429:74;;14512:93;14601:3;14512:93;:::i;:::-;14630:2;14625:3;14621:12;14614:19;;14273:366;;;:::o;14645:::-;14787:3;14808:67;14872:2;14867:3;14808:67;:::i;:::-;14801:74;;14884:93;14973:3;14884:93;:::i;:::-;15002:2;14997:3;14993:12;14986:19;;14645:366;;;:::o;15017:::-;15159:3;15180:67;15244:2;15239:3;15180:67;:::i;:::-;15173:74;;15256:93;15345:3;15256:93;:::i;:::-;15374:2;15369:3;15365:12;15358:19;;15017:366;;;:::o;15389:::-;15531:3;15552:67;15616:2;15611:3;15552:67;:::i;:::-;15545:74;;15628:93;15717:3;15628:93;:::i;:::-;15746:2;15741:3;15737:12;15730:19;;15389:366;;;:::o;15761:::-;15903:3;15924:67;15988:2;15983:3;15924:67;:::i;:::-;15917:74;;16000:93;16089:3;16000:93;:::i;:::-;16118:2;16113:3;16109:12;16102:19;;15761:366;;;:::o;16133:::-;16275:3;16296:67;16360:2;16355:3;16296:67;:::i;:::-;16289:74;;16372:93;16461:3;16372:93;:::i;:::-;16490:2;16485:3;16481:12;16474:19;;16133:366;;;:::o;16505:::-;16647:3;16668:67;16732:2;16727:3;16668:67;:::i;:::-;16661:74;;16744:93;16833:3;16744:93;:::i;:::-;16862:2;16857:3;16853:12;16846:19;;16505:366;;;:::o;16877:::-;17019:3;17040:67;17104:2;17099:3;17040:67;:::i;:::-;17033:74;;17116:93;17205:3;17116:93;:::i;:::-;17234:2;17229:3;17225:12;17218:19;;16877:366;;;:::o;17249:::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:::-;17763:3;17784:67;17848:2;17843:3;17784:67;:::i;:::-;17777:74;;17860:93;17949:3;17860:93;:::i;:::-;17978:2;17973:3;17969:12;17962:19;;17621:366;;;:::o;17993:::-;18135:3;18156:67;18220:2;18215:3;18156:67;:::i;:::-;18149:74;;18232:93;18321:3;18232:93;:::i;:::-;18350:2;18345:3;18341:12;18334:19;;17993:366;;;:::o;18365:108::-;18442:24;18460:5;18442:24;:::i;:::-;18437:3;18430:37;18365:108;;:::o;18479:118::-;18566:24;18584:5;18566:24;:::i;:::-;18561:3;18554:37;18479:118;;:::o;18603:275::-;18735:3;18757:95;18848:3;18839:6;18757:95;:::i;:::-;18750:102;;18869:3;18862:10;;18603:275;;;;:::o;18884:222::-;18977:4;19015:2;19004:9;19000:18;18992:26;;19028:71;19096:1;19085:9;19081:17;19072:6;19028:71;:::i;:::-;18884:222;;;;:::o;19112:640::-;19307:4;19345:3;19334:9;19330:19;19322:27;;19359:71;19427:1;19416:9;19412:17;19403:6;19359:71;:::i;:::-;19440:72;19508:2;19497:9;19493:18;19484:6;19440:72;:::i;:::-;19522;19590:2;19579:9;19575:18;19566:6;19522:72;:::i;:::-;19641:9;19635:4;19631:20;19626:2;19615:9;19611:18;19604:48;19669:76;19740:4;19731:6;19669:76;:::i;:::-;19661:84;;19112:640;;;;;;;:::o;19758:373::-;19901:4;19939:2;19928:9;19924:18;19916:26;;19988:9;19982:4;19978:20;19974:1;19963:9;19959:17;19952:47;20016:108;20119:4;20110:6;20016:108;:::i;:::-;20008:116;;19758:373;;;;:::o;20137:210::-;20224:4;20262:2;20251:9;20247:18;20239:26;;20275:65;20337:1;20326:9;20322:17;20313:6;20275:65;:::i;:::-;20137:210;;;;:::o;20353:313::-;20466:4;20504:2;20493:9;20489:18;20481:26;;20553:9;20547:4;20543:20;20539:1;20528:9;20524:17;20517:47;20581:78;20654:4;20645:6;20581:78;:::i;:::-;20573:86;;20353:313;;;;:::o;20672:419::-;20838:4;20876:2;20865:9;20861:18;20853:26;;20925:9;20919:4;20915:20;20911:1;20900:9;20896:17;20889:47;20953:131;21079:4;20953:131;:::i;:::-;20945:139;;20672:419;;;:::o;21097:::-;21263:4;21301:2;21290:9;21286:18;21278:26;;21350:9;21344:4;21340:20;21336:1;21325:9;21321:17;21314:47;21378:131;21504:4;21378:131;:::i;:::-;21370:139;;21097:419;;;:::o;21522:::-;21688:4;21726:2;21715:9;21711:18;21703:26;;21775:9;21769:4;21765:20;21761:1;21750:9;21746:17;21739:47;21803:131;21929:4;21803:131;:::i;:::-;21795:139;;21522:419;;;:::o;21947:::-;22113:4;22151:2;22140:9;22136:18;22128:26;;22200:9;22194:4;22190:20;22186:1;22175:9;22171:17;22164:47;22228:131;22354:4;22228:131;:::i;:::-;22220:139;;21947:419;;;:::o;22372:::-;22538:4;22576:2;22565:9;22561:18;22553:26;;22625:9;22619:4;22615:20;22611:1;22600:9;22596:17;22589:47;22653:131;22779:4;22653:131;:::i;:::-;22645:139;;22372:419;;;:::o;22797:::-;22963:4;23001:2;22990:9;22986:18;22978:26;;23050:9;23044:4;23040:20;23036:1;23025:9;23021:17;23014:47;23078:131;23204:4;23078:131;:::i;:::-;23070:139;;22797:419;;;:::o;23222:::-;23388:4;23426:2;23415:9;23411:18;23403:26;;23475:9;23469:4;23465:20;23461:1;23450:9;23446:17;23439:47;23503:131;23629:4;23503:131;:::i;:::-;23495:139;;23222:419;;;:::o;23647:::-;23813:4;23851:2;23840:9;23836:18;23828:26;;23900:9;23894:4;23890:20;23886:1;23875:9;23871:17;23864:47;23928:131;24054:4;23928:131;:::i;:::-;23920:139;;23647:419;;;:::o;24072:::-;24238:4;24276:2;24265:9;24261:18;24253:26;;24325:9;24319:4;24315:20;24311:1;24300:9;24296:17;24289:47;24353:131;24479:4;24353:131;:::i;:::-;24345:139;;24072:419;;;:::o;24497:::-;24663:4;24701:2;24690:9;24686:18;24678:26;;24750:9;24744:4;24740:20;24736:1;24725:9;24721:17;24714:47;24778:131;24904:4;24778:131;:::i;:::-;24770:139;;24497:419;;;:::o;24922:::-;25088:4;25126:2;25115:9;25111:18;25103:26;;25175:9;25169:4;25165:20;25161:1;25150:9;25146:17;25139:47;25203:131;25329:4;25203:131;:::i;:::-;25195:139;;24922:419;;;:::o;25347:::-;25513:4;25551:2;25540:9;25536:18;25528:26;;25600:9;25594:4;25590:20;25586:1;25575:9;25571:17;25564:47;25628:131;25754:4;25628:131;:::i;:::-;25620:139;;25347:419;;;:::o;25772:::-;25938:4;25976:2;25965:9;25961:18;25953:26;;26025:9;26019:4;26015:20;26011:1;26000:9;25996:17;25989:47;26053:131;26179:4;26053:131;:::i;:::-;26045:139;;25772:419;;;:::o;26197:::-;26363:4;26401:2;26390:9;26386:18;26378:26;;26450:9;26444:4;26440:20;26436:1;26425:9;26421:17;26414:47;26478:131;26604:4;26478:131;:::i;:::-;26470:139;;26197:419;;;:::o;26622:::-;26788:4;26826:2;26815:9;26811:18;26803:26;;26875:9;26869:4;26865:20;26861:1;26850:9;26846:17;26839:47;26903:131;27029:4;26903:131;:::i;:::-;26895:139;;26622:419;;;:::o;27047:::-;27213:4;27251:2;27240:9;27236:18;27228:26;;27300:9;27294:4;27290:20;27286:1;27275:9;27271:17;27264:47;27328:131;27454:4;27328:131;:::i;:::-;27320:139;;27047:419;;;:::o;27472:::-;27638:4;27676:2;27665:9;27661:18;27653:26;;27725:9;27719:4;27715:20;27711:1;27700:9;27696:17;27689:47;27753:131;27879:4;27753:131;:::i;:::-;27745:139;;27472:419;;;:::o;27897:::-;28063:4;28101:2;28090:9;28086:18;28078:26;;28150:9;28144:4;28140:20;28136:1;28125:9;28121:17;28114:47;28178:131;28304:4;28178:131;:::i;:::-;28170:139;;27897:419;;;:::o;28322:::-;28488:4;28526:2;28515:9;28511:18;28503:26;;28575:9;28569:4;28565:20;28561:1;28550:9;28546:17;28539:47;28603:131;28729:4;28603:131;:::i;:::-;28595:139;;28322:419;;;:::o;28747:222::-;28840:4;28878:2;28867:9;28863:18;28855:26;;28891:71;28959:1;28948:9;28944:17;28935:6;28891:71;:::i;:::-;28747:222;;;;:::o;28975:129::-;29009:6;29036:20;;:::i;:::-;29026:30;;29065:33;29093:4;29085:6;29065:33;:::i;:::-;28975:129;;;:::o;29110:75::-;29143:6;29176:2;29170:9;29160:19;;29110:75;:::o;29191:311::-;29268:4;29358:18;29350:6;29347:30;29344:56;;;29380:18;;:::i;:::-;29344:56;29430:4;29422:6;29418:17;29410:25;;29490:4;29484;29480:15;29472:23;;29191:311;;;:::o;29508:307::-;29569:4;29659:18;29651:6;29648:30;29645:56;;;29681:18;;:::i;:::-;29645:56;29719:29;29741:6;29719:29;:::i;:::-;29711:37;;29803:4;29797;29793:15;29785:23;;29508:307;;;:::o;29821:308::-;29883:4;29973:18;29965:6;29962:30;29959:56;;;29995:18;;:::i;:::-;29959:56;30033:29;30055:6;30033:29;:::i;:::-;30025:37;;30117:4;30111;30107:15;30099:23;;29821:308;;;:::o;30135:132::-;30202:4;30225:3;30217:11;;30255:4;30250:3;30246:14;30238:22;;30135:132;;;:::o;30273:114::-;30340:6;30374:5;30368:12;30358:22;;30273:114;;;:::o;30393:98::-;30444:6;30478:5;30472:12;30462:22;;30393:98;;;:::o;30497:99::-;30549:6;30583:5;30577:12;30567:22;;30497:99;;;:::o;30602:113::-;30672:4;30704;30699:3;30695:14;30687:22;;30602:113;;;:::o;30721:184::-;30820:11;30854:6;30849:3;30842:19;30894:4;30889:3;30885:14;30870:29;;30721:184;;;;:::o;30911:168::-;30994:11;31028:6;31023:3;31016:19;31068:4;31063:3;31059:14;31044:29;;30911:168;;;;:::o;31085:169::-;31169:11;31203:6;31198:3;31191:19;31243:4;31238:3;31234:14;31219:29;;31085:169;;;;:::o;31260:148::-;31362:11;31399:3;31384:18;;31260:148;;;;:::o;31414:305::-;31454:3;31473:20;31491:1;31473:20;:::i;:::-;31468:25;;31507:20;31525:1;31507:20;:::i;:::-;31502:25;;31661:1;31593:66;31589:74;31586:1;31583:81;31580:107;;;31667:18;;:::i;:::-;31580:107;31711:1;31708;31704:9;31697:16;;31414:305;;;;:::o;31725:185::-;31765:1;31782:20;31800:1;31782:20;:::i;:::-;31777:25;;31816:20;31834:1;31816:20;:::i;:::-;31811:25;;31855:1;31845:35;;31860:18;;:::i;:::-;31845:35;31902:1;31899;31895:9;31890:14;;31725:185;;;;:::o;31916:191::-;31956:4;31976:20;31994:1;31976:20;:::i;:::-;31971:25;;32010:20;32028:1;32010:20;:::i;:::-;32005:25;;32049:1;32046;32043:8;32040:34;;;32054:18;;:::i;:::-;32040:34;32099:1;32096;32092:9;32084:17;;31916:191;;;;:::o;32113:96::-;32150:7;32179:24;32197:5;32179:24;:::i;:::-;32168:35;;32113:96;;;:::o;32215:90::-;32249:7;32292:5;32285:13;32278:21;32267:32;;32215:90;;;:::o;32311:149::-;32347:7;32387:66;32380:5;32376:78;32365:89;;32311:149;;;:::o;32466:126::-;32503:7;32543:42;32536:5;32532:54;32521:65;;32466:126;;;:::o;32598:77::-;32635:7;32664:5;32653:16;;32598:77;;;:::o;32681:154::-;32765:6;32760:3;32755;32742:30;32827:1;32818:6;32813:3;32809:16;32802:27;32681:154;;;:::o;32841:307::-;32909:1;32919:113;32933:6;32930:1;32927:13;32919:113;;;33018:1;33013:3;33009:11;33003:18;32999:1;32994:3;32990:11;32983:39;32955:2;32952:1;32948:10;32943:15;;32919:113;;;33050:6;33047:1;33044:13;33041:101;;;33130:1;33121:6;33116:3;33112:16;33105:27;33041:101;32890:258;32841:307;;;:::o;33154:320::-;33198:6;33235:1;33229:4;33225:12;33215:22;;33282:1;33276:4;33272:12;33303:18;33293:81;;33359:4;33351:6;33347:17;33337:27;;33293:81;33421:2;33413:6;33410:14;33390:18;33387:38;33384:84;;;33440:18;;:::i;:::-;33384:84;33205:269;33154:320;;;:::o;33480:281::-;33563:27;33585:4;33563:27;:::i;:::-;33555:6;33551:40;33693:6;33681:10;33678:22;33657:18;33645:10;33642:34;33639:62;33636:88;;;33704:18;;:::i;:::-;33636:88;33744:10;33740:2;33733:22;33523:238;33480:281;;:::o;33767:233::-;33806:3;33829:24;33847:5;33829:24;:::i;:::-;33820:33;;33875:66;33868:5;33865:77;33862:103;;;33945:18;;:::i;:::-;33862:103;33992:1;33985:5;33981:13;33974:20;;33767:233;;;:::o;34006:176::-;34038:1;34055:20;34073:1;34055:20;:::i;:::-;34050:25;;34089:20;34107:1;34089:20;:::i;:::-;34084:25;;34128:1;34118:35;;34133:18;;:::i;:::-;34118:35;34174:1;34171;34167:9;34162:14;;34006:176;;;;:::o;34188:180::-;34236:77;34233:1;34226:88;34333:4;34330:1;34323:15;34357:4;34354:1;34347:15;34374:180;34422:77;34419:1;34412:88;34519:4;34516:1;34509:15;34543:4;34540:1;34533:15;34560:180;34608:77;34605:1;34598:88;34705:4;34702:1;34695:15;34729:4;34726:1;34719:15;34746:180;34794:77;34791:1;34784:88;34891:4;34888:1;34881:15;34915:4;34912:1;34905:15;34932:180;34980:77;34977:1;34970:88;35077:4;35074:1;35067:15;35101:4;35098:1;35091:15;35118:180;35166:77;35163:1;35156:88;35263:4;35260:1;35253:15;35287:4;35284:1;35277:15;35304:117;35413:1;35410;35403:12;35427:117;35536:1;35533;35526:12;35550:117;35659:1;35656;35649:12;35673:117;35782:1;35779;35772:12;35796:117;35905:1;35902;35895:12;35919:102;35960:6;36011:2;36007:7;36002:2;35995:5;35991:14;35987:28;35977:38;;35919:102;;;:::o;36027:230::-;36167:34;36163:1;36155:6;36151:14;36144:58;36236:13;36231:2;36223:6;36219:15;36212:38;36027:230;:::o;36263:237::-;36403:34;36399:1;36391:6;36387:14;36380:58;36472:20;36467:2;36459:6;36455:15;36448:45;36263:237;:::o;36506:225::-;36646:34;36642:1;36634:6;36630:14;36623:58;36715:8;36710:2;36702:6;36698:15;36691:33;36506:225;:::o;36737:178::-;36877:30;36873:1;36865:6;36861:14;36854:54;36737:178;:::o;36921:223::-;37061:34;37057:1;37049:6;37045:14;37038:58;37130:6;37125:2;37117:6;37113:15;37106:31;36921:223;:::o;37150:175::-;37290:27;37286:1;37278:6;37274:14;37267:51;37150:175;:::o;37331:231::-;37471:34;37467:1;37459:6;37455:14;37448:58;37540:14;37535:2;37527:6;37523:15;37516:39;37331:231;:::o;37568:243::-;37708:34;37704:1;37696:6;37692:14;37685:58;37777:26;37772:2;37764:6;37760:15;37753:51;37568:243;:::o;37817:229::-;37957:34;37953:1;37945:6;37941:14;37934:58;38026:12;38021:2;38013:6;38009:15;38002:37;37817:229;:::o;38052:228::-;38192:34;38188:1;38180:6;38176:14;38169:58;38261:11;38256:2;38248:6;38244:15;38237:36;38052:228;:::o;38286:182::-;38426:34;38422:1;38414:6;38410:14;38403:58;38286:182;:::o;38474:231::-;38614:34;38610:1;38602:6;38598:14;38591:58;38683:14;38678:2;38670:6;38666:15;38659:39;38474:231;:::o;38711:182::-;38851:34;38847:1;38839:6;38835:14;38828:58;38711:182;:::o;38899:228::-;39039:34;39035:1;39027:6;39023:14;39016:58;39108:11;39103:2;39095:6;39091:15;39084:36;38899:228;:::o;39133:220::-;39273:34;39269:1;39261:6;39257:14;39250:58;39342:3;39337:2;39329:6;39325:15;39318:28;39133:220;:::o;39359:236::-;39499:34;39495:1;39487:6;39483:14;39476:58;39568:19;39563:2;39555:6;39551:15;39544:44;39359:236;:::o;39601:231::-;39741:34;39737:1;39729:6;39725:14;39718:58;39810:14;39805:2;39797:6;39793:15;39786:39;39601:231;:::o;39838:178::-;39978:30;39974:1;39966:6;39962:14;39955:54;39838:178;:::o;40022:181::-;40162:33;40158:1;40150:6;40146:14;40139:57;40022:181;:::o;40209:122::-;40282:24;40300:5;40282:24;:::i;:::-;40275:5;40272:35;40262:63;;40321:1;40318;40311:12;40262:63;40209:122;:::o;40337:116::-;40407:21;40422:5;40407:21;:::i;:::-;40400:5;40397:32;40387:60;;40443:1;40440;40433:12;40387:60;40337:116;:::o;40459:120::-;40531:23;40548:5;40531:23;:::i;:::-;40524:5;40521:34;40511:62;;40569:1;40566;40559:12;40511:62;40459:120;:::o;40585:122::-;40658:24;40676:5;40658:24;:::i;:::-;40651:5;40648:35;40638:63;;40697:1;40694;40687:12;40638:63;40585:122;:::o
Swarm Source
ipfs://762b82c0e26b16afd38abc0e675f35bcfab9c720c44d794318dbeec82ae56e7a
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.