More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 121 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Enroll | 10074627 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074597 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074575 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074507 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074422 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074389 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074364 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10074332 | 1 hr ago | IN | 0 APE | 0.00405312 | ||||
Enroll | 10073476 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073461 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073432 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073404 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073320 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073291 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073275 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10073264 | 1 hr ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10071768 | 1 hr ago | IN | 0 APE | 0.00427329 | ||||
Enroll | 10071758 | 1 hr ago | IN | 0 APE | 0.00427329 | ||||
Enroll | 10071745 | 1 hr ago | IN | 0 APE | 0.00427329 | ||||
Enroll | 10071732 | 1 hr ago | IN | 0 APE | 0.00427329 | ||||
Enroll | 10069699 | 2 hrs ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10069693 | 2 hrs ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10069683 | 2 hrs ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10069676 | 2 hrs ago | IN | 0 APE | 0.00448639 | ||||
Enroll | 10069626 | 2 hrs ago | IN | 0 APE | 0.00448639 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
9948074 | 25 hrs ago | 0.0000001 APE |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Winpad
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-02-07 */ // ___ ___ ___ ___ _____ // /__/\ ___ /__/\ / /\ / /\ / /::\ // _\_ \:\ / /\ \ \:\ / /::\ / /::\ / /:/\:\ // /__/\ \:\ / /:/ \ \:\ / /:/\:\ / /:/\:\ / /:/ \:\ // _\_ \:\ \:\ /__/::\ _____\__\:\ / /:/~/:/ / /:/~/::\ /__/:/ \__\:| // /__/\ \:\ \:\ \__\/\:\__ /__/::::::::\ /__/:/ /:/ /__/:/ /:/\:\ \ \:\ / /:/ // \ \:\ \:\/:/ \ \:\/\ \ \:\~~\~~\/ \ \:\/:/ \ \:\/:/__\/ \ \:\ /:/ // \ \:\ \::/ \__\::/ \ \:\ ~~~ \ \::/ \ \::/ \ \:\/:/ // \ \:\/:/ /__/:/ \ \:\ \ \:\ \ \:\ \ \::/ // \ \::/ \__\/ \ \:\ \ \:\ \ \:\ \__\/ // \__\/ \__\/ \__\/ \__\/ // Official Contract of Winpad. // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @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 EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * 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; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); 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 making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/Winpad.sol pragma solidity ^0.8.26; interface INft { function transferFrom( address from, address to, uint256 tokenId ) external; function safeTransferFrom( address from, address to, uint256 tokenId ) external; function balanceOf(address owner) external view returns (uint256); function ownerOf(uint256 tokenId) external view returns (address); } contract Winpad is Ownable, ReentrancyGuard { using SafeMath for uint256; // Revenue distribution percentages uint8 public constant FEE_PERCENT = 8; uint8 public constant TREASURY_PERCENT = 72; uint8 public constant OPERATIONS_PERCENT = 20; // Revenue distribution addresses address payable public feeAccount; address payable public treasuryAccount; address payable public operationsAccount; // Entry tier structure struct EntryTier { uint256 apeCost; uint256 baseEntries; uint256 bonusEntries; bool exists; } // Match structure struct Match { bytes32 id; uint256[] allowedTiers; address nftAddress; uint256 nftId; uint256 totalEntries; uint256 endDate; address winner; bool isEnded; bool exists; } // Participant tracking struct Participation { address participant; uint256 tierId; // Add back tierId uint256 entries; } // Storage mapping(uint256 => EntryTier) public tiers; uint256 public nextTierId = 1; mapping(bytes32 => Match) public matches; mapping(bytes32 => mapping(address => bool)) public hasUsedFreeEntry; mapping(bytes32 => Participation[]) public participations; bytes32[] public allMatchIds; mapping(address => bool) public authorizedCallers; // Free entry for those NFTs. address[] public entryNFTs; // Events event MatchCreated( bytes32 indexed matchId, address nftAddress, uint256 nftId, uint256 endDate ); event ParticipantEnrolled( bytes32 indexed matchId, address participant, uint256 entries ); event MatchCanceled(bytes32 indexed matchId, uint256 totalRefunded); event MatchExtended(bytes32 indexed matchId, uint256 endDate); event WinnerSelected( bytes32 indexed matchId, address winner, uint256 entries ); event FundsDistributed( bytes32 indexed matchId, uint256 totalAmount, uint256 fee, uint256 treasury, uint256 operations ); event TierUpdated( uint256 indexed tierId, uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ); event CallerUpdated(address indexed caller, bool status); event WithdrawnNFT( address indexed nftAddress, uint256 indexed tokenId, address indexed recipient ); // Add this to your contract event TierUpdated(uint256 indexed tierId, bool status); event AddressBanned(address indexed bannedAddress); event AddressUnbanned(address indexed unbannedAddress); // Ban System address[] private bannedAddressesList; mapping(address => bool) public bannedAddresses; // To restrict banned users modifier notBanned() { require(!bannedAddresses[msg.sender], "Address is banned"); _; } modifier onlyCaller() { require( owner() == msg.sender || authorizedCallers[msg.sender], "Unauthorized" ); _; } constructor( address _initialOwner, address payable _feeAccount, address payable _treasuryAccount, address payable _operationsAccount ) Ownable(_initialOwner) { feeAccount = _feeAccount; treasuryAccount = _treasuryAccount; operationsAccount = _operationsAccount; } // Entry NFTs management function addEntryNFT(address nft) external onlyOwner { entryNFTs.push(nft); } // Tier management function addTier( uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ) external onlyOwner { tiers[nextTierId] = EntryTier(apeCost, baseEntries, bonusEntries, true); emit TierUpdated(nextTierId, apeCost, baseEntries, bonusEntries); nextTierId++; } // Match creation function createMatch( uint256[] memory allowedTiers, address nftAddress, uint256 nftId, uint256 duration ) external onlyOwner returns (bytes32 matchId) { require(duration > 0, "Invalid duration"); require( INft(nftAddress).ownerOf(nftId) == address(this), "NFT not owned" ); matchId = keccak256( abi.encodePacked(block.timestamp, nftAddress, nftId, msg.sender) ); matches[matchId] = Match({ id: matchId, allowedTiers: allowedTiers, nftAddress: nftAddress, nftId: nftId, totalEntries: 0, endDate: block.timestamp + duration, winner: address(0), isEnded: false, exists: true }); allMatchIds.push(matchId); emit MatchCreated( matchId, nftAddress, nftId, block.timestamp + duration ); } // Participant enrollment function enroll(bytes32 matchId, uint256 tierId) external payable nonReentrant notBanned { Match storage m = matches[matchId]; EntryTier memory tier = tiers[tierId]; require(m.exists, "Invalid match"); require(!m.isEnded, "Match ended"); require(block.timestamp < m.endDate, "Enrollment closed"); require(tier.exists, "Invalid tier or Tier deactivated"); require(contains(m.allowedTiers, tierId), "Tier not allowed"); require(msg.value == tier.apeCost, "Incorrect APE amount"); if (tier.apeCost == 0) { require( !hasUsedFreeEntry[matchId][msg.sender], "Free entry already used" ); bool hasEntryNFT = false; for (uint256 i = 0; i < entryNFTs.length; i++) { if (INft(entryNFTs[i]).balanceOf(msg.sender) > 0) { hasEntryNFT = true; break; } } require(hasEntryNFT, "No qualifying NFT found"); hasUsedFreeEntry[matchId][msg.sender] = true; } uint256 totalEntries = tier.baseEntries + tier.bonusEntries; participations[matchId].push( Participation(msg.sender, tierId, totalEntries) ); m.totalEntries += totalEntries; emit ParticipantEnrolled(matchId, msg.sender, totalEntries); } // Match resolution function pickWinner(bytes32 matchId, uint256 randomSeed) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 randomNumber = uint256( keccak256(abi.encodePacked(randomSeed, block.timestamp, msg.sender)) ) % m.totalEntries; uint256 cumulative; address winner; uint256 winnerEntries; Participation[] memory parts = participations[matchId]; for (uint256 i = 0; i < parts.length; i++) { Participation memory p = parts[i]; if (randomNumber < cumulative + p.entries) { winner = p.participant; winnerEntries = p.entries; break; } cumulative += p.entries; } uint256 totalPrizePool = address(this).balance; uint256 feeAmount = totalPrizePool.mul(FEE_PERCENT).div(100); uint256 treasuryAmount = totalPrizePool.mul(TREASURY_PERCENT).div(100); uint256 operationsAmount = totalPrizePool.sub(feeAmount).sub( treasuryAmount ); feeAccount.transfer(feeAmount); treasuryAccount.transfer(treasuryAmount); operationsAccount.transfer(operationsAmount); require( INft(m.nftAddress).ownerOf(m.nftId) == address(this), "Contract does not own NFT" ); INft(m.nftAddress).transferFrom(address(this), winner, m.nftId); m.winner = winner; m.isEnded = true; emit FundsDistributed( matchId, totalPrizePool, feeAmount, treasuryAmount, operationsAmount ); emit WinnerSelected(matchId, winner, winnerEntries); } // Fix the cancellation logic function cancelMatch(bytes32 matchId) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 totalRefunded; for (uint256 i = 0; i < participations[matchId].length; i++) { Participation memory p = participations[matchId][i]; EntryTier memory tier = tiers[p.tierId]; // Now works payable(p.participant).transfer(tier.apeCost); totalRefunded += tier.apeCost; } INft(m.nftAddress).transferFrom(address(this), owner(), m.nftId); m.isEnded = true; emit MatchCanceled(matchId, totalRefunded); } // Extending match duration function extendMatchEndDate(bytes32 matchId, uint256 additionalDuration) external onlyCaller { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); require(additionalDuration > 0, "Invalid duration"); m.endDate += additionalDuration; emit MatchExtended(matchId, m.endDate); } // Secure NFT withdrawal function function withdrawNFT(address nftAddress, uint256 tokenId) external onlyOwner nonReentrant { // Verify contract owns the NFT require( INft(nftAddress).ownerOf(tokenId) == address(this), "Contract does not own this NFT" ); // Transfer NFT to recipient INft(nftAddress).safeTransferFrom(address(this), owner(), tokenId); // Emit withdrawal event emit WithdrawnNFT(nftAddress, tokenId, owner()); } // Remove an NFT address from the array by index function removeEntryNFT(uint256 index) external onlyOwner { require(index < entryNFTs.length, "Index out of bounds"); if (entryNFTs.length == 1) { entryNFTs.pop(); return; } // Replace the element to be removed with the last element entryNFTs[index] = entryNFTs[entryNFTs.length - 1]; // Remove the last element entryNFTs.pop(); } function updateTier(uint256 tierId, bool status) external onlyOwner { require(tierId < nextTierId, "Invalid tier ID"); tiers[tierId].exists = status; emit TierUpdated(tierId, status); } // Ban Management function banAddress(address _address) external onlyOwner { require(!bannedAddresses[_address], "Already banned"); bannedAddresses[_address] = true; bannedAddressesList.push(_address); emit AddressBanned(_address); } function unbanAddress(address _address) external onlyOwner { require(bannedAddresses[_address], "Not banned"); bannedAddresses[_address] = false; for (uint256 i = 0; i < bannedAddressesList.length; i++) { if (bannedAddressesList[i] == _address) { bannedAddressesList[i] = bannedAddressesList[ bannedAddressesList.length - 1 ]; bannedAddressesList.pop(); break; } } emit AddressUnbanned(_address); } // View functions function getBannedAddresses() public view returns (address[] memory) { return bannedAddressesList; } function getEntryTypes() public view returns (EntryTier[] memory) { EntryTier[] memory types = new EntryTier[](nextTierId - 1); for (uint256 i = 1; i < nextTierId; i++) { types[i - 1] = tiers[i]; } return types; } function getOngoingMatches() public view returns (Match[] memory) { return _filterMatches(0); } function getMatchHistory() public view returns (Match[] memory) { return _filterMatches(1); } function getReadyMatches() public view returns (Match[] memory) { return _filterMatches(2); } function getAllEntryNFTs() public view returns (address[] memory) { return entryNFTs; } function getParticipations(bytes32 matchId) public view returns (Participation[] memory) { return participations[matchId]; } // Internal helpers function _filterMatches(uint8 filterType) private view returns (Match[] memory) { Match[] memory result = new Match[](allMatchIds.length); uint256 count = 0; for (uint256 i = 0; i < allMatchIds.length; i++) { bytes32 id = allMatchIds[i]; Match storage m = matches[id]; bool include; if (filterType == 0) { // Ongoing include = !m.isEnded && block.timestamp < m.endDate; } else if (filterType == 1) { // History include = m.isEnded; } else if (filterType == 2) { // Ready include = !m.isEnded && (block.timestamp >= m.endDate); } if (include) { result[count] = m; count++; } } Match[] memory trimmed = new Match[](count); for (uint256 i = 0; i < count; i++) { trimmed[i] = result[i]; } return trimmed; } function contains(uint256[] memory arr, uint256 value) private pure returns (bool) { for (uint256 i = 0; i < arr.length; i++) { if (arr[i] == value) return true; } return false; } // Authorization management function updateCaller(address caller, bool status) external onlyOwner { authorizedCallers[caller] = status; emit CallerUpdated(caller, status); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address payable","name":"_feeAccount","type":"address"},{"internalType":"address payable","name":"_treasuryAccount","type":"address"},{"internalType":"address payable","name":"_operationsAccount","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bannedAddress","type":"address"}],"name":"AddressBanned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"unbannedAddress","type":"address"}],"name":"AddressUnbanned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CallerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operations","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalRefunded","type":"uint256"}],"name":"MatchCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchExtended","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":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"participant","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"ParticipantEnrolled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"baseEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"TierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"TierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"WinnerSelected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"WithdrawnNFT","type":"event"},{"inputs":[],"name":"FEE_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATIONS_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nft","type":"address"}],"name":"addEntryNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"addTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMatchIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"banAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bannedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"cancelMatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"createMatch","outputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"enroll","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entryNFTs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"additionalDuration","type":"uint256"}],"name":"extendMatchEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllEntryNFTs","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBannedAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntryTypes","outputs":[{"components":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.EntryTier[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMatchHistory","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOngoingMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"getParticipations","outputs":[{"components":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"internalType":"struct Winpad.Participation[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReadyMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"hasUsedFreeEntry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"matches","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTierId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"participations","outputs":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"randomSeed","type":"uint256"}],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeEntryNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"unbanAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600655348015610014575f80fd5b506040516152ab3803806152ab833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b614f318061037a5f395ff3fe608060405260043610610228575f3560e01c806380e36dd811610122578063c82db8f9116100aa578063e7e8517c1161006e578063e7e8517c14610813578063eaf98d231461083d578063ecdc2c0114610867578063ee272ff8146108a5578063f2fde38b146108cd5761022f565b8063c82db8f914610743578063cc8db4ff1461076b578063cfb95e1714610793578063dc3a4e9b146107cf578063dfbed623146107eb5761022f565b806398eeafc4116100f157806398eeafc4146106485780639a1564f0146106845780639dd45d77146106ae5780639fe9ada3146106d8578063b82ee8c71461071b5761022f565b806380e36dd8146105a25780638293a114146105cc57806383d5e726146105f45780638da5cb5b1461061e5761022f565b8063463fec0f116101b057806361eba6521161017457806361eba652146104e85780636358ec571461051257806365e17c9d1461053a578063715018a6146105645780637f49f7091461057a5761022f565b8063463fec0f146103d0578063536fff6c1461040c57806354f276b91461044857806355bc8725146104845780636088e93a146104c05761022f565b80630bf9ed2b116101f75780630bf9ed2b146102f05780630f5f1dbc146103185780631966cdbe146103425780632f333d2e1461036a578063339b2cff146103a65761022f565b8063039af9eb146102335780630594fd04146102725780630648d74c1461029c5780630a47f932146102c65761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b50610259600480360381019061025491906136eb565b6108f5565b604051610269949392919061373f565b60405180910390f35b34801561027d575f80fd5b5061028661092d565b6040516102939190613782565b60405180910390f35b3480156102a7575f80fd5b506102b0610933565b6040516102bd9190613882565b60405180910390f35b3480156102d1575f80fd5b506102da6109be565b6040516102e79190613afd565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190613b47565b6109cf565b005b348015610323575f80fd5b5061032c610a3a565b6040516103399190613b92565b60405180910390f35b34801561034d575f80fd5b5061036860048036038101906103639190613bd5565b610a5f565b005b348015610375575f80fd5b50610390600480360381019061038b9190613c13565b611157565b60405161039d9190613c51565b60405180910390f35b3480156103b1575f80fd5b506103ba611181565b6040516103c79190613b92565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f191906136eb565b6111a6565b6040516104039190613c79565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d9190613b47565b6111e1565b60405161043f9190613c51565b60405180910390f35b348015610453575f80fd5b5061046e600480360381019061046991906136eb565b6111fe565b60405161047b9190613ca1565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190613b47565b61121e565b6040516104b79190613c51565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190613cba565b61123b565b005b3480156104f3575f80fd5b506104fc61140f565b6040516105099190613afd565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190613cf8565b611420565b005b348015610545575f80fd5b5061054e6114f7565b60405161055b9190613b92565b60405180910390f35b34801561056f575f80fd5b5061057861151c565b005b348015610585575f80fd5b506105a0600480360381019061059b9190613b47565b61152f565b005b3480156105ad575f80fd5b506105b66116bc565b6040516105c39190613e43565b60405180910390f35b3480156105d7575f80fd5b506105f260048036038101906105ed9190613b47565b6117c5565b005b3480156105ff575f80fd5b50610608611a6a565b6040516106159190613e7e565b60405180910390f35b348015610629575f80fd5b50610632611a6f565b60405161063f9190613c79565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190613fe7565b611a96565b60405161067b9190613ca1565b60405180910390f35b34801561068f575f80fd5b50610698611e0a565b6040516106a59190613afd565b60405180910390f35b3480156106b9575f80fd5b506106c2611e1a565b6040516106cf9190613882565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190614067565b611ea5565b604051610712989796959493929190614092565b60405180910390f35b348015610726575f80fd5b50610741600480360381019061073c91906136eb565b611f41565b005b34801561074e575f80fd5b5061076960048036038101906107649190614067565b6120d4565b005b348015610776575f80fd5b50610791600480360381019061078c9190613bd5565b61248e565b005b34801561079e575f80fd5b506107b960048036038101906107b49190614067565b612657565b6040516107c691906141f6565b60405180910390f35b6107e960048036038101906107e49190613bd5565b61272c565b005b3480156107f6575f80fd5b50610811600480360381019061080c9190614240565b612d99565b005b34801561081e575f80fd5b50610827612e47565b6040516108349190613e7e565b60405180910390f35b348015610848575f80fd5b50610851612e4c565b60405161085e9190613e7e565b60405180910390f35b348015610872575f80fd5b5061088d60048036038101906108889190613bd5565b612e51565b60405161089c9392919061427e565b60405180910390f35b3480156108b0575f80fd5b506108cb60048036038101906108c691906142b3565b612eb0565b005b3480156108d8575f80fd5b506108f360048036038101906108ee9190613b47565b612f63565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b6060600d8054806020026020016040519081016040528092919081815260200182805480156109b457602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161096b575b5050505050905090565b60606109ca6001612fe7565b905090565b6109d7613375565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610a7e611a6f565b73ffffffffffffffffffffffffffffffffffffffff161480610ae65750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c9061434b565b60405180910390fd5b610b2d6133fc565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a906143b3565b60405180910390fd5b5f8160040154834233604051602001610bae93929190614436565b604051602081830303815290604052805190602001205f1c610bd0919061449f565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c9e578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610c06565b5050505090505f5b8151811015610d17575f828281518110610cc357610cc26144cf565b5b60200260200101519050806040015186610cdd9190614529565b871015610cf757805f015194508060400151935050610d17565b806040015186610d079190614529565b9550508080600101915050610ca6565b505f4790505f610d476064610d39600860ff168561344290919063ffffffff16565b61345790919063ffffffff16565b90505f610d746064610d66604860ff168661344290919063ffffffff16565b61345790919063ffffffff16565b90505f610d9c82610d8e858761346c90919063ffffffff16565b61346c90919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610e02573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610e67573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610ecc573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610f449190613782565b602060405180830381865afa158015610f5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f839190614570565b73ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906145e5565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b815260040161103d93929190614603565b5f604051808303815f87803b158015611054575f80fd5b505af1158015611066573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc95858585856040516110ff9493929190614638565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc888860405161113992919061467b565b60405180910390a250505050505050505050611153613481565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c81815481106111b5575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061120d575f80fd5b905f5260205f20015f915090505481565b600e602052805f5260405f205f915054906101000a900460ff1681565b611243613375565b61124b6133fc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161129b9190613782565b602060405180830381865afa1580156112b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112da9190614570565b73ffffffffffffffffffffffffffffffffffffffff1614611330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611327906146ec565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611355611a6f565b846040518463ffffffff1660e01b815260040161137493929190614603565b5f604051808303815f87803b15801561138b575f80fd5b505af115801561139d573d5f803e3d5ffd5b505050506113a9611a6f565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461140b613481565b5050565b606061141b6002612fe7565b905090565b611428613375565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a8484846040516114d39392919061470a565b60405180910390a260065f8154809291906114ed9061473f565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611524613375565b61152d5f61348a565b565b611537613375565b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b8906147d0565b60405180910390fd5b6001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4e1f1083e536396ee005a5640fc3beb4d082ac0ec24882c6b8b35121beb61c5c60405160405180910390a250565b60605f60016006546116ce91906147ee565b67ffffffffffffffff8111156116e7576116e6613eab565b5b60405190808252806020026020018201604052801561172057816020015b61170d6135a4565b8152602001906001900390816117055790505b5090505f600190505b6006548110156117bd5760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361179491906147ee565b815181106117a5576117a46144cf565b5b60200260200101819052508080600101915050611729565b508091505090565b6117cd613375565b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d9061486b565b60405180910390fd5b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b600d80549050811015611a23578173ffffffffffffffffffffffffffffffffffffffff16600d82815481106118e4576118e36144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a1657600d6001600d8054905061193b91906147ee565b8154811061194c5761194b6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d8281548110611988576119876144cf565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d8054806119df576119de614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611a23565b80806001019150506118ac565b508073ffffffffffffffffffffffffffffffffffffffff167faf21b055f404aae56187594ef6bc522fbab24d4a05adc05c41c16a844b73b02460405160405180910390a250565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f611a9f613375565b5f8211611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad890614900565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b8152600401611b319190613782565b602060405180830381865afa158015611b4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b709190614570565b73ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90614968565b60405180910390fd5b42848433604051602001611bdd9493929190614986565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f81526020018342611c419190614529565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f01556020820151816001019080519060200190611ca69291906135ca565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa9185858542611deb9190614529565b604051611dfa9392919061427e565b60405180910390a2949350505050565b6060611e155f612fe7565b905090565b6060600c805480602002602001604051908101604052809291908181526020018280548015611e9b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e52575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b611f49613375565b600c805490508110611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790614a1d565b60405180910390fd5b6001600c8054905003611fe657600c805480611faf57611fae614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556120d1565b600c6001600c80549050611ffa91906147ee565b8154811061200b5761200a6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110612047576120466144cf565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061209e5761209d614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b3373ffffffffffffffffffffffffffffffffffffffff166120f3611a6f565b73ffffffffffffffffffffffffffffffffffffffff16148061215b5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61219a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121919061434b565b60405180910390fd5b6121a26133fc565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff906143b3565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015612393575f60095f8681526020019081526020015f20828154811061224e5761224d6144cf565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015612372573d5f803e3d5ffd5b50805f0151846123829190614529565b93505050808060010191505061220e565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306123dc611a6f565b85600301546040518463ffffffff1660e01b81526004016123ff93929190614603565b5f604051808303815f87803b158015612416575f80fd5b505af1158015612428573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516124799190613782565b60405180910390a2505061248b613481565b50565b3373ffffffffffffffffffffffffffffffffffffffff166124ad611a6f565b73ffffffffffffffffffffffffffffffffffffffff1614806125155750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b9061434b565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b1906143b3565b60405180910390fd5b5f82116125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614900565b60405180910390fd5b81816005015f82825461260f9190614529565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d4826005015460405161264a9190613782565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015612721578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190612689565b505050509050919050565b6127346133fc565b600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b590614a85565b60405180910390fd5b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287090614aed565b60405180910390fd5b8160060160149054906101000a900460ff16156128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290614b55565b60405180910390fd5b81600501544210612911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290890614bbd565b60405180910390fd5b8060600151612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614c25565b60405180910390fd5b6129af826001018054806020026020016040519081016040528092919081815260200182805480156129a457602002820191905f5260205f20905b815481526020019060010190808311612990575b50505050508461354b565b6129ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e590614c8d565b60405180910390fd5b805f01513414612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90614cf5565b60405180910390fd5b5f815f015103612c5d5760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acd90614d5d565b60405180910390fd5b5f805b600c80549050811015612bb6575f600c8281548110612afb57612afa6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612b5b9190613c79565b602060405180830381865afa158015612b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b9a9190614d8f565b1115612ba95760019150612bb6565b8080600101915050612ad9565b5080612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614e04565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f81604001518260200151612c729190614529565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f828254612d499190614529565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612d8292919061467b565b60405180910390a2505050612d95613481565b5050565b612da1613375565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051612e3b9190613c51565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f208181548110612e6a575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b612eb8613375565b6006548210612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef390614e6c565b60405180910390fd5b8060055f8481526020019081526020015f206003015f6101000a81548160ff021916908315150217905550817f8f71204ab5049511d33210dd0e3f57d281dfb0c878c1246c78bba0e1d0ecb56182604051612f579190613c51565b60405180910390a25050565b612f6b613375565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612fdb575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612fd29190613c79565b60405180910390fd5b612fe48161348a565b50565b60605f600a8054905067ffffffffffffffff81111561300957613008613eab565b5b60405190808252806020026020018201604052801561304257816020015b61302f613615565b8152602001906001900390816130275790505b5090505f805b600a805490508110156132c1575f600a828154811061306a576130696144cf565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff16036130bd578160060160149054906101000a900460ff161580156130b65750816005015442105b9050613114565b60018860ff16036130e1578160060160149054906101000a900460ff169050613113565b60028860ff1603613112578160060160149054906101000a900460ff1615801561310f575081600501544210155b90505b5b5b80156132b15781604051806101200160405290815f82015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561317d57602002820191905f5260205f20905b815481526020019060010190808311613169575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110613297576132966144cf565b5b602002602001018190525084806132ad9061473f565b9550505b5050508080600101915050613048565b505f8167ffffffffffffffff8111156132dd576132dc613eab565b5b60405190808252806020026020018201604052801561331657816020015b613303613615565b8152602001906001900390816132fb5790505b5090505f5b8281101561336957838181518110613336576133356144cf565b5b6020026020010151828281518110613351576133506144cf565b5b6020026020010181905250808060010191505061331b565b50809350505050919050565b61337d61359d565b73ffffffffffffffffffffffffffffffffffffffff1661339b611a6f565b73ffffffffffffffffffffffffffffffffffffffff16146133fa576133be61359d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016133f19190613c79565b60405180910390fd5b565b600260015403613438576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f818361344f9190614e8a565b905092915050565b5f81836134649190614ecb565b905092915050565b5f818361347991906147ee565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015613592578284828151811061356e5761356d6144cf565b5b602002602001015103613585576001915050613597565b8080600101915050613551565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215613604579160200282015b828111156136035782518255916020019190600101906135e8565b5b509050613611919061368c565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b808211156136a3575f815f90555060010161368d565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6136ca816136b8565b81146136d4575f80fd5b50565b5f813590506136e5816136c1565b92915050565b5f60208284031215613700576136ff6136b0565b5b5f61370d848285016136d7565b91505092915050565b61371f816136b8565b82525050565b5f8115159050919050565b61373981613725565b82525050565b5f6080820190506137525f830187613716565b61375f6020830186613716565b61376c6040830185613716565b6137796060830184613730565b95945050505050565b5f6020820190506137955f830184613716565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137ed826137c4565b9050919050565b6137fd816137e3565b82525050565b5f61380e83836137f4565b60208301905092915050565b5f602082019050919050565b5f6138308261379b565b61383a81856137a5565b9350613845836137b5565b805f5b8381101561387557815161385c8882613803565b97506138678361381a565b925050600181019050613848565b5085935050505092915050565b5f6020820190508181035f83015261389a8184613826565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6138dd816138cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613915816136b8565b82525050565b5f613926838361390c565b60208301905092915050565b5f602082019050919050565b5f613948826138e3565b61395281856138ed565b935061395d836138fd565b805f5b8381101561398d578151613974888261391b565b975061397f83613932565b925050600181019050613960565b5085935050505092915050565b6139a381613725565b82525050565b5f61012083015f8301516139bf5f8601826138d4565b50602083015184820360208601526139d7828261393e565b91505060408301516139ec60408601826137f4565b5060608301516139ff606086018261390c565b506080830151613a12608086018261390c565b5060a0830151613a2560a086018261390c565b5060c0830151613a3860c08601826137f4565b5060e0830151613a4b60e086018261399a565b50610100830151613a6061010086018261399a565b508091505092915050565b5f613a7683836139a9565b905092915050565b5f602082019050919050565b5f613a94826138a2565b613a9e81856138ac565b935083602082028501613ab0856138bc565b805f5b85811015613aeb5784840389528151613acc8582613a6b565b9450613ad783613a7e565b925060208a01995050600181019050613ab3565b50829750879550505050505092915050565b5f6020820190508181035f830152613b158184613a8a565b905092915050565b613b26816137e3565b8114613b30575f80fd5b50565b5f81359050613b4181613b1d565b92915050565b5f60208284031215613b5c57613b5b6136b0565b5b5f613b6984828501613b33565b91505092915050565b5f613b7c826137c4565b9050919050565b613b8c81613b72565b82525050565b5f602082019050613ba55f830184613b83565b92915050565b613bb4816138cb565b8114613bbe575f80fd5b50565b5f81359050613bcf81613bab565b92915050565b5f8060408385031215613beb57613bea6136b0565b5b5f613bf885828601613bc1565b9250506020613c09858286016136d7565b9150509250929050565b5f8060408385031215613c2957613c286136b0565b5b5f613c3685828601613bc1565b9250506020613c4785828601613b33565b9150509250929050565b5f602082019050613c645f830184613730565b92915050565b613c73816137e3565b82525050565b5f602082019050613c8c5f830184613c6a565b92915050565b613c9b816138cb565b82525050565b5f602082019050613cb45f830184613c92565b92915050565b5f8060408385031215613cd057613ccf6136b0565b5b5f613cdd85828601613b33565b9250506020613cee858286016136d7565b9150509250929050565b5f805f60608486031215613d0f57613d0e6136b0565b5b5f613d1c868287016136d7565b9350506020613d2d868287016136d7565b9250506040613d3e868287016136d7565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f820151613d855f85018261390c565b506020820151613d98602085018261390c565b506040820151613dab604085018261390c565b506060820151613dbe606085018261399a565b50505050565b5f613dcf8383613d71565b60808301905092915050565b5f602082019050919050565b5f613df182613d48565b613dfb8185613d52565b9350613e0683613d62565b805f5b83811015613e36578151613e1d8882613dc4565b9750613e2883613ddb565b925050600181019050613e09565b5085935050505092915050565b5f6020820190508181035f830152613e5b8184613de7565b905092915050565b5f60ff82169050919050565b613e7881613e63565b82525050565b5f602082019050613e915f830184613e6f565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ee182613e9b565b810181811067ffffffffffffffff82111715613f0057613eff613eab565b5b80604052505050565b5f613f126136a7565b9050613f1e8282613ed8565b919050565b5f67ffffffffffffffff821115613f3d57613f3c613eab565b5b602082029050602081019050919050565b5f80fd5b5f613f64613f5f84613f23565b613f09565b90508083825260208201905060208402830185811115613f8757613f86613f4e565b5b835b81811015613fb05780613f9c88826136d7565b845260208401935050602081019050613f89565b5050509392505050565b5f82601f830112613fce57613fcd613e97565b5b8135613fde848260208601613f52565b91505092915050565b5f805f8060808587031215613fff57613ffe6136b0565b5b5f85013567ffffffffffffffff81111561401c5761401b6136b4565b5b61402887828801613fba565b945050602061403987828801613b33565b935050604061404a878288016136d7565b925050606061405b878288016136d7565b91505092959194509250565b5f6020828403121561407c5761407b6136b0565b5b5f61408984828501613bc1565b91505092915050565b5f610100820190506140a65f83018b613c92565b6140b3602083018a613c6a565b6140c06040830189613716565b6140cd6060830188613716565b6140da6080830187613716565b6140e760a0830186613c6a565b6140f460c0830185613730565b61410160e0830184613730565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f82015161414b5f8501826137f4565b50602082015161415e602085018261390c565b506040820151614171604085018261390c565b50505050565b5f6141828383614137565b60608301905092915050565b5f602082019050919050565b5f6141a48261410e565b6141ae8185614118565b93506141b983614128565b805f5b838110156141e95781516141d08882614177565b97506141db8361418e565b9250506001810190506141bc565b5085935050505092915050565b5f6020820190508181035f83015261420e818461419a565b905092915050565b61421f81613725565b8114614229575f80fd5b50565b5f8135905061423a81614216565b92915050565b5f8060408385031215614256576142556136b0565b5b5f61426385828601613b33565b92505060206142748582860161422c565b9150509250929050565b5f6060820190506142915f830186613c6a565b61429e6020830185613716565b6142ab6040830184613716565b949350505050565b5f80604083850312156142c9576142c86136b0565b5b5f6142d6858286016136d7565b92505060206142e78582860161422c565b9150509250929050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f614335600c836142f1565b915061434082614301565b602082019050919050565b5f6020820190508181035f83015261436281614329565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f61439d6013836142f1565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b5f819050919050565b6143eb6143e6826136b8565b6143d1565b82525050565b5f8160601b9050919050565b5f614407826143f1565b9050919050565b5f614418826143fd565b9050919050565b61443061442b826137e3565b61440e565b82525050565b5f61444182866143da565b60208201915061445182856143da565b602082019150614461828461441f565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6144a9826136b8565b91506144b4836136b8565b9250826144c4576144c3614472565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614533826136b8565b915061453e836136b8565b9250828201905080821115614556576145556144fc565b5b92915050565b5f8151905061456a81613b1d565b92915050565b5f60208284031215614585576145846136b0565b5b5f6145928482850161455c565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f6145cf6019836142f1565b91506145da8261459b565b602082019050919050565b5f6020820190508181035f8301526145fc816145c3565b9050919050565b5f6060820190506146165f830186613c6a565b6146236020830185613c6a565b6146306040830184613716565b949350505050565b5f60808201905061464b5f830187613716565b6146586020830186613716565b6146656040830185613716565b6146726060830184613716565b95945050505050565b5f60408201905061468e5f830185613c6a565b61469b6020830184613716565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f6146d6601e836142f1565b91506146e1826146a2565b602082019050919050565b5f6020820190508181035f830152614703816146ca565b9050919050565b5f60608201905061471d5f830186613716565b61472a6020830185613716565b6147376040830184613716565b949350505050565b5f614749826136b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361477b5761477a6144fc565b5b600182019050919050565b7f416c72656164792062616e6e65640000000000000000000000000000000000005f82015250565b5f6147ba600e836142f1565b91506147c582614786565b602082019050919050565b5f6020820190508181035f8301526147e7816147ae565b9050919050565b5f6147f8826136b8565b9150614803836136b8565b925082820390508181111561481b5761481a6144fc565b5b92915050565b7f4e6f742062616e6e6564000000000000000000000000000000000000000000005f82015250565b5f614855600a836142f1565b915061486082614821565b602082019050919050565b5f6020820190508181035f83015261488281614849565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f6148ea6010836142f1565b91506148f5826148b6565b602082019050919050565b5f6020820190508181035f830152614917816148de565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f614952600d836142f1565b915061495d8261491e565b602082019050919050565b5f6020820190508181035f83015261497f81614946565b9050919050565b5f61499182876143da565b6020820191506149a1828661441f565b6014820191506149b182856143da565b6020820191506149c1828461441f565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f614a076013836142f1565b9150614a12826149d3565b602082019050919050565b5f6020820190508181035f830152614a34816149fb565b9050919050565b7f416464726573732069732062616e6e65640000000000000000000000000000005f82015250565b5f614a6f6011836142f1565b9150614a7a82614a3b565b602082019050919050565b5f6020820190508181035f830152614a9c81614a63565b9050919050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f614ad7600d836142f1565b9150614ae282614aa3565b602082019050919050565b5f6020820190508181035f830152614b0481614acb565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f614b3f600b836142f1565b9150614b4a82614b0b565b602082019050919050565b5f6020820190508181035f830152614b6c81614b33565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f614ba76011836142f1565b9150614bb282614b73565b602082019050919050565b5f6020820190508181035f830152614bd481614b9b565b9050919050565b7f496e76616c69642074696572206f7220546965722064656163746976617465645f82015250565b5f614c0f6020836142f1565b9150614c1a82614bdb565b602082019050919050565b5f6020820190508181035f830152614c3c81614c03565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f614c776010836142f1565b9150614c8282614c43565b602082019050919050565b5f6020820190508181035f830152614ca481614c6b565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f614cdf6014836142f1565b9150614cea82614cab565b602082019050919050565b5f6020820190508181035f830152614d0c81614cd3565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f614d476017836142f1565b9150614d5282614d13565b602082019050919050565b5f6020820190508181035f830152614d7481614d3b565b9050919050565b5f81519050614d89816136c1565b92915050565b5f60208284031215614da457614da36136b0565b5b5f614db184828501614d7b565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f614dee6017836142f1565b9150614df982614dba565b602082019050919050565b5f6020820190508181035f830152614e1b81614de2565b9050919050565b7f496e76616c6964207469657220494400000000000000000000000000000000005f82015250565b5f614e56600f836142f1565b9150614e6182614e22565b602082019050919050565b5f6020820190508181035f830152614e8381614e4a565b9050919050565b5f614e94826136b8565b9150614e9f836136b8565b9250828202614ead816136b8565b91508282048414831517614ec457614ec36144fc565b5b5092915050565b5f614ed5826136b8565b9150614ee0836136b8565b925082614ef057614eef614472565b5b82820490509291505056fea2646970667358221220f0d3543b20f6182ed30afb84cd53d865623a6a7e52e16acb804e4514961957c164736f6c634300081a0033000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode
0x608060405260043610610228575f3560e01c806380e36dd811610122578063c82db8f9116100aa578063e7e8517c1161006e578063e7e8517c14610813578063eaf98d231461083d578063ecdc2c0114610867578063ee272ff8146108a5578063f2fde38b146108cd5761022f565b8063c82db8f914610743578063cc8db4ff1461076b578063cfb95e1714610793578063dc3a4e9b146107cf578063dfbed623146107eb5761022f565b806398eeafc4116100f157806398eeafc4146106485780639a1564f0146106845780639dd45d77146106ae5780639fe9ada3146106d8578063b82ee8c71461071b5761022f565b806380e36dd8146105a25780638293a114146105cc57806383d5e726146105f45780638da5cb5b1461061e5761022f565b8063463fec0f116101b057806361eba6521161017457806361eba652146104e85780636358ec571461051257806365e17c9d1461053a578063715018a6146105645780637f49f7091461057a5761022f565b8063463fec0f146103d0578063536fff6c1461040c57806354f276b91461044857806355bc8725146104845780636088e93a146104c05761022f565b80630bf9ed2b116101f75780630bf9ed2b146102f05780630f5f1dbc146103185780631966cdbe146103425780632f333d2e1461036a578063339b2cff146103a65761022f565b8063039af9eb146102335780630594fd04146102725780630648d74c1461029c5780630a47f932146102c65761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b50610259600480360381019061025491906136eb565b6108f5565b604051610269949392919061373f565b60405180910390f35b34801561027d575f80fd5b5061028661092d565b6040516102939190613782565b60405180910390f35b3480156102a7575f80fd5b506102b0610933565b6040516102bd9190613882565b60405180910390f35b3480156102d1575f80fd5b506102da6109be565b6040516102e79190613afd565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190613b47565b6109cf565b005b348015610323575f80fd5b5061032c610a3a565b6040516103399190613b92565b60405180910390f35b34801561034d575f80fd5b5061036860048036038101906103639190613bd5565b610a5f565b005b348015610375575f80fd5b50610390600480360381019061038b9190613c13565b611157565b60405161039d9190613c51565b60405180910390f35b3480156103b1575f80fd5b506103ba611181565b6040516103c79190613b92565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f191906136eb565b6111a6565b6040516104039190613c79565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d9190613b47565b6111e1565b60405161043f9190613c51565b60405180910390f35b348015610453575f80fd5b5061046e600480360381019061046991906136eb565b6111fe565b60405161047b9190613ca1565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190613b47565b61121e565b6040516104b79190613c51565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190613cba565b61123b565b005b3480156104f3575f80fd5b506104fc61140f565b6040516105099190613afd565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190613cf8565b611420565b005b348015610545575f80fd5b5061054e6114f7565b60405161055b9190613b92565b60405180910390f35b34801561056f575f80fd5b5061057861151c565b005b348015610585575f80fd5b506105a0600480360381019061059b9190613b47565b61152f565b005b3480156105ad575f80fd5b506105b66116bc565b6040516105c39190613e43565b60405180910390f35b3480156105d7575f80fd5b506105f260048036038101906105ed9190613b47565b6117c5565b005b3480156105ff575f80fd5b50610608611a6a565b6040516106159190613e7e565b60405180910390f35b348015610629575f80fd5b50610632611a6f565b60405161063f9190613c79565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190613fe7565b611a96565b60405161067b9190613ca1565b60405180910390f35b34801561068f575f80fd5b50610698611e0a565b6040516106a59190613afd565b60405180910390f35b3480156106b9575f80fd5b506106c2611e1a565b6040516106cf9190613882565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190614067565b611ea5565b604051610712989796959493929190614092565b60405180910390f35b348015610726575f80fd5b50610741600480360381019061073c91906136eb565b611f41565b005b34801561074e575f80fd5b5061076960048036038101906107649190614067565b6120d4565b005b348015610776575f80fd5b50610791600480360381019061078c9190613bd5565b61248e565b005b34801561079e575f80fd5b506107b960048036038101906107b49190614067565b612657565b6040516107c691906141f6565b60405180910390f35b6107e960048036038101906107e49190613bd5565b61272c565b005b3480156107f6575f80fd5b50610811600480360381019061080c9190614240565b612d99565b005b34801561081e575f80fd5b50610827612e47565b6040516108349190613e7e565b60405180910390f35b348015610848575f80fd5b50610851612e4c565b60405161085e9190613e7e565b60405180910390f35b348015610872575f80fd5b5061088d60048036038101906108889190613bd5565b612e51565b60405161089c9392919061427e565b60405180910390f35b3480156108b0575f80fd5b506108cb60048036038101906108c691906142b3565b612eb0565b005b3480156108d8575f80fd5b506108f360048036038101906108ee9190613b47565b612f63565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b6060600d8054806020026020016040519081016040528092919081815260200182805480156109b457602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161096b575b5050505050905090565b60606109ca6001612fe7565b905090565b6109d7613375565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610a7e611a6f565b73ffffffffffffffffffffffffffffffffffffffff161480610ae65750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c9061434b565b60405180910390fd5b610b2d6133fc565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a906143b3565b60405180910390fd5b5f8160040154834233604051602001610bae93929190614436565b604051602081830303815290604052805190602001205f1c610bd0919061449f565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c9e578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610c06565b5050505090505f5b8151811015610d17575f828281518110610cc357610cc26144cf565b5b60200260200101519050806040015186610cdd9190614529565b871015610cf757805f015194508060400151935050610d17565b806040015186610d079190614529565b9550508080600101915050610ca6565b505f4790505f610d476064610d39600860ff168561344290919063ffffffff16565b61345790919063ffffffff16565b90505f610d746064610d66604860ff168661344290919063ffffffff16565b61345790919063ffffffff16565b90505f610d9c82610d8e858761346c90919063ffffffff16565b61346c90919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610e02573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610e67573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610ecc573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610f449190613782565b602060405180830381865afa158015610f5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f839190614570565b73ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906145e5565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b815260040161103d93929190614603565b5f604051808303815f87803b158015611054575f80fd5b505af1158015611066573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc95858585856040516110ff9493929190614638565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc888860405161113992919061467b565b60405180910390a250505050505050505050611153613481565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c81815481106111b5575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061120d575f80fd5b905f5260205f20015f915090505481565b600e602052805f5260405f205f915054906101000a900460ff1681565b611243613375565b61124b6133fc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161129b9190613782565b602060405180830381865afa1580156112b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112da9190614570565b73ffffffffffffffffffffffffffffffffffffffff1614611330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611327906146ec565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611355611a6f565b846040518463ffffffff1660e01b815260040161137493929190614603565b5f604051808303815f87803b15801561138b575f80fd5b505af115801561139d573d5f803e3d5ffd5b505050506113a9611a6f565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461140b613481565b5050565b606061141b6002612fe7565b905090565b611428613375565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a8484846040516114d39392919061470a565b60405180910390a260065f8154809291906114ed9061473f565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611524613375565b61152d5f61348a565b565b611537613375565b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b8906147d0565b60405180910390fd5b6001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4e1f1083e536396ee005a5640fc3beb4d082ac0ec24882c6b8b35121beb61c5c60405160405180910390a250565b60605f60016006546116ce91906147ee565b67ffffffffffffffff8111156116e7576116e6613eab565b5b60405190808252806020026020018201604052801561172057816020015b61170d6135a4565b8152602001906001900390816117055790505b5090505f600190505b6006548110156117bd5760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361179491906147ee565b815181106117a5576117a46144cf565b5b60200260200101819052508080600101915050611729565b508091505090565b6117cd613375565b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d9061486b565b60405180910390fd5b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b600d80549050811015611a23578173ffffffffffffffffffffffffffffffffffffffff16600d82815481106118e4576118e36144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a1657600d6001600d8054905061193b91906147ee565b8154811061194c5761194b6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d8281548110611988576119876144cf565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d8054806119df576119de614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611a23565b80806001019150506118ac565b508073ffffffffffffffffffffffffffffffffffffffff167faf21b055f404aae56187594ef6bc522fbab24d4a05adc05c41c16a844b73b02460405160405180910390a250565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f611a9f613375565b5f8211611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad890614900565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b8152600401611b319190613782565b602060405180830381865afa158015611b4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b709190614570565b73ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90614968565b60405180910390fd5b42848433604051602001611bdd9493929190614986565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f81526020018342611c419190614529565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f01556020820151816001019080519060200190611ca69291906135ca565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa9185858542611deb9190614529565b604051611dfa9392919061427e565b60405180910390a2949350505050565b6060611e155f612fe7565b905090565b6060600c805480602002602001604051908101604052809291908181526020018280548015611e9b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e52575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b611f49613375565b600c805490508110611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790614a1d565b60405180910390fd5b6001600c8054905003611fe657600c805480611faf57611fae614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556120d1565b600c6001600c80549050611ffa91906147ee565b8154811061200b5761200a6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110612047576120466144cf565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061209e5761209d614889565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b3373ffffffffffffffffffffffffffffffffffffffff166120f3611a6f565b73ffffffffffffffffffffffffffffffffffffffff16148061215b5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61219a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121919061434b565b60405180910390fd5b6121a26133fc565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff906143b3565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015612393575f60095f8681526020019081526020015f20828154811061224e5761224d6144cf565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015612372573d5f803e3d5ffd5b50805f0151846123829190614529565b93505050808060010191505061220e565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306123dc611a6f565b85600301546040518463ffffffff1660e01b81526004016123ff93929190614603565b5f604051808303815f87803b158015612416575f80fd5b505af1158015612428573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516124799190613782565b60405180910390a2505061248b613481565b50565b3373ffffffffffffffffffffffffffffffffffffffff166124ad611a6f565b73ffffffffffffffffffffffffffffffffffffffff1614806125155750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b9061434b565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b1906143b3565b60405180910390fd5b5f82116125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614900565b60405180910390fd5b81816005015f82825461260f9190614529565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d4826005015460405161264a9190613782565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015612721578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190612689565b505050509050919050565b6127346133fc565b600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b590614a85565b60405180910390fd5b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287090614aed565b60405180910390fd5b8160060160149054906101000a900460ff16156128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290614b55565b60405180910390fd5b81600501544210612911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290890614bbd565b60405180910390fd5b8060600151612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614c25565b60405180910390fd5b6129af826001018054806020026020016040519081016040528092919081815260200182805480156129a457602002820191905f5260205f20905b815481526020019060010190808311612990575b50505050508461354b565b6129ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e590614c8d565b60405180910390fd5b805f01513414612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90614cf5565b60405180910390fd5b5f815f015103612c5d5760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acd90614d5d565b60405180910390fd5b5f805b600c80549050811015612bb6575f600c8281548110612afb57612afa6144cf565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612b5b9190613c79565b602060405180830381865afa158015612b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b9a9190614d8f565b1115612ba95760019150612bb6565b8080600101915050612ad9565b5080612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614e04565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f81604001518260200151612c729190614529565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f828254612d499190614529565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612d8292919061467b565b60405180910390a2505050612d95613481565b5050565b612da1613375565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051612e3b9190613c51565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f208181548110612e6a575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b612eb8613375565b6006548210612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef390614e6c565b60405180910390fd5b8060055f8481526020019081526020015f206003015f6101000a81548160ff021916908315150217905550817f8f71204ab5049511d33210dd0e3f57d281dfb0c878c1246c78bba0e1d0ecb56182604051612f579190613c51565b60405180910390a25050565b612f6b613375565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612fdb575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612fd29190613c79565b60405180910390fd5b612fe48161348a565b50565b60605f600a8054905067ffffffffffffffff81111561300957613008613eab565b5b60405190808252806020026020018201604052801561304257816020015b61302f613615565b8152602001906001900390816130275790505b5090505f805b600a805490508110156132c1575f600a828154811061306a576130696144cf565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff16036130bd578160060160149054906101000a900460ff161580156130b65750816005015442105b9050613114565b60018860ff16036130e1578160060160149054906101000a900460ff169050613113565b60028860ff1603613112578160060160149054906101000a900460ff1615801561310f575081600501544210155b90505b5b5b80156132b15781604051806101200160405290815f82015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561317d57602002820191905f5260205f20905b815481526020019060010190808311613169575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110613297576132966144cf565b5b602002602001018190525084806132ad9061473f565b9550505b5050508080600101915050613048565b505f8167ffffffffffffffff8111156132dd576132dc613eab565b5b60405190808252806020026020018201604052801561331657816020015b613303613615565b8152602001906001900390816132fb5790505b5090505f5b8281101561336957838181518110613336576133356144cf565b5b6020026020010151828281518110613351576133506144cf565b5b6020026020010181905250808060010191505061331b565b50809350505050919050565b61337d61359d565b73ffffffffffffffffffffffffffffffffffffffff1661339b611a6f565b73ffffffffffffffffffffffffffffffffffffffff16146133fa576133be61359d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016133f19190613c79565b60405180910390fd5b565b600260015403613438576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f818361344f9190614e8a565b905092915050565b5f81836134649190614ecb565b905092915050565b5f818361347991906147ee565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015613592578284828151811061356e5761356d6144cf565b5b602002602001015103613585576001915050613597565b8080600101915050613551565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215613604579160200282015b828111156136035782518255916020019190600101906135e8565b5b509050613611919061368c565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b808211156136a3575f815f90555060010161368d565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6136ca816136b8565b81146136d4575f80fd5b50565b5f813590506136e5816136c1565b92915050565b5f60208284031215613700576136ff6136b0565b5b5f61370d848285016136d7565b91505092915050565b61371f816136b8565b82525050565b5f8115159050919050565b61373981613725565b82525050565b5f6080820190506137525f830187613716565b61375f6020830186613716565b61376c6040830185613716565b6137796060830184613730565b95945050505050565b5f6020820190506137955f830184613716565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137ed826137c4565b9050919050565b6137fd816137e3565b82525050565b5f61380e83836137f4565b60208301905092915050565b5f602082019050919050565b5f6138308261379b565b61383a81856137a5565b9350613845836137b5565b805f5b8381101561387557815161385c8882613803565b97506138678361381a565b925050600181019050613848565b5085935050505092915050565b5f6020820190508181035f83015261389a8184613826565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6138dd816138cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613915816136b8565b82525050565b5f613926838361390c565b60208301905092915050565b5f602082019050919050565b5f613948826138e3565b61395281856138ed565b935061395d836138fd565b805f5b8381101561398d578151613974888261391b565b975061397f83613932565b925050600181019050613960565b5085935050505092915050565b6139a381613725565b82525050565b5f61012083015f8301516139bf5f8601826138d4565b50602083015184820360208601526139d7828261393e565b91505060408301516139ec60408601826137f4565b5060608301516139ff606086018261390c565b506080830151613a12608086018261390c565b5060a0830151613a2560a086018261390c565b5060c0830151613a3860c08601826137f4565b5060e0830151613a4b60e086018261399a565b50610100830151613a6061010086018261399a565b508091505092915050565b5f613a7683836139a9565b905092915050565b5f602082019050919050565b5f613a94826138a2565b613a9e81856138ac565b935083602082028501613ab0856138bc565b805f5b85811015613aeb5784840389528151613acc8582613a6b565b9450613ad783613a7e565b925060208a01995050600181019050613ab3565b50829750879550505050505092915050565b5f6020820190508181035f830152613b158184613a8a565b905092915050565b613b26816137e3565b8114613b30575f80fd5b50565b5f81359050613b4181613b1d565b92915050565b5f60208284031215613b5c57613b5b6136b0565b5b5f613b6984828501613b33565b91505092915050565b5f613b7c826137c4565b9050919050565b613b8c81613b72565b82525050565b5f602082019050613ba55f830184613b83565b92915050565b613bb4816138cb565b8114613bbe575f80fd5b50565b5f81359050613bcf81613bab565b92915050565b5f8060408385031215613beb57613bea6136b0565b5b5f613bf885828601613bc1565b9250506020613c09858286016136d7565b9150509250929050565b5f8060408385031215613c2957613c286136b0565b5b5f613c3685828601613bc1565b9250506020613c4785828601613b33565b9150509250929050565b5f602082019050613c645f830184613730565b92915050565b613c73816137e3565b82525050565b5f602082019050613c8c5f830184613c6a565b92915050565b613c9b816138cb565b82525050565b5f602082019050613cb45f830184613c92565b92915050565b5f8060408385031215613cd057613ccf6136b0565b5b5f613cdd85828601613b33565b9250506020613cee858286016136d7565b9150509250929050565b5f805f60608486031215613d0f57613d0e6136b0565b5b5f613d1c868287016136d7565b9350506020613d2d868287016136d7565b9250506040613d3e868287016136d7565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f820151613d855f85018261390c565b506020820151613d98602085018261390c565b506040820151613dab604085018261390c565b506060820151613dbe606085018261399a565b50505050565b5f613dcf8383613d71565b60808301905092915050565b5f602082019050919050565b5f613df182613d48565b613dfb8185613d52565b9350613e0683613d62565b805f5b83811015613e36578151613e1d8882613dc4565b9750613e2883613ddb565b925050600181019050613e09565b5085935050505092915050565b5f6020820190508181035f830152613e5b8184613de7565b905092915050565b5f60ff82169050919050565b613e7881613e63565b82525050565b5f602082019050613e915f830184613e6f565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ee182613e9b565b810181811067ffffffffffffffff82111715613f0057613eff613eab565b5b80604052505050565b5f613f126136a7565b9050613f1e8282613ed8565b919050565b5f67ffffffffffffffff821115613f3d57613f3c613eab565b5b602082029050602081019050919050565b5f80fd5b5f613f64613f5f84613f23565b613f09565b90508083825260208201905060208402830185811115613f8757613f86613f4e565b5b835b81811015613fb05780613f9c88826136d7565b845260208401935050602081019050613f89565b5050509392505050565b5f82601f830112613fce57613fcd613e97565b5b8135613fde848260208601613f52565b91505092915050565b5f805f8060808587031215613fff57613ffe6136b0565b5b5f85013567ffffffffffffffff81111561401c5761401b6136b4565b5b61402887828801613fba565b945050602061403987828801613b33565b935050604061404a878288016136d7565b925050606061405b878288016136d7565b91505092959194509250565b5f6020828403121561407c5761407b6136b0565b5b5f61408984828501613bc1565b91505092915050565b5f610100820190506140a65f83018b613c92565b6140b3602083018a613c6a565b6140c06040830189613716565b6140cd6060830188613716565b6140da6080830187613716565b6140e760a0830186613c6a565b6140f460c0830185613730565b61410160e0830184613730565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f82015161414b5f8501826137f4565b50602082015161415e602085018261390c565b506040820151614171604085018261390c565b50505050565b5f6141828383614137565b60608301905092915050565b5f602082019050919050565b5f6141a48261410e565b6141ae8185614118565b93506141b983614128565b805f5b838110156141e95781516141d08882614177565b97506141db8361418e565b9250506001810190506141bc565b5085935050505092915050565b5f6020820190508181035f83015261420e818461419a565b905092915050565b61421f81613725565b8114614229575f80fd5b50565b5f8135905061423a81614216565b92915050565b5f8060408385031215614256576142556136b0565b5b5f61426385828601613b33565b92505060206142748582860161422c565b9150509250929050565b5f6060820190506142915f830186613c6a565b61429e6020830185613716565b6142ab6040830184613716565b949350505050565b5f80604083850312156142c9576142c86136b0565b5b5f6142d6858286016136d7565b92505060206142e78582860161422c565b9150509250929050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f614335600c836142f1565b915061434082614301565b602082019050919050565b5f6020820190508181035f83015261436281614329565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f61439d6013836142f1565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b5f819050919050565b6143eb6143e6826136b8565b6143d1565b82525050565b5f8160601b9050919050565b5f614407826143f1565b9050919050565b5f614418826143fd565b9050919050565b61443061442b826137e3565b61440e565b82525050565b5f61444182866143da565b60208201915061445182856143da565b602082019150614461828461441f565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6144a9826136b8565b91506144b4836136b8565b9250826144c4576144c3614472565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614533826136b8565b915061453e836136b8565b9250828201905080821115614556576145556144fc565b5b92915050565b5f8151905061456a81613b1d565b92915050565b5f60208284031215614585576145846136b0565b5b5f6145928482850161455c565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f6145cf6019836142f1565b91506145da8261459b565b602082019050919050565b5f6020820190508181035f8301526145fc816145c3565b9050919050565b5f6060820190506146165f830186613c6a565b6146236020830185613c6a565b6146306040830184613716565b949350505050565b5f60808201905061464b5f830187613716565b6146586020830186613716565b6146656040830185613716565b6146726060830184613716565b95945050505050565b5f60408201905061468e5f830185613c6a565b61469b6020830184613716565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f6146d6601e836142f1565b91506146e1826146a2565b602082019050919050565b5f6020820190508181035f830152614703816146ca565b9050919050565b5f60608201905061471d5f830186613716565b61472a6020830185613716565b6147376040830184613716565b949350505050565b5f614749826136b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361477b5761477a6144fc565b5b600182019050919050565b7f416c72656164792062616e6e65640000000000000000000000000000000000005f82015250565b5f6147ba600e836142f1565b91506147c582614786565b602082019050919050565b5f6020820190508181035f8301526147e7816147ae565b9050919050565b5f6147f8826136b8565b9150614803836136b8565b925082820390508181111561481b5761481a6144fc565b5b92915050565b7f4e6f742062616e6e6564000000000000000000000000000000000000000000005f82015250565b5f614855600a836142f1565b915061486082614821565b602082019050919050565b5f6020820190508181035f83015261488281614849565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f6148ea6010836142f1565b91506148f5826148b6565b602082019050919050565b5f6020820190508181035f830152614917816148de565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f614952600d836142f1565b915061495d8261491e565b602082019050919050565b5f6020820190508181035f83015261497f81614946565b9050919050565b5f61499182876143da565b6020820191506149a1828661441f565b6014820191506149b182856143da565b6020820191506149c1828461441f565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f614a076013836142f1565b9150614a12826149d3565b602082019050919050565b5f6020820190508181035f830152614a34816149fb565b9050919050565b7f416464726573732069732062616e6e65640000000000000000000000000000005f82015250565b5f614a6f6011836142f1565b9150614a7a82614a3b565b602082019050919050565b5f6020820190508181035f830152614a9c81614a63565b9050919050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f614ad7600d836142f1565b9150614ae282614aa3565b602082019050919050565b5f6020820190508181035f830152614b0481614acb565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f614b3f600b836142f1565b9150614b4a82614b0b565b602082019050919050565b5f6020820190508181035f830152614b6c81614b33565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f614ba76011836142f1565b9150614bb282614b73565b602082019050919050565b5f6020820190508181035f830152614bd481614b9b565b9050919050565b7f496e76616c69642074696572206f7220546965722064656163746976617465645f82015250565b5f614c0f6020836142f1565b9150614c1a82614bdb565b602082019050919050565b5f6020820190508181035f830152614c3c81614c03565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f614c776010836142f1565b9150614c8282614c43565b602082019050919050565b5f6020820190508181035f830152614ca481614c6b565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f614cdf6014836142f1565b9150614cea82614cab565b602082019050919050565b5f6020820190508181035f830152614d0c81614cd3565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f614d476017836142f1565b9150614d5282614d13565b602082019050919050565b5f6020820190508181035f830152614d7481614d3b565b9050919050565b5f81519050614d89816136c1565b92915050565b5f60208284031215614da457614da36136b0565b5b5f614db184828501614d7b565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f614dee6017836142f1565b9150614df982614dba565b602082019050919050565b5f6020820190508181035f830152614e1b81614de2565b9050919050565b7f496e76616c6964207469657220494400000000000000000000000000000000005f82015250565b5f614e56600f836142f1565b9150614e6182614e22565b602082019050919050565b5f6020820190508181035f830152614e8381614e4a565b9050919050565b5f614e94826136b8565b9150614e9f836136b8565b9250828202614ead816136b8565b91508282048414831517614ec457614ec36144fc565b5b5092915050565b5f614ed5826136b8565b9150614ee0836136b8565b925082614ef057614eef614472565b5b82820490509291505056fea2646970667358221220f0d3543b20f6182ed30afb84cd53d865623a6a7e52e16acb804e4514961957c164736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [1] : _feeAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [2] : _treasuryAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [3] : _operationsAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [1] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [2] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [3] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode Sourcemap
16050:14534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17138:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17187:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27930:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28444:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19690:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16449:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22741:1854;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17270:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16404:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17537:26;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17444:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17409:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18931:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25797:523;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28559:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19813:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16364:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7801:103;;;;;;;;;;;;;:::i;:::-;;27070:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28052:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27334:563;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16221:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7126:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20162:1032;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28327:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28674:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17223:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;26382:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24638:692;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25371:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28783:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21233:1475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30376:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16271:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16177:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17345:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;26820:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8059:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17138:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17187:29::-;;;;:::o;27930:114::-;27981:16;28017:19;28010:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27930:114;:::o;28444:107::-;28492:14;28526:17;28541:1;28526:14;:17::i;:::-;28519:24;;28444:107;:::o;19690:91::-;7012:13;:11;:13::i;:::-;19754:9:::1;19769:3;19754:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19690:91:::0;:::o;16449:40::-;;;;;;;;;;;;;:::o;22741:1854::-;19204:10;19193:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;19218:17;:29;19236:10;19218:29;;;;;;;;;;;;;;;;;;;;;;;;;19193:54;19171:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;22874:15:::2;22892:7;:16;22900:7;22892:16;;;;;;;;;;;22874:34;;22928:1;:9;;;;;;;;;;;;22927:10;22919:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22974:20;23101:1;:14;;;23046:10;23058:15;23075:10;23029:57;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23019:68;;;;;;22997:101;;:118;;;;:::i;:::-;22974:141;;23128:18;23157:14:::0;23182:21:::2;23216:28:::0;23247:14:::2;:23;23262:7;23247:23;;;;;;;;;;;23216:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;23286:9;23281:323;23305:5;:12;23301:1;:16;23281:323;;;23339:22;23364:5;23370:1;23364:8;;;;;;;;:::i;:::-;;;;;;;;23339:33;;23419:1;:9;;;23406:10;:22;;;;:::i;:::-;23391:12;:37;23387:168;;;23458:1;:13;;;23449:22;;23506:1;:9;;;23490:25;;23534:5;;;23387:168;23583:1;:9;;;23569:23;;;;;:::i;:::-;;;23324:280;23319:3;;;;;;;23281:323;;;;23616:22;23641:21;23616:46;;23673:17;23693:40;23729:3;23693:31;16213:1;23693:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23673:60;;23744:22;23769:45;23810:3;23769:36;16262:2;23769:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;23744:70;;23825:24;23852:73;23900:14;23852:29;23871:9;23852:14;:18;;:29;;;;:::i;:::-;:33;;:73;;;;:::i;:::-;23825:100;;23938:10;;;;;;;;;;;:19;;:30;23958:9;23938:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23979:15;;;;;;;;;;;:24;;:40;24004:14;23979:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;24030:17;;;;;;;;;;;:26;;:44;24057:16;24030:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;24156:4;24109:52;;24114:1;:12;;;;;;;;;;;;24109:26;;;24136:1;:7;;;24109:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;24087:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;24230:1;:12;;;;;;;;;;;;24225:31;;;24265:4;24272:6;24280:1;:7;;;24225:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24312:6;24301:1;:8;;;:17;;;;;;;;;;;;;;;;;;24341:4;24329:1;:9;;;:16;;;;;;;;;;;;;;;;;;24394:7;24363:162;24416:14;24445:9;24469:14;24498:16;24363:162;;;;;;;;;:::i;:::-;;;;;;;;24556:7;24541:46;24565:6;24573:13;24541:46;;;;;;;:::i;:::-;;;;;;;;22863:1732;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;22741:1854:::0;;:::o;17270:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16404:38::-;;;;;;;;;;;;;:::o;17537:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17444:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17409:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18931:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;25797:523::-;7012:13;:11;:13::i;:::-;3525:21:::1;:19;:21::i;:::-;26038:4:::2;25993:50;;25998:10;25993:24;;;26018:7;25993:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;25971:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;26157:10;26152:33;;;26194:4;26201:7;:5;:7::i;:::-;26210;26152:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;26304:7;:5;:7::i;:::-;26270:42;;26295:7;26283:10;26270:42;;;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;25797:523:::0;;:::o;28559:107::-;28607:14;28641:17;28656:1;28641:14;:17::i;:::-;28634:24;;28559:107;:::o;19813:318::-;7012:13;:11;:13::i;:::-;19974:51:::1;;;;;;;;19984:7;19974:51;;;;19993:11;19974:51;;;;20006:12;19974:51;;;;20020:4;19974:51;;;;::::0;19954:5:::1;:17;19960:10;;19954:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20053:10;;20041:59;20065:7;20074:11;20087:12;20041:59;;;;;;;;:::i;:::-;;;;;;;;20111:10;;:12;;;;;;;;;:::i;:::-;;;;;;19813:318:::0;;;:::o;16364:33::-;;;;;;;;;;;;;:::o;7801:103::-;7012:13;:11;:13::i;:::-;7866:30:::1;7893:1;7866:18;:30::i;:::-;7801:103::o:0;27070:256::-;7012:13;:11;:13::i;:::-;27147:15:::1;:25;27163:8;27147:25;;;;;;;;;;;;;;;;;;;;;;;;;27146:26;27138:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;27230:4;27202:15;:25;27218:8;27202:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;27245:19;27270:8;27245:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27309:8;27295:23;;;;;;;;;;;;27070:256:::0;:::o;28052:267::-;28098:18;28129:24;28185:1;28172:10;;:14;;;;:::i;:::-;28156:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;28129:58;;28203:9;28215:1;28203:13;;28198:91;28222:10;;28218:1;:14;28198:91;;;28269:5;:8;28275:1;28269:8;;;;;;;;;;;28254:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;28264:1;28260;:5;;;;:::i;:::-;28254:12;;;;;;;;:::i;:::-;;;;;;;:23;;;;28234:3;;;;;;;28198:91;;;;28306:5;28299:12;;;28052:267;:::o;27334:563::-;7012:13;:11;:13::i;:::-;27412:15:::1;:25;27428:8;27412:25;;;;;;;;;;;;;;;;;;;;;;;;;27404:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27491:5;27463:15;:25;27479:8;27463:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;27512:9;27507:342;27531:19;:26;;;;27527:1;:30;27507:342;;;27609:8;27583:34;;:19;27603:1;27583:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:34;;::::0;27579:259:::1;;27663:19;27734:1;27705:19;:26;;;;:30;;;;:::i;:::-;27663:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27638:19;27658:1;27638:22;;;;;;;;:::i;:::-;;;;;;;;;;:116;;;;;;;;;;;;;;;;;;27773:19;:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;27817:5;;27579:259;27559:3;;;;;;;27507:342;;;;27880:8;27864:25;;;;;;;;;;;;27334:563:::0;:::o;16221:43::-;16262:2;16221:43;:::o;7126:87::-;7172:7;7199:6;;;;;;;;;;;7192:13;;7126:87;:::o;20162:1032::-;20338:15;7012:13;:11;:13::i;:::-;20385:1:::1;20374:8;:12;20366:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20483:4;20440:48;;20445:10;20440:24;;;20465:5;20440:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;20418:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;20593:15;20610:10;20622:5;20629:10;20576:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20552:99;;;;;;20542:109;;20683:318;;;;;;;;20708:7;20683:318;;;;20744:12;20683:318;;;;20783:10;20683:318;;;;;;20815:5;20683:318;;;;20849:1;20683:318;;;;20892:8;20874:15;:26;;;;:::i;:::-;20683:318;;;;20931:1;20683:318;;;;;;20957:5;20683:318;;;;;;20985:4;20683:318;;;;::::0;20664:7:::1;:16;20672:7;20664:16;;;;;;;;;;;:337;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21014:11;21031:7;21014:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21082:7;21055:131;21104:10;21129:5;21167:8;21149:15;:26;;;;:::i;:::-;21055:131;;;;;;;;:::i;:::-;;;;;;;;20162:1032:::0;;;;;;:::o;28327:109::-;28377:14;28411:17;28426:1;28411:14;:17::i;:::-;28404:24;;28327:109;:::o;28674:101::-;28722:16;28758:9;28751:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28674:101;:::o;17223:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26382:430::-;7012:13;:11;:13::i;:::-;26467:9:::1;:16;;;;26459:5;:24;26451:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26544:1;26524:9;:16;;;;:21:::0;26520:90:::1;;26562:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26592:7;;26520:90;26709:9;26738:1;26719:9;:16;;;;:20;;;;:::i;:::-;26709:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26690:9;26700:5;26690:16;;;;;;;;:::i;:::-;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;26789:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:1;26382:430:::0;:::o;24638:692::-;19204:10;19193:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;19218:17;:29;19236:10;19218:29;;;;;;;;;;;;;;;;;;;;;;;;;19193:54;19171:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;24720:15:::2;24738:7;:16;24746:7;24738:16;;;;;;;;;;;24720:34;;24774:1;:9;;;;;;;;;;;;24773:10;24765:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;24820:21;24859:9:::0;24871:1:::2;24859:13;;24854:310;24878:14;:23;24893:7;24878:23;;;;;;;;;;;:30;;;;24874:1;:34;24854:310;;;24930:22;24955:14;:23;24970:7;24955:23;;;;;;;;;;;24979:1;24955:26;;;;;;;;:::i;:::-;;;;;;;;;;;;24930:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24996:21;25020:5;:15;25026:1;:8;;;25020:15;;;;;;;;;;;24996:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;25071:1;:13;;;25063:31;;:45;25095:4;:12;;;25063:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;25140:4;:12;;;25123:29;;;;;:::i;:::-;;;24915:249;;24910:3;;;;;;;24854:310;;;;25181:1;:12;;;;;;;;;;;;25176:31;;;25216:4;25223:7;:5;:7::i;:::-;25232:1;:7;;;25176:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;25263:4;25251:1;:9;;;:16;;;;;;;;;;;;;;;;;;25299:7;25285:37;25308:13;25285:37;;;;;;:::i;:::-;;;;;;;;24709:621;;3569:20:::1;:18;:20::i;:::-;24638:692:::0;:::o;25371:379::-;19204:10;19193:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;19218:17;:29;19236:10;19218:29;;;;;;;;;;;;;;;;;;;;;;;;;19193:54;19171:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;25498:15:::1;25516:7;:16;25524:7;25516:16;;;;;;;;;;;25498:34;;25552:1;:9;;;;;;;;;;;;25551:10;25543:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25625:1;25604:18;:22;25596:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25673:18;25660:1;:9;;;:31;;;;;;;:::i;:::-;;;;;;;;25723:7;25709:33;25732:1;:9;;;25709:33;;;;;;:::i;:::-;;;;;;;;25487:263;25371:379:::0;;:::o;28783:170::-;28875:22;28922:14;:23;28937:7;28922:23;;;;;;;;;;;28915:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28783:170;;;:::o;21233:1475::-;3525:21;:19;:21::i;:::-;19061:15:::1;:27;19077:10;19061:27;;;;;;;;;;;;;;;;;;;;;;;;;19060:28;19052:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21374:15:::2;21392:7;:16;21400:7;21392:16;;;;;;;;;;;21374:34;;21419:21;21443:5;:13;21449:6;21443:13;;;;;;;;;;;21419:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;21477:1;:8;;;;;;;;;;;;21469:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21523:1;:9;;;;;;;;;;;;21522:10;21514:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21585:1;:9;;;21567:15;:27;21559:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:4;:11;;;21627:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21702:32;21711:1;:14;;21702:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21727:6;21702:8;:32::i;:::-;21694:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21787:4;:12;;;21774:9;:25;21766:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21857:1;21841:4;:12;;;:17:::0;21837:567:::2;;21902:16;:25;21919:7;21902:25;;;;;;;;;;;:37;21928:10;21902:37;;;;;;;;;;;;;;;;;;;;;;;;;21901:38;21875:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;22013:16;22057:9:::0;22052:220:::2;22076:9;:16;;;;22072:1;:20;22052:220;;;22165:1;22127:9;22137:1;22127:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22122:28;;;22151:10;22122:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;22118:139;;;22205:4;22191:18;;22232:5;;22118:139;22094:3;;;;;;;22052:220;;;;22294:11;22286:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22388:4;22348:16;:25;22365:7;22348:25;;;;;;;;;;;:37;22374:10;22348:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;21860:544;21837:567;22416:20;22458:4;:17;;;22439:4;:16;;;:36;;;;:::i;:::-;22416:59;;22486:14;:23;22501:7;22486:23;;;;;;;;;;;22529:47;;;;;;;;22543:10;22529:47;;;;;;22555:6;22529:47;;;;22563:12;22529:47;;::::0;22486:101:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22616:12;22598:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;22666:7;22646:54;22675:10;22687:12;22646:54;;;;;;;:::i;:::-;;;;;;;;21363:1345;;;3569:20:::0;:18;:20::i;:::-;21233:1475;;:::o;30376:168::-;7012:13;:11;:13::i;:::-;30485:6:::1;30457:17;:25;30475:6;30457:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;30521:6;30507:29;;;30529:6;30507:29;;;;;;:::i;:::-;;;;;;;;30376:168:::0;;:::o;16271:45::-;16314:2;16271:45;:::o;16177:37::-;16213:1;16177:37;:::o;17345:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26820:219::-;7012:13;:11;:13::i;:::-;26916:10:::1;;26907:6;:19;26899:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;26982:6;26959:5;:13;26965:6;26959:13;;;;;;;;;;;:20;;;:29;;;;;;;;;;;;;;;;;;27016:6;27004:27;27024:6;27004:27;;;;;;:::i;:::-;;;;;;;;26820:219:::0;;:::o;8059:220::-;7012:13;:11;:13::i;:::-;8164:1:::1;8144:22;;:8;:22;;::::0;8140:93:::1;;8218:1;8190:31;;;;;;;;;;;:::i;:::-;;;;;;;;8140:93;8243:28;8262:8;8243:18;:28::i;:::-;8059:220:::0;:::o;28986:1085::-;29077:14;29109:21;29145:11;:18;;;;29133:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;29109:55;;29175:13;29210:9;29205:683;29229:11;:18;;;;29225:1;:22;29205:683;;;29269:10;29282:11;29294:1;29282:14;;;;;;;;:::i;:::-;;;;;;;;;;29269:27;;29311:15;29329:7;:11;29337:2;29329:11;;;;;;;;;;;29311:29;;29357:12;29402:1;29388:10;:15;;;29384:386;;29463:1;:9;;;;;;;;;;;;29462:10;:41;;;;;29494:1;:9;;;29476:15;:27;29462:41;29452:51;;29384:386;;;29543:1;29529:10;:15;;;29525:245;;29603:1;:9;;;;;;;;;;;;29593:19;;29525:245;;;29652:1;29638:10;:15;;;29634:136;;29711:1;:9;;;;;;;;;;;;29710:10;:44;;;;;29744:1;:9;;;29725:15;:28;;29710:44;29700:54;;29634:136;29525:245;29384:386;29790:7;29786:91;;;29834:1;29818:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;29825:5;29818:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;29854:7;;;;;:::i;:::-;;;;29786:91;29254:634;;;29249:3;;;;;;;29205:683;;;;29900:22;29937:5;29925:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;29900:43;;29959:9;29954:85;29978:5;29974:1;:9;29954:85;;;30018:6;30025:1;30018:9;;;;;;;;:::i;:::-;;;;;;;;30005:7;30013:1;30005:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;29985:3;;;;;;;29954:85;;;;30056:7;30049:14;;;;;28986:1085;;;:::o;7291:166::-;7362:12;:10;:12::i;:::-;7351:23;;:7;:5;:7::i;:::-;:23;;;7347:103;;7425:12;:10;:12::i;:::-;7398:40;;;;;;;;;;;:::i;:::-;;;;;;;;7347:103;7291:166::o;3605:315::-;2903:1;3734:7;;:18;3730:88;;3776:30;;;;;;;;;;;;;;3730:88;2903:1;3895:7;:17;;;;3605:315::o;12251:98::-;12309:7;12340:1;12336;:5;;;;:::i;:::-;12329:12;;12251:98;;;;:::o;12650:::-;12708:7;12739:1;12735;:5;;;;:::i;:::-;12728:12;;12650:98;;;;:::o;11894:::-;11952:7;11983:1;11979;:5;;;;:::i;:::-;11972:12;;11894:98;;;;:::o;3928:212::-;2860:1;4111:7;:21;;;;3928:212::o;8439:191::-;8513:16;8532:6;;;;;;;;;;;8513:25;;8558:8;8549:6;;:17;;;;;;;;;;;;;;;;;;8613:8;8582:40;;8603:8;8582:40;;;;;;;;;;;;8502:128;8439:191;:::o;30079:256::-;30183:4;30210:9;30222:1;30210:13;;30205:100;30229:3;:10;30225:1;:14;30205:100;;;30275:5;30265:3;30269:1;30265:6;;;;;;;;:::i;:::-;;;;;;;;:15;30261:32;;30289:4;30282:11;;;;;30261:32;30241:3;;;;;;;30205:100;;;;30322:5;30315:12;;30079:256;;;;;:::o;5135:98::-;5188:7;5215:10;5208:17;;5135:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:90::-;1183:7;1226:5;1219:13;1212:21;1201:32;;1149:90;;;:::o;1245:109::-;1326:21;1341:5;1326:21;:::i;:::-;1321:3;1314:34;1245:109;;:::o;1360:541::-;1531:4;1569:3;1558:9;1554:19;1546:27;;1583:71;1651:1;1640:9;1636:17;1627:6;1583:71;:::i;:::-;1664:72;1732:2;1721:9;1717:18;1708:6;1664:72;:::i;:::-;1746;1814:2;1803:9;1799:18;1790:6;1746:72;:::i;:::-;1828:66;1890:2;1879:9;1875:18;1866:6;1828:66;:::i;:::-;1360:541;;;;;;;:::o;1907:222::-;2000:4;2038:2;2027:9;2023:18;2015:26;;2051:71;2119:1;2108:9;2104:17;2095:6;2051:71;:::i;:::-;1907:222;;;;:::o;2135:114::-;2202:6;2236:5;2230:12;2220:22;;2135:114;;;:::o;2255:184::-;2354:11;2388:6;2383:3;2376:19;2428:4;2423:3;2419:14;2404:29;;2255:184;;;;:::o;2445:132::-;2512:4;2535:3;2527:11;;2565:4;2560:3;2556:14;2548:22;;2445:132;;;:::o;2583:126::-;2620:7;2660:42;2653:5;2649:54;2638:65;;2583:126;;;:::o;2715:96::-;2752:7;2781:24;2799:5;2781:24;:::i;:::-;2770:35;;2715:96;;;:::o;2817:108::-;2894:24;2912:5;2894:24;:::i;:::-;2889:3;2882:37;2817:108;;:::o;2931:179::-;3000:10;3021:46;3063:3;3055:6;3021:46;:::i;:::-;3099:4;3094:3;3090:14;3076:28;;2931:179;;;;:::o;3116:113::-;3186:4;3218;3213:3;3209:14;3201:22;;3116:113;;;:::o;3265:732::-;3384:3;3413:54;3461:5;3413:54;:::i;:::-;3483:86;3562:6;3557:3;3483:86;:::i;:::-;3476:93;;3593:56;3643:5;3593:56;:::i;:::-;3672:7;3703:1;3688:284;3713:6;3710:1;3707:13;3688:284;;;3789:6;3783:13;3816:63;3875:3;3860:13;3816:63;:::i;:::-;3809:70;;3902:60;3955:6;3902:60;:::i;:::-;3892:70;;3748:224;3735:1;3732;3728:9;3723:14;;3688:284;;;3692:14;3988:3;3981:10;;3389:608;;;3265:732;;;;:::o;4003:373::-;4146:4;4184:2;4173:9;4169:18;4161:26;;4233:9;4227:4;4223:20;4219:1;4208:9;4204:17;4197:47;4261:108;4364:4;4355:6;4261:108;:::i;:::-;4253:116;;4003:373;;;;:::o;4382:136::-;4471:6;4505:5;4499:12;4489:22;;4382:136;;;:::o;4524:206::-;4645:11;4679:6;4674:3;4667:19;4719:4;4714:3;4710:14;4695:29;;4524:206;;;;:::o;4736:154::-;4825:4;4848:3;4840:11;;4878:4;4873:3;4869:14;4861:22;;4736:154;;;:::o;4896:77::-;4933:7;4962:5;4951:16;;4896:77;;;:::o;4979:108::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4979:108;;:::o;5093:114::-;5160:6;5194:5;5188:12;5178:22;;5093:114;;;:::o;5213:174::-;5302:11;5336:6;5331:3;5324:19;5376:4;5371:3;5367:14;5352:29;;5213:174;;;;:::o;5393:132::-;5460:4;5483:3;5475:11;;5513:4;5508:3;5504:14;5496:22;;5393:132;;;:::o;5531:108::-;5608:24;5626:5;5608:24;:::i;:::-;5603:3;5596:37;5531:108;;:::o;5645:179::-;5714:10;5735:46;5777:3;5769:6;5735:46;:::i;:::-;5813:4;5808:3;5804:14;5790:28;;5645:179;;;;:::o;5830:113::-;5900:4;5932;5927:3;5923:14;5915:22;;5830:113;;;:::o;5979:712::-;6088:3;6117:54;6165:5;6117:54;:::i;:::-;6187:76;6256:6;6251:3;6187:76;:::i;:::-;6180:83;;6287:56;6337:5;6287:56;:::i;:::-;6366:7;6397:1;6382:284;6407:6;6404:1;6401:13;6382:284;;;6483:6;6477:13;6510:63;6569:3;6554:13;6510:63;:::i;:::-;6503:70;;6596:60;6649:6;6596:60;:::i;:::-;6586:70;;6442:224;6429:1;6426;6422:9;6417:14;;6382:284;;;6386:14;6682:3;6675:10;;6093:598;;;5979:712;;;;:::o;6697:99::-;6768:21;6783:5;6768:21;:::i;:::-;6763:3;6756:34;6697:99;;:::o;6852:1863::-;6955:3;6991:6;6986:3;6982:16;7078:4;7071:5;7067:16;7061:23;7097:63;7154:4;7149:3;7145:14;7131:12;7097:63;:::i;:::-;7008:162;7260:4;7253:5;7249:16;7243:23;7313:3;7307:4;7303:14;7296:4;7291:3;7287:14;7280:38;7339:103;7437:4;7423:12;7339:103;:::i;:::-;7331:111;;7180:273;7541:4;7534:5;7530:16;7524:23;7560:63;7617:4;7612:3;7608:14;7594:12;7560:63;:::i;:::-;7463:170;7716:4;7709:5;7705:16;7699:23;7735:63;7792:4;7787:3;7783:14;7769:12;7735:63;:::i;:::-;7643:165;7898:4;7891:5;7887:16;7881:23;7917:63;7974:4;7969:3;7965:14;7951:12;7917:63;:::i;:::-;7818:172;8075:4;8068:5;8064:16;8058:23;8094:63;8151:4;8146:3;8142:14;8128:12;8094:63;:::i;:::-;8000:167;8251:4;8244:5;8240:16;8234:23;8270:63;8327:4;8322:3;8318:14;8304:12;8270:63;:::i;:::-;8177:166;8428:4;8421:5;8417:16;8411:23;8447:57;8498:4;8493:3;8489:14;8475:12;8447:57;:::i;:::-;8353:161;8598:6;8591:5;8587:18;8581:25;8619:59;8670:6;8665:3;8661:16;8647:12;8619:59;:::i;:::-;8524:164;8705:4;8698:11;;6960:1755;6852:1863;;;;:::o;8721:244::-;8834:10;8869:90;8955:3;8947:6;8869:90;:::i;:::-;8855:104;;8721:244;;;;:::o;8971:135::-;9063:4;9095;9090:3;9086:14;9078:22;;8971:135;;;:::o;9166:1087::-;9329:3;9358:76;9428:5;9358:76;:::i;:::-;9450:108;9551:6;9546:3;9450:108;:::i;:::-;9443:115;;9584:3;9629:4;9621:6;9617:17;9612:3;9608:27;9659:78;9731:5;9659:78;:::i;:::-;9760:7;9791:1;9776:432;9801:6;9798:1;9795:13;9776:432;;;9872:9;9866:4;9862:20;9857:3;9850:33;9923:6;9917:13;9951:108;10054:4;10039:13;9951:108;:::i;:::-;9943:116;;10082:82;10157:6;10082:82;:::i;:::-;10072:92;;10193:4;10188:3;10184:14;10177:21;;9836:372;9823:1;9820;9816:9;9811:14;;9776:432;;;9780:14;10224:4;10217:11;;10244:3;10237:10;;9334:919;;;;;9166:1087;;;;:::o;10259:461::-;10446:4;10484:2;10473:9;10469:18;10461:26;;10533:9;10527:4;10523:20;10519:1;10508:9;10504:17;10497:47;10561:152;10708:4;10699:6;10561:152;:::i;:::-;10553:160;;10259:461;;;;:::o;10726:122::-;10799:24;10817:5;10799:24;:::i;:::-;10792:5;10789:35;10779:63;;10838:1;10835;10828:12;10779:63;10726:122;:::o;10854:139::-;10900:5;10938:6;10925:20;10916:29;;10954:33;10981:5;10954:33;:::i;:::-;10854:139;;;;:::o;10999:329::-;11058:6;11107:2;11095:9;11086:7;11082:23;11078:32;11075:119;;;11113:79;;:::i;:::-;11075:119;11233:1;11258:53;11303:7;11294:6;11283:9;11279:22;11258:53;:::i;:::-;11248:63;;11204:117;10999:329;;;;:::o;11334:104::-;11379:7;11408:24;11426:5;11408:24;:::i;:::-;11397:35;;11334:104;;;:::o;11444:142::-;11547:32;11573:5;11547:32;:::i;:::-;11542:3;11535:45;11444:142;;:::o;11592:254::-;11701:4;11739:2;11728:9;11724:18;11716:26;;11752:87;11836:1;11825:9;11821:17;11812:6;11752:87;:::i;:::-;11592:254;;;;:::o;11852:122::-;11925:24;11943:5;11925:24;:::i;:::-;11918:5;11915:35;11905:63;;11964:1;11961;11954:12;11905:63;11852:122;:::o;11980:139::-;12026:5;12064:6;12051:20;12042:29;;12080:33;12107:5;12080:33;:::i;:::-;11980:139;;;;:::o;12125:474::-;12193:6;12201;12250:2;12238:9;12229:7;12225:23;12221:32;12218:119;;;12256:79;;:::i;:::-;12218:119;12376:1;12401:53;12446:7;12437:6;12426:9;12422:22;12401:53;:::i;:::-;12391:63;;12347:117;12503:2;12529:53;12574:7;12565:6;12554:9;12550:22;12529:53;:::i;:::-;12519:63;;12474:118;12125:474;;;;;:::o;12605:::-;12673:6;12681;12730:2;12718:9;12709:7;12705:23;12701:32;12698:119;;;12736:79;;:::i;:::-;12698:119;12856:1;12881:53;12926:7;12917:6;12906:9;12902:22;12881:53;:::i;:::-;12871:63;;12827:117;12983:2;13009:53;13054:7;13045:6;13034:9;13030:22;13009:53;:::i;:::-;12999:63;;12954:118;12605:474;;;;;:::o;13085:210::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13223:65;13285:1;13274:9;13270:17;13261:6;13223:65;:::i;:::-;13085:210;;;;:::o;13301:118::-;13388:24;13406:5;13388:24;:::i;:::-;13383:3;13376:37;13301:118;;:::o;13425:222::-;13518:4;13556:2;13545:9;13541:18;13533:26;;13569:71;13637:1;13626:9;13622:17;13613:6;13569:71;:::i;:::-;13425:222;;;;:::o;13653:118::-;13740:24;13758:5;13740:24;:::i;:::-;13735:3;13728:37;13653:118;;:::o;13777:222::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13921:71;13989:1;13978:9;13974:17;13965:6;13921:71;:::i;:::-;13777:222;;;;:::o;14005:474::-;14073:6;14081;14130:2;14118:9;14109:7;14105:23;14101:32;14098:119;;;14136:79;;:::i;:::-;14098:119;14256:1;14281:53;14326:7;14317:6;14306:9;14302:22;14281:53;:::i;:::-;14271:63;;14227:117;14383:2;14409:53;14454:7;14445:6;14434:9;14430:22;14409:53;:::i;:::-;14399:63;;14354:118;14005:474;;;;;:::o;14485:619::-;14562:6;14570;14578;14627:2;14615:9;14606:7;14602:23;14598:32;14595:119;;;14633:79;;:::i;:::-;14595:119;14753:1;14778:53;14823:7;14814:6;14803:9;14799:22;14778:53;:::i;:::-;14768:63;;14724:117;14880:2;14906:53;14951:7;14942:6;14931:9;14927:22;14906:53;:::i;:::-;14896:63;;14851:118;15008:2;15034:53;15079:7;15070:6;15059:9;15055:22;15034:53;:::i;:::-;15024:63;;14979:118;14485:619;;;;;:::o;15110:140::-;15203:6;15237:5;15231:12;15221:22;;15110:140;;;:::o;15256:210::-;15381:11;15415:6;15410:3;15403:19;15455:4;15450:3;15446:14;15431:29;;15256:210;;;;:::o;15472:158::-;15565:4;15588:3;15580:11;;15618:4;15613:3;15609:14;15601:22;;15472:158;;;:::o;15694:861::-;15833:4;15828:3;15824:14;15923:4;15916:5;15912:16;15906:23;15942:63;15999:4;15994:3;15990:14;15976:12;15942:63;:::i;:::-;15848:167;16104:4;16097:5;16093:16;16087:23;16123:63;16180:4;16175:3;16171:14;16157:12;16123:63;:::i;:::-;16025:171;16286:4;16279:5;16275:16;16269:23;16305:63;16362:4;16357:3;16353:14;16339:12;16305:63;:::i;:::-;16206:172;16462:4;16455:5;16451:16;16445:23;16481:57;16532:4;16527:3;16523:14;16509:12;16481:57;:::i;:::-;16388:160;15802:753;15694:861;;:::o;16561:283::-;16682:10;16703:98;16797:3;16789:6;16703:98;:::i;:::-;16833:4;16828:3;16824:14;16810:28;;16561:283;;;;:::o;16850:139::-;16946:4;16978;16973:3;16969:14;16961:22;;16850:139;;;:::o;17057:940::-;17228:3;17257:80;17331:5;17257:80;:::i;:::-;17353:112;17458:6;17453:3;17353:112;:::i;:::-;17346:119;;17489:82;17565:5;17489:82;:::i;:::-;17594:7;17625:1;17610:362;17635:6;17632:1;17629:13;17610:362;;;17711:6;17705:13;17738:115;17849:3;17834:13;17738:115;:::i;:::-;17731:122;;17876:86;17955:6;17876:86;:::i;:::-;17866:96;;17670:302;17657:1;17654;17650:9;17645:14;;17610:362;;;17614:14;17988:3;17981:10;;17233:764;;;17057:940;;;;:::o;18003:477::-;18198:4;18236:2;18225:9;18221:18;18213:26;;18285:9;18279:4;18275:20;18271:1;18260:9;18256:17;18249:47;18313:160;18468:4;18459:6;18313:160;:::i;:::-;18305:168;;18003:477;;;;:::o;18486:86::-;18521:7;18561:4;18554:5;18550:16;18539:27;;18486:86;;;:::o;18578:112::-;18661:22;18677:5;18661:22;:::i;:::-;18656:3;18649:35;18578:112;;:::o;18696:214::-;18785:4;18823:2;18812:9;18808:18;18800:26;;18836:67;18900:1;18889:9;18885:17;18876:6;18836:67;:::i;:::-;18696:214;;;;:::o;18916:117::-;19025:1;19022;19015:12;19039:102;19080:6;19131:2;19127:7;19122:2;19115:5;19111:14;19107:28;19097:38;;19039:102;;;:::o;19147:180::-;19195:77;19192:1;19185:88;19292:4;19289:1;19282:15;19316:4;19313:1;19306:15;19333:281;19416:27;19438:4;19416:27;:::i;:::-;19408:6;19404:40;19546:6;19534:10;19531:22;19510:18;19498:10;19495:34;19492:62;19489:88;;;19557:18;;:::i;:::-;19489:88;19597:10;19593:2;19586:22;19376:238;19333:281;;:::o;19620:129::-;19654:6;19681:20;;:::i;:::-;19671:30;;19710:33;19738:4;19730:6;19710:33;:::i;:::-;19620:129;;;:::o;19755:311::-;19832:4;19922:18;19914:6;19911:30;19908:56;;;19944:18;;:::i;:::-;19908:56;19994:4;19986:6;19982:17;19974:25;;20054:4;20048;20044:15;20036:23;;19755:311;;;:::o;20072:117::-;20181:1;20178;20171:12;20212:710;20308:5;20333:81;20349:64;20406:6;20349:64;:::i;:::-;20333:81;:::i;:::-;20324:90;;20434:5;20463:6;20456:5;20449:21;20497:4;20490:5;20486:16;20479:23;;20550:4;20542:6;20538:17;20530:6;20526:30;20579:3;20571:6;20568:15;20565:122;;;20598:79;;:::i;:::-;20565:122;20713:6;20696:220;20730:6;20725:3;20722:15;20696:220;;;20805:3;20834:37;20867:3;20855:10;20834:37;:::i;:::-;20829:3;20822:50;20901:4;20896:3;20892:14;20885:21;;20772:144;20756:4;20751:3;20747:14;20740:21;;20696:220;;;20700:21;20314:608;;20212:710;;;;;:::o;20945:370::-;21016:5;21065:3;21058:4;21050:6;21046:17;21042:27;21032:122;;21073:79;;:::i;:::-;21032:122;21190:6;21177:20;21215:94;21305:3;21297:6;21290:4;21282:6;21278:17;21215:94;:::i;:::-;21206:103;;21022:293;20945:370;;;;:::o;21321:975::-;21432:6;21440;21448;21456;21505:3;21493:9;21484:7;21480:23;21476:33;21473:120;;;21512:79;;:::i;:::-;21473:120;21660:1;21649:9;21645:17;21632:31;21690:18;21682:6;21679:30;21676:117;;;21712:79;;:::i;:::-;21676:117;21817:78;21887:7;21878:6;21867:9;21863:22;21817:78;:::i;:::-;21807:88;;21603:302;21944:2;21970:53;22015:7;22006:6;21995:9;21991:22;21970:53;:::i;:::-;21960:63;;21915:118;22072:2;22098:53;22143:7;22134:6;22123:9;22119:22;22098:53;:::i;:::-;22088:63;;22043:118;22200:2;22226:53;22271:7;22262:6;22251:9;22247:22;22226:53;:::i;:::-;22216:63;;22171:118;21321:975;;;;;;;:::o;22302:329::-;22361:6;22410:2;22398:9;22389:7;22385:23;22381:32;22378:119;;;22416:79;;:::i;:::-;22378:119;22536:1;22561:53;22606:7;22597:6;22586:9;22582:22;22561:53;:::i;:::-;22551:63;;22507:117;22302:329;;;;:::o;22637:973::-;22914:4;22952:3;22941:9;22937:19;22929:27;;22966:71;23034:1;23023:9;23019:17;23010:6;22966:71;:::i;:::-;23047:72;23115:2;23104:9;23100:18;23091:6;23047:72;:::i;:::-;23129;23197:2;23186:9;23182:18;23173:6;23129:72;:::i;:::-;23211;23279:2;23268:9;23264:18;23255:6;23211:72;:::i;:::-;23293:73;23361:3;23350:9;23346:19;23337:6;23293:73;:::i;:::-;23376;23444:3;23433:9;23429:19;23420:6;23376:73;:::i;:::-;23459:67;23521:3;23510:9;23506:19;23497:6;23459:67;:::i;:::-;23536;23598:3;23587:9;23583:19;23574:6;23536:67;:::i;:::-;22637:973;;;;;;;;;;;:::o;23616:144::-;23713:6;23747:5;23741:12;23731:22;;23616:144;;;:::o;23766:214::-;23895:11;23929:6;23924:3;23917:19;23969:4;23964:3;23960:14;23945:29;;23766:214;;;;:::o;23986:162::-;24083:4;24106:3;24098:11;;24136:4;24131:3;24127:14;24119:22;;23986:162;;;:::o;24220:693::-;24367:4;24362:3;24358:14;24461:4;24454:5;24450:16;24444:23;24480:63;24537:4;24532:3;24528:14;24514:12;24480:63;:::i;:::-;24382:171;24637:4;24630:5;24626:16;24620:23;24656:63;24713:4;24708:3;24704:14;24690:12;24656:63;:::i;:::-;24563:166;24814:4;24807:5;24803:16;24797:23;24833:63;24890:4;24885:3;24881:14;24867:12;24833:63;:::i;:::-;24739:167;24336:577;24220:693;;:::o;24919:299::-;25048:10;25069:106;25171:3;25163:6;25069:106;:::i;:::-;25207:4;25202:3;25198:14;25184:28;;24919:299;;;;:::o;25224:143::-;25324:4;25356;25351:3;25347:14;25339:22;;25224:143;;;:::o;25443:972::-;25622:3;25651:84;25729:5;25651:84;:::i;:::-;25751:116;25860:6;25855:3;25751:116;:::i;:::-;25744:123;;25891:86;25971:5;25891:86;:::i;:::-;26000:7;26031:1;26016:374;26041:6;26038:1;26035:13;26016:374;;;26117:6;26111:13;26144:123;26263:3;26248:13;26144:123;:::i;:::-;26137:130;;26290:90;26373:6;26290:90;:::i;:::-;26280:100;;26076:314;26063:1;26060;26056:9;26051:14;;26016:374;;;26020:14;26406:3;26399:10;;25627:788;;;25443:972;;;;:::o;26421:493::-;26624:4;26662:2;26651:9;26647:18;26639:26;;26711:9;26705:4;26701:20;26697:1;26686:9;26682:17;26675:47;26739:168;26902:4;26893:6;26739:168;:::i;:::-;26731:176;;26421:493;;;;:::o;26920:116::-;26990:21;27005:5;26990:21;:::i;:::-;26983:5;26980:32;26970:60;;27026:1;27023;27016:12;26970:60;26920:116;:::o;27042:133::-;27085:5;27123:6;27110:20;27101:29;;27139:30;27163:5;27139:30;:::i;:::-;27042:133;;;;:::o;27181:468::-;27246:6;27254;27303:2;27291:9;27282:7;27278:23;27274:32;27271:119;;;27309:79;;:::i;:::-;27271:119;27429:1;27454:53;27499:7;27490:6;27479:9;27475:22;27454:53;:::i;:::-;27444:63;;27400:117;27556:2;27582:50;27624:7;27615:6;27604:9;27600:22;27582:50;:::i;:::-;27572:60;;27527:115;27181:468;;;;;:::o;27655:442::-;27804:4;27842:2;27831:9;27827:18;27819:26;;27855:71;27923:1;27912:9;27908:17;27899:6;27855:71;:::i;:::-;27936:72;28004:2;27993:9;27989:18;27980:6;27936:72;:::i;:::-;28018;28086:2;28075:9;28071:18;28062:6;28018:72;:::i;:::-;27655:442;;;;;;:::o;28103:468::-;28168:6;28176;28225:2;28213:9;28204:7;28200:23;28196:32;28193:119;;;28231:79;;:::i;:::-;28193:119;28351:1;28376:53;28421:7;28412:6;28401:9;28397:22;28376:53;:::i;:::-;28366:63;;28322:117;28478:2;28504:50;28546:7;28537:6;28526:9;28522:22;28504:50;:::i;:::-;28494:60;;28449:115;28103:468;;;;;:::o;28577:169::-;28661:11;28695:6;28690:3;28683:19;28735:4;28730:3;28726:14;28711:29;;28577:169;;;;:::o;28752:162::-;28892:14;28888:1;28880:6;28876:14;28869:38;28752:162;:::o;28920:366::-;29062:3;29083:67;29147:2;29142:3;29083:67;:::i;:::-;29076:74;;29159:93;29248:3;29159:93;:::i;:::-;29277:2;29272:3;29268:12;29261:19;;28920:366;;;:::o;29292:419::-;29458:4;29496:2;29485:9;29481:18;29473:26;;29545:9;29539:4;29535:20;29531:1;29520:9;29516:17;29509:47;29573:131;29699:4;29573:131;:::i;:::-;29565:139;;29292:419;;;:::o;29717:169::-;29857:21;29853:1;29845:6;29841:14;29834:45;29717:169;:::o;29892:366::-;30034:3;30055:67;30119:2;30114:3;30055:67;:::i;:::-;30048:74;;30131:93;30220:3;30131:93;:::i;:::-;30249:2;30244:3;30240:12;30233:19;;29892:366;;;:::o;30264:419::-;30430:4;30468:2;30457:9;30453:18;30445:26;;30517:9;30511:4;30507:20;30503:1;30492:9;30488:17;30481:47;30545:131;30671:4;30545:131;:::i;:::-;30537:139;;30264:419;;;:::o;30689:79::-;30728:7;30757:5;30746:16;;30689:79;;;:::o;30774:157::-;30879:45;30899:24;30917:5;30899:24;:::i;:::-;30879:45;:::i;:::-;30874:3;30867:58;30774:157;;:::o;30937:94::-;30970:8;31018:5;31014:2;31010:14;30989:35;;30937:94;;;:::o;31037:::-;31076:7;31105:20;31119:5;31105:20;:::i;:::-;31094:31;;31037:94;;;:::o;31137:100::-;31176:7;31205:26;31225:5;31205:26;:::i;:::-;31194:37;;31137:100;;;:::o;31243:157::-;31348:45;31368:24;31386:5;31368:24;:::i;:::-;31348:45;:::i;:::-;31343:3;31336:58;31243:157;;:::o;31406:538::-;31574:3;31589:75;31660:3;31651:6;31589:75;:::i;:::-;31689:2;31684:3;31680:12;31673:19;;31702:75;31773:3;31764:6;31702:75;:::i;:::-;31802:2;31797:3;31793:12;31786:19;;31815:75;31886:3;31877:6;31815:75;:::i;:::-;31915:2;31910:3;31906:12;31899:19;;31935:3;31928:10;;31406:538;;;;;;:::o;31950:180::-;31998:77;31995:1;31988:88;32095:4;32092:1;32085:15;32119:4;32116:1;32109:15;32136:176;32168:1;32185:20;32203:1;32185:20;:::i;:::-;32180:25;;32219:20;32237:1;32219:20;:::i;:::-;32214:25;;32258:1;32248:35;;32263:18;;:::i;:::-;32248:35;32304:1;32301;32297:9;32292:14;;32136:176;;;;:::o;32318:180::-;32366:77;32363:1;32356:88;32463:4;32460:1;32453:15;32487:4;32484:1;32477:15;32504:180;32552:77;32549:1;32542:88;32649:4;32646:1;32639:15;32673:4;32670:1;32663:15;32690:191;32730:3;32749:20;32767:1;32749:20;:::i;:::-;32744:25;;32783:20;32801:1;32783:20;:::i;:::-;32778:25;;32826:1;32823;32819:9;32812:16;;32847:3;32844:1;32841:10;32838:36;;;32854:18;;:::i;:::-;32838:36;32690:191;;;;:::o;32887:143::-;32944:5;32975:6;32969:13;32960:22;;32991:33;33018:5;32991:33;:::i;:::-;32887:143;;;;:::o;33036:351::-;33106:6;33155:2;33143:9;33134:7;33130:23;33126:32;33123:119;;;33161:79;;:::i;:::-;33123:119;33281:1;33306:64;33362:7;33353:6;33342:9;33338:22;33306:64;:::i;:::-;33296:74;;33252:128;33036:351;;;;:::o;33393:175::-;33533:27;33529:1;33521:6;33517:14;33510:51;33393:175;:::o;33574:366::-;33716:3;33737:67;33801:2;33796:3;33737:67;:::i;:::-;33730:74;;33813:93;33902:3;33813:93;:::i;:::-;33931:2;33926:3;33922:12;33915:19;;33574:366;;;:::o;33946:419::-;34112:4;34150:2;34139:9;34135:18;34127:26;;34199:9;34193:4;34189:20;34185:1;34174:9;34170:17;34163:47;34227:131;34353:4;34227:131;:::i;:::-;34219:139;;33946:419;;;:::o;34371:442::-;34520:4;34558:2;34547:9;34543:18;34535:26;;34571:71;34639:1;34628:9;34624:17;34615:6;34571:71;:::i;:::-;34652:72;34720:2;34709:9;34705:18;34696:6;34652:72;:::i;:::-;34734;34802:2;34791:9;34787:18;34778:6;34734:72;:::i;:::-;34371:442;;;;;;:::o;34819:553::-;34996:4;35034:3;35023:9;35019:19;35011:27;;35048:71;35116:1;35105:9;35101:17;35092:6;35048:71;:::i;:::-;35129:72;35197:2;35186:9;35182:18;35173:6;35129:72;:::i;:::-;35211;35279:2;35268:9;35264:18;35255:6;35211:72;:::i;:::-;35293;35361:2;35350:9;35346:18;35337:6;35293:72;:::i;:::-;34819:553;;;;;;;:::o;35378:332::-;35499:4;35537:2;35526:9;35522:18;35514:26;;35550:71;35618:1;35607:9;35603:17;35594:6;35550:71;:::i;:::-;35631:72;35699:2;35688:9;35684:18;35675:6;35631:72;:::i;:::-;35378:332;;;;;:::o;35716:180::-;35856:32;35852:1;35844:6;35840:14;35833:56;35716:180;:::o;35902:366::-;36044:3;36065:67;36129:2;36124:3;36065:67;:::i;:::-;36058:74;;36141:93;36230:3;36141:93;:::i;:::-;36259:2;36254:3;36250:12;36243:19;;35902:366;;;:::o;36274:419::-;36440:4;36478:2;36467:9;36463:18;36455:26;;36527:9;36521:4;36517:20;36513:1;36502:9;36498:17;36491:47;36555:131;36681:4;36555:131;:::i;:::-;36547:139;;36274:419;;;:::o;36699:442::-;36848:4;36886:2;36875:9;36871:18;36863:26;;36899:71;36967:1;36956:9;36952:17;36943:6;36899:71;:::i;:::-;36980:72;37048:2;37037:9;37033:18;37024:6;36980:72;:::i;:::-;37062;37130:2;37119:9;37115:18;37106:6;37062:72;:::i;:::-;36699:442;;;;;;:::o;37147:233::-;37186:3;37209:24;37227:5;37209:24;:::i;:::-;37200:33;;37255:66;37248:5;37245:77;37242:103;;37325:18;;:::i;:::-;37242:103;37372:1;37365:5;37361:13;37354:20;;37147:233;;;:::o;37386:164::-;37526:16;37522:1;37514:6;37510:14;37503:40;37386:164;:::o;37556:366::-;37698:3;37719:67;37783:2;37778:3;37719:67;:::i;:::-;37712:74;;37795:93;37884:3;37795:93;:::i;:::-;37913:2;37908:3;37904:12;37897:19;;37556:366;;;:::o;37928:419::-;38094:4;38132:2;38121:9;38117:18;38109:26;;38181:9;38175:4;38171:20;38167:1;38156:9;38152:17;38145:47;38209:131;38335:4;38209:131;:::i;:::-;38201:139;;37928:419;;;:::o;38353:194::-;38393:4;38413:20;38431:1;38413:20;:::i;:::-;38408:25;;38447:20;38465:1;38447:20;:::i;:::-;38442:25;;38491:1;38488;38484:9;38476:17;;38515:1;38509:4;38506:11;38503:37;;;38520:18;;:::i;:::-;38503:37;38353:194;;;;:::o;38553:160::-;38693:12;38689:1;38681:6;38677:14;38670:36;38553:160;:::o;38719:366::-;38861:3;38882:67;38946:2;38941:3;38882:67;:::i;:::-;38875:74;;38958:93;39047:3;38958:93;:::i;:::-;39076:2;39071:3;39067:12;39060:19;;38719:366;;;:::o;39091:419::-;39257:4;39295:2;39284:9;39280:18;39272:26;;39344:9;39338:4;39334:20;39330:1;39319:9;39315:17;39308:47;39372:131;39498:4;39372:131;:::i;:::-;39364:139;;39091:419;;;:::o;39516:180::-;39564:77;39561:1;39554:88;39661:4;39658:1;39651:15;39685:4;39682:1;39675:15;39702:166;39842:18;39838:1;39830:6;39826:14;39819:42;39702:166;:::o;39874:366::-;40016:3;40037:67;40101:2;40096:3;40037:67;:::i;:::-;40030:74;;40113:93;40202:3;40113:93;:::i;:::-;40231:2;40226:3;40222:12;40215:19;;39874:366;;;:::o;40246:419::-;40412:4;40450:2;40439:9;40435:18;40427:26;;40499:9;40493:4;40489:20;40485:1;40474:9;40470:17;40463:47;40527:131;40653:4;40527:131;:::i;:::-;40519:139;;40246:419;;;:::o;40671:163::-;40811:15;40807:1;40799:6;40795:14;40788:39;40671:163;:::o;40840:366::-;40982:3;41003:67;41067:2;41062:3;41003:67;:::i;:::-;40996:74;;41079:93;41168:3;41079:93;:::i;:::-;41197:2;41192:3;41188:12;41181:19;;40840:366;;;:::o;41212:419::-;41378:4;41416:2;41405:9;41401:18;41393:26;;41465:9;41459:4;41455:20;41451:1;41440:9;41436:17;41429:47;41493:131;41619:4;41493:131;:::i;:::-;41485:139;;41212:419;;;:::o;41637:679::-;41833:3;41848:75;41919:3;41910:6;41848:75;:::i;:::-;41948:2;41943:3;41939:12;41932:19;;41961:75;42032:3;42023:6;41961:75;:::i;:::-;42061:2;42056:3;42052:12;42045:19;;42074:75;42145:3;42136:6;42074:75;:::i;:::-;42174:2;42169:3;42165:12;42158:19;;42187:75;42258:3;42249:6;42187:75;:::i;:::-;42287:2;42282:3;42278:12;42271:19;;42307:3;42300:10;;41637:679;;;;;;;:::o;42322:169::-;42462:21;42458:1;42450:6;42446:14;42439:45;42322:169;:::o;42497:366::-;42639:3;42660:67;42724:2;42719:3;42660:67;:::i;:::-;42653:74;;42736:93;42825:3;42736:93;:::i;:::-;42854:2;42849:3;42845:12;42838:19;;42497:366;;;:::o;42869:419::-;43035:4;43073:2;43062:9;43058:18;43050:26;;43122:9;43116:4;43112:20;43108:1;43097:9;43093:17;43086:47;43150:131;43276:4;43150:131;:::i;:::-;43142:139;;42869:419;;;:::o;43294:167::-;43434:19;43430:1;43422:6;43418:14;43411:43;43294:167;:::o;43467:366::-;43609:3;43630:67;43694:2;43689:3;43630:67;:::i;:::-;43623:74;;43706:93;43795:3;43706:93;:::i;:::-;43824:2;43819:3;43815:12;43808:19;;43467:366;;;:::o;43839:419::-;44005:4;44043:2;44032:9;44028:18;44020:26;;44092:9;44086:4;44082:20;44078:1;44067:9;44063:17;44056:47;44120:131;44246:4;44120:131;:::i;:::-;44112:139;;43839:419;;;:::o;44264:163::-;44404:15;44400:1;44392:6;44388:14;44381:39;44264:163;:::o;44433:366::-;44575:3;44596:67;44660:2;44655:3;44596:67;:::i;:::-;44589:74;;44672:93;44761:3;44672:93;:::i;:::-;44790:2;44785:3;44781:12;44774:19;;44433:366;;;:::o;44805:419::-;44971:4;45009:2;44998:9;44994:18;44986:26;;45058:9;45052:4;45048:20;45044:1;45033:9;45029:17;45022:47;45086:131;45212:4;45086:131;:::i;:::-;45078:139;;44805:419;;;:::o;45230:161::-;45370:13;45366:1;45358:6;45354:14;45347:37;45230:161;:::o;45397:366::-;45539:3;45560:67;45624:2;45619:3;45560:67;:::i;:::-;45553:74;;45636:93;45725:3;45636:93;:::i;:::-;45754:2;45749:3;45745:12;45738:19;;45397:366;;;:::o;45769:419::-;45935:4;45973:2;45962:9;45958:18;45950:26;;46022:9;46016:4;46012:20;46008:1;45997:9;45993:17;45986:47;46050:131;46176:4;46050:131;:::i;:::-;46042:139;;45769:419;;;:::o;46194:167::-;46334:19;46330:1;46322:6;46318:14;46311:43;46194:167;:::o;46367:366::-;46509:3;46530:67;46594:2;46589:3;46530:67;:::i;:::-;46523:74;;46606:93;46695:3;46606:93;:::i;:::-;46724:2;46719:3;46715:12;46708:19;;46367:366;;;:::o;46739:419::-;46905:4;46943:2;46932:9;46928:18;46920:26;;46992:9;46986:4;46982:20;46978:1;46967:9;46963:17;46956:47;47020:131;47146:4;47020:131;:::i;:::-;47012:139;;46739:419;;;:::o;47164:182::-;47304:34;47300:1;47292:6;47288:14;47281:58;47164:182;:::o;47352:366::-;47494:3;47515:67;47579:2;47574:3;47515:67;:::i;:::-;47508:74;;47591:93;47680:3;47591:93;:::i;:::-;47709:2;47704:3;47700:12;47693:19;;47352:366;;;:::o;47724:419::-;47890:4;47928:2;47917:9;47913:18;47905:26;;47977:9;47971:4;47967:20;47963:1;47952:9;47948:17;47941:47;48005:131;48131:4;48005:131;:::i;:::-;47997:139;;47724:419;;;:::o;48149:166::-;48289:18;48285:1;48277:6;48273:14;48266:42;48149:166;:::o;48321:366::-;48463:3;48484:67;48548:2;48543:3;48484:67;:::i;:::-;48477:74;;48560:93;48649:3;48560:93;:::i;:::-;48678:2;48673:3;48669:12;48662:19;;48321:366;;;:::o;48693:419::-;48859:4;48897:2;48886:9;48882:18;48874:26;;48946:9;48940:4;48936:20;48932:1;48921:9;48917:17;48910:47;48974:131;49100:4;48974:131;:::i;:::-;48966:139;;48693:419;;;:::o;49118:170::-;49258:22;49254:1;49246:6;49242:14;49235:46;49118:170;:::o;49294:366::-;49436:3;49457:67;49521:2;49516:3;49457:67;:::i;:::-;49450:74;;49533:93;49622:3;49533:93;:::i;:::-;49651:2;49646:3;49642:12;49635:19;;49294:366;;;:::o;49666:419::-;49832:4;49870:2;49859:9;49855:18;49847:26;;49919:9;49913:4;49909:20;49905:1;49894:9;49890:17;49883:47;49947:131;50073:4;49947:131;:::i;:::-;49939:139;;49666:419;;;:::o;50091:173::-;50231:25;50227:1;50219:6;50215:14;50208:49;50091:173;:::o;50270:366::-;50412:3;50433:67;50497:2;50492:3;50433:67;:::i;:::-;50426:74;;50509:93;50598:3;50509:93;:::i;:::-;50627:2;50622:3;50618:12;50611:19;;50270:366;;;:::o;50642:419::-;50808:4;50846:2;50835:9;50831:18;50823:26;;50895:9;50889:4;50885:20;50881:1;50870:9;50866:17;50859:47;50923:131;51049:4;50923:131;:::i;:::-;50915:139;;50642:419;;;:::o;51067:143::-;51124:5;51155:6;51149:13;51140:22;;51171:33;51198:5;51171:33;:::i;:::-;51067:143;;;;:::o;51216:351::-;51286:6;51335:2;51323:9;51314:7;51310:23;51306:32;51303:119;;;51341:79;;:::i;:::-;51303:119;51461:1;51486:64;51542:7;51533:6;51522:9;51518:22;51486:64;:::i;:::-;51476:74;;51432:128;51216:351;;;;:::o;51573:173::-;51713:25;51709:1;51701:6;51697:14;51690:49;51573:173;:::o;51752:366::-;51894:3;51915:67;51979:2;51974:3;51915:67;:::i;:::-;51908:74;;51991:93;52080:3;51991:93;:::i;:::-;52109:2;52104:3;52100:12;52093:19;;51752:366;;;:::o;52124:419::-;52290:4;52328:2;52317:9;52313:18;52305:26;;52377:9;52371:4;52367:20;52363:1;52352:9;52348:17;52341:47;52405:131;52531:4;52405:131;:::i;:::-;52397:139;;52124:419;;;:::o;52549:165::-;52689:17;52685:1;52677:6;52673:14;52666:41;52549:165;:::o;52720:366::-;52862:3;52883:67;52947:2;52942:3;52883:67;:::i;:::-;52876:74;;52959:93;53048:3;52959:93;:::i;:::-;53077:2;53072:3;53068:12;53061:19;;52720:366;;;:::o;53092:419::-;53258:4;53296:2;53285:9;53281:18;53273:26;;53345:9;53339:4;53335:20;53331:1;53320:9;53316:17;53309:47;53373:131;53499:4;53373:131;:::i;:::-;53365:139;;53092:419;;;:::o;53517:410::-;53557:7;53580:20;53598:1;53580:20;:::i;:::-;53575:25;;53614:20;53632:1;53614:20;:::i;:::-;53609:25;;53669:1;53666;53662:9;53691:30;53709:11;53691:30;:::i;:::-;53680:41;;53870:1;53861:7;53857:15;53854:1;53851:22;53831:1;53824:9;53804:83;53781:139;;53900:18;;:::i;:::-;53781:139;53565:362;53517:410;;;;:::o;53933:185::-;53973:1;53990:20;54008:1;53990:20;:::i;:::-;53985:25;;54024:20;54042:1;54024:20;:::i;:::-;54019:25;;54063:1;54053:35;;54068:18;;:::i;:::-;54053:35;54110:1;54107;54103:9;54098:14;;53933:185;;;;:::o
Swarm Source
ipfs://f0d3543b20f6182ed30afb84cd53d865623a6a7e52e16acb804e4514961957c1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
APE | 100.00% | $0.70696 | 8 | $5.66 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.