More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Match | 9364650 | 7 days ago | IN | 0 APE | 0.00664235 | ||||
Add Tier | 9364614 | 7 days ago | IN | 0 APE | 0.00307552 | ||||
Transfer Ownersh... | 9344856 | 7 days ago | IN | 0 APE | 0.00074004 | ||||
Add Tier | 9344536 | 7 days ago | IN | 0 APE | 0.00206194 | ||||
Remove Entry NFT | 9344511 | 7 days ago | IN | 0 APE | 0.00082937 | ||||
Add Entry NFT | 9344509 | 7 days ago | IN | 0 APE | 0.00131008 | ||||
Add Entry NFT | 9344369 | 7 days ago | IN | 0 APE | 0.00174477 |
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-05 */ // ___ ___ ___ ___ _____ // /__/\ ___ /__/\ / /\ / /\ / /::\ // _\_ \:\ / /\ \ \:\ / /::\ / /::\ / /:/\:\ // /__/\ \:\ / /:/ \ \:\ / /:/\:\ / /:/\:\ / /:/ \:\ // _\_ \:\ \:\ /__/::\ _____\__\:\ / /:/~/:/ / /:/~/::\ /__/:/ \__\:| // /__/\ \:\ \:\ \__\/\:\__ /__/::::::::\ /__/:/ /:/ /__/:/ /:/\:\ \ \:\ / /:/ // \ \:\ \:\/:/ \ \:\/\ \ \:\~~\~~\/ \ \:\/:/ \ \:\/:/__\/ \ \:\ /:/ // \ \:\ \::/ \__\::/ \ \:\ ~~~ \ \::/ \ \::/ \ \:\/:/ // \ \:\/:/ /__/:/ \ \:\ \ \:\ \ \:\ \ \::/ // \ \::/ \__\/ \ \:\ \ \:\ \ \:\ \__\/ // \__\/ \__\/ \__\/ \__\/ // 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 ); 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 { 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"); 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(); } // View functions 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":"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":"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":"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":"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":"caller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateCaller","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
60806040526001600655348015610014575f80fd5b506040516149a13803806149a1833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b6146278061037a5f395ff3fe6080604052600436106101f1575f3560e01c806380e36dd81161010c578063c82db8f91161009f578063dfbed6231161006e578063dfbed623146106fe578063e7e8517c14610726578063eaf98d2314610750578063ecdc2c011461077a578063f2fde38b146107b8576101f8565b8063c82db8f914610656578063cc8db4ff1461067e578063cfb95e17146106a6578063dc3a4e9b146106e2576101f8565b80639a1564f0116100db5780639a1564f0146105975780639dd45d77146105c15780639fe9ada3146105eb578063b82ee8c71461062e576101f8565b806380e36dd8146104dd57806383d5e726146105075780638da5cb5b1461053157806398eeafc41461055b576101f8565b8063463fec0f1161018457806361eba6521161015357806361eba6521461044b5780636358ec571461047557806365e17c9d1461049d578063715018a6146104c7576101f8565b8063463fec0f1461036f578063536fff6c146103ab57806354f276b9146103e75780636088e93a14610423576101f8565b80630f5f1dbc116101c05780630f5f1dbc146102b75780631966cdbe146102e15780632f333d2e14610309578063339b2cff14610345576101f8565b8063039af9eb146101fc5780630594fd041461023b5780630a47f932146102655780630bf9ed2b1461028f576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610222600480360381019061021d9190612fbf565b6107e0565b6040516102329493929190613013565b60405180910390f35b348015610246575f80fd5b5061024f610818565b60405161025c9190613056565b60405180910390f35b348015610270575f80fd5b5061027961081e565b6040516102869190613309565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b09190613353565b61082f565b005b3480156102c2575f80fd5b506102cb61089a565b6040516102d8919061339e565b60405180910390f35b3480156102ec575f80fd5b50610307600480360381019061030291906133e1565b6108bf565b005b348015610314575f80fd5b5061032f600480360381019061032a919061341f565b610fb7565b60405161033c919061345d565b60405180910390f35b348015610350575f80fd5b50610359610fe1565b604051610366919061339e565b60405180910390f35b34801561037a575f80fd5b5061039560048036038101906103909190612fbf565b611006565b6040516103a29190613485565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc9190613353565b611041565b6040516103de919061345d565b60405180910390f35b3480156103f2575f80fd5b5061040d60048036038101906104089190612fbf565b61105e565b60405161041a91906134ad565b60405180910390f35b34801561042e575f80fd5b50610449600480360381019061044491906134c6565b61107e565b005b348015610456575f80fd5b5061045f611252565b60405161046c9190613309565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190613504565b611263565b005b3480156104a8575f80fd5b506104b161133a565b6040516104be919061339e565b60405180910390f35b3480156104d2575f80fd5b506104db61135f565b005b3480156104e8575f80fd5b506104f1611372565b6040516104fe919061364f565b60405180910390f35b348015610512575f80fd5b5061051b61147b565b604051610528919061368a565b60405180910390f35b34801561053c575f80fd5b50610545611480565b6040516105529190613485565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906137f3565b6114a7565b60405161058e91906134ad565b60405180910390f35b3480156105a2575f80fd5b506105ab61181b565b6040516105b89190613309565b60405180910390f35b3480156105cc575f80fd5b506105d561182b565b6040516105e2919061391b565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c919061393b565b6118b6565b604051610625989796959493929190613966565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f9190612fbf565b611952565b005b348015610661575f80fd5b5061067c6004803603810190610677919061393b565b611ae5565b005b348015610689575f80fd5b506106a4600480360381019061069f91906133e1565b611e9f565b005b3480156106b1575f80fd5b506106cc60048036038101906106c7919061393b565b612068565b6040516106d99190613aca565b60405180910390f35b6106fc60048036038101906106f791906133e1565b61213d565b005b348015610709575f80fd5b50610724600480360381019061071f9190613b14565b612720565b005b348015610731575f80fd5b5061073a6127ce565b604051610747919061368a565b60405180910390f35b34801561075b575f80fd5b506107646127d3565b604051610771919061368a565b60405180910390f35b348015610785575f80fd5b506107a0600480360381019061079b91906133e1565b6127d8565b6040516107af93929190613b52565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d99190613353565b612837565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b606061082a60016128bb565b905090565b610837612c49565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108de611480565b73ffffffffffffffffffffffffffffffffffffffff1614806109465750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613be1565b60405180910390fd5b61098d612cd0565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea90613c49565b60405180910390fd5b5f8160040154834233604051602001610a0e93929190613ccc565b604051602081830303815290604052805190602001205f1c610a309190613d35565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610afe578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610a66565b5050505090505f5b8151811015610b77575f828281518110610b2357610b22613d65565b5b60200260200101519050806040015186610b3d9190613dbf565b871015610b5757805f015194508060400151935050610b77565b806040015186610b679190613dbf565b9550508080600101915050610b06565b505f4790505f610ba76064610b99600860ff1685612d1690919063ffffffff16565b612d2b90919063ffffffff16565b90505f610bd46064610bc6604860ff1686612d1690919063ffffffff16565b612d2b90919063ffffffff16565b90505f610bfc82610bee8587612d4090919063ffffffff16565b612d4090919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610c62573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610cc7573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d2c573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610da49190613056565b602060405180830381865afa158015610dbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de39190613e06565b73ffffffffffffffffffffffffffffffffffffffff1614610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090613e7b565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e9d93929190613e99565b5f604051808303815f87803b158015610eb4575f80fd5b505af1158015610ec6573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610f5f9493929190613ece565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f99929190613f11565b60405180910390a250505050505050505050610fb3612d55565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110611015575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061106d575f80fd5b905f5260205f20015f915090505481565b611086612c49565b61108e612cd0565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016110de9190613056565b602060405180830381865afa1580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613e06565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613f82565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611198611480565b846040518463ffffffff1660e01b81526004016111b793929190613e99565b5f604051808303815f87803b1580156111ce575f80fd5b505af11580156111e0573d5f803e3d5ffd5b505050506111ec611480565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461124e612d55565b5050565b606061125e60026128bb565b905090565b61126b612c49565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a84848460405161131693929190613fa0565b60405180910390a260065f81548092919061133090613fd5565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611367612c49565b6113705f612d5e565b565b60605f6001600654611384919061401c565b67ffffffffffffffff81111561139d5761139c6136b7565b5b6040519080825280602002602001820160405280156113d657816020015b6113c3612e78565b8152602001906001900390816113bb5790505b5090505f600190505b6006548110156114735760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361144a919061401c565b8151811061145b5761145a613d65565b5b602002602001018190525080806001019150506113df565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6114b0612c49565b5f82116114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990614099565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016115429190613056565b602060405180830381865afa15801561155d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115819190613e06565b73ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90614101565b60405180910390fd5b428484336040516020016115ee949392919061411f565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f815260200183426116529190613dbf565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906116b7929190612e9e565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa91858585426117fc9190613dbf565b60405161180b93929190613b52565b60405180910390a2949350505050565b60606118265f6128bb565b905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611863575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61195a612c49565b600c8054905081106119a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611998906141b6565b60405180910390fd5b6001600c80549050036119f757600c8054806119c0576119bf6141d4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ae2565b600c6001600c80549050611a0b919061401c565b81548110611a1c57611a1b613d65565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110611a5857611a57613d65565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480611aaf57611aae6141d4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b3373ffffffffffffffffffffffffffffffffffffffff16611b04611480565b73ffffffffffffffffffffffffffffffffffffffff161480611b6c5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613be1565b60405180910390fd5b611bb3612cd0565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090613c49565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611da4575f60095f8681526020019081526020015f208281548110611c5f57611c5e613d65565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015611d83573d5f803e3d5ffd5b50805f015184611d939190613dbf565b935050508080600101915050611c1f565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611ded611480565b85600301546040518463ffffffff1660e01b8152600401611e1093929190613e99565b5f604051808303815f87803b158015611e27575f80fd5b505af1158015611e39573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611e8a9190613056565b60405180910390a25050611e9c612d55565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611ebe611480565b73ffffffffffffffffffffffffffffffffffffffff161480611f265750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c90613be1565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290613c49565b60405180910390fd5b5f821161200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490614099565b60405180910390fd5b81816005015f8282546120209190613dbf565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d4826005015460405161205b9190613056565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015612132578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250508152602001906001019061209a565b505050509050919050565b612145612cd0565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f79061424b565b60405180910390fd5b8160060160149054906101000a900460ff1615612252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612249906142b3565b60405180910390fd5b81600501544210612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061431b565b60405180910390fd5b80606001516122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614383565b60405180910390fd5b6123368260010180548060200260200160405190810160405280929190818152602001828054801561232b57602002820191905f5260205f20905b815481526020019060010190808311612317575b505050505084612e1f565b612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c906143eb565b60405180910390fd5b805f015134146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614453565b60405180910390fd5b5f815f0151036125e45760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612454906144bb565b60405180910390fd5b5f805b600c8054905081101561253d575f600c828154811061248257612481613d65565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124e29190613485565b602060405180830381865afa1580156124fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252191906144ed565b1115612530576001915061253d565b8080600101915050612460565b508061257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614562565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f816040015182602001516125f99190613dbf565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546126d09190613dbf565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612709929190613f11565b60405180910390a250505061271c612d55565b5050565b612728612c49565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c2796826040516127c2919061345d565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f2081815481106127f1575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b61283f612c49565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128af575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016128a69190613485565b60405180910390fd5b6128b881612d5e565b50565b60605f600a8054905067ffffffffffffffff8111156128dd576128dc6136b7565b5b60405190808252806020026020018201604052801561291657816020015b612903612ee9565b8152602001906001900390816128fb5790505b5090505f805b600a80549050811015612b95575f600a828154811061293e5761293d613d65565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603612991578160060160149054906101000a900460ff1615801561298a5750816005015442105b90506129e8565b60018860ff16036129b5578160060160149054906101000a900460ff1690506129e7565b60028860ff16036129e6578160060160149054906101000a900460ff161580156129e3575081600501544210155b90505b5b5b8015612b855781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a5157602002820191905f5260205f20905b815481526020019060010190808311612a3d575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110612b6b57612b6a613d65565b5b60200260200101819052508480612b8190613fd5565b9550505b505050808060010191505061291c565b505f8167ffffffffffffffff811115612bb157612bb06136b7565b5b604051908082528060200260200182016040528015612bea57816020015b612bd7612ee9565b815260200190600190039081612bcf5790505b5090505f5b82811015612c3d57838181518110612c0a57612c09613d65565b5b6020026020010151828281518110612c2557612c24613d65565b5b60200260200101819052508080600101915050612bef565b50809350505050919050565b612c51612e71565b73ffffffffffffffffffffffffffffffffffffffff16612c6f611480565b73ffffffffffffffffffffffffffffffffffffffff1614612cce57612c92612e71565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612cc59190613485565b60405180910390fd5b565b600260015403612d0c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612d239190614580565b905092915050565b5f8183612d3891906145c1565b905092915050565b5f8183612d4d919061401c565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612e665782848281518110612e4257612e41613d65565b5b602002602001015103612e59576001915050612e6b565b8080600101915050612e25565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612ed8579160200282015b82811115612ed7578251825591602001919060010190612ebc565b5b509050612ee59190612f60565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612f77575f815f905550600101612f61565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f9e81612f8c565b8114612fa8575f80fd5b50565b5f81359050612fb981612f95565b92915050565b5f60208284031215612fd457612fd3612f84565b5b5f612fe184828501612fab565b91505092915050565b612ff381612f8c565b82525050565b5f8115159050919050565b61300d81612ff9565b82525050565b5f6080820190506130265f830187612fea565b6130336020830186612fea565b6130406040830185612fea565b61304d6060830184613004565b95945050505050565b5f6020820190506130695f830184612fea565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6130aa81613098565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130e281612f8c565b82525050565b5f6130f383836130d9565b60208301905092915050565b5f602082019050919050565b5f613115826130b0565b61311f81856130ba565b935061312a836130ca565b805f5b8381101561315a57815161314188826130e8565b975061314c836130ff565b92505060018101905061312d565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61319082613167565b9050919050565b6131a081613186565b82525050565b6131af81612ff9565b82525050565b5f61012083015f8301516131cb5f8601826130a1565b50602083015184820360208601526131e3828261310b565b91505060408301516131f86040860182613197565b50606083015161320b60608601826130d9565b50608083015161321e60808601826130d9565b5060a083015161323160a08601826130d9565b5060c083015161324460c0860182613197565b5060e083015161325760e08601826131a6565b5061010083015161326c6101008601826131a6565b508091505092915050565b5f61328283836131b5565b905092915050565b5f602082019050919050565b5f6132a08261306f565b6132aa8185613079565b9350836020820285016132bc85613089565b805f5b858110156132f757848403895281516132d88582613277565b94506132e38361328a565b925060208a019950506001810190506132bf565b50829750879550505050505092915050565b5f6020820190508181035f8301526133218184613296565b905092915050565b61333281613186565b811461333c575f80fd5b50565b5f8135905061334d81613329565b92915050565b5f6020828403121561336857613367612f84565b5b5f6133758482850161333f565b91505092915050565b5f61338882613167565b9050919050565b6133988161337e565b82525050565b5f6020820190506133b15f83018461338f565b92915050565b6133c081613098565b81146133ca575f80fd5b50565b5f813590506133db816133b7565b92915050565b5f80604083850312156133f7576133f6612f84565b5b5f613404858286016133cd565b925050602061341585828601612fab565b9150509250929050565b5f806040838503121561343557613434612f84565b5b5f613442858286016133cd565b92505060206134538582860161333f565b9150509250929050565b5f6020820190506134705f830184613004565b92915050565b61347f81613186565b82525050565b5f6020820190506134985f830184613476565b92915050565b6134a781613098565b82525050565b5f6020820190506134c05f83018461349e565b92915050565b5f80604083850312156134dc576134db612f84565b5b5f6134e98582860161333f565b92505060206134fa85828601612fab565b9150509250929050565b5f805f6060848603121561351b5761351a612f84565b5b5f61352886828701612fab565b935050602061353986828701612fab565b925050604061354a86828701612fab565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516135915f8501826130d9565b5060208201516135a460208501826130d9565b5060408201516135b760408501826130d9565b5060608201516135ca60608501826131a6565b50505050565b5f6135db838361357d565b60808301905092915050565b5f602082019050919050565b5f6135fd82613554565b613607818561355e565b93506136128361356e565b805f5b8381101561364257815161362988826135d0565b9750613634836135e7565b925050600181019050613615565b5085935050505092915050565b5f6020820190508181035f83015261366781846135f3565b905092915050565b5f60ff82169050919050565b6136848161366f565b82525050565b5f60208201905061369d5f83018461367b565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6136ed826136a7565b810181811067ffffffffffffffff8211171561370c5761370b6136b7565b5b80604052505050565b5f61371e612f7b565b905061372a82826136e4565b919050565b5f67ffffffffffffffff821115613749576137486136b7565b5b602082029050602081019050919050565b5f80fd5b5f61377061376b8461372f565b613715565b905080838252602082019050602084028301858111156137935761379261375a565b5b835b818110156137bc57806137a88882612fab565b845260208401935050602081019050613795565b5050509392505050565b5f82601f8301126137da576137d96136a3565b5b81356137ea84826020860161375e565b91505092915050565b5f805f806080858703121561380b5761380a612f84565b5b5f85013567ffffffffffffffff81111561382857613827612f88565b5b613834878288016137c6565b94505060206138458782880161333f565b935050604061385687828801612fab565b925050606061386787828801612fab565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6138a78383613197565b60208301905092915050565b5f602082019050919050565b5f6138c982613873565b6138d3818561387d565b93506138de8361388d565b805f5b8381101561390e5781516138f5888261389c565b9750613900836138b3565b9250506001810190506138e1565b5085935050505092915050565b5f6020820190508181035f83015261393381846138bf565b905092915050565b5f602082840312156139505761394f612f84565b5b5f61395d848285016133cd565b91505092915050565b5f6101008201905061397a5f83018b61349e565b613987602083018a613476565b6139946040830189612fea565b6139a16060830188612fea565b6139ae6080830187612fea565b6139bb60a0830186613476565b6139c860c0830185613004565b6139d560e0830184613004565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f820151613a1f5f850182613197565b506020820151613a3260208501826130d9565b506040820151613a4560408501826130d9565b50505050565b5f613a568383613a0b565b60608301905092915050565b5f602082019050919050565b5f613a78826139e2565b613a8281856139ec565b9350613a8d836139fc565b805f5b83811015613abd578151613aa48882613a4b565b9750613aaf83613a62565b925050600181019050613a90565b5085935050505092915050565b5f6020820190508181035f830152613ae28184613a6e565b905092915050565b613af381612ff9565b8114613afd575f80fd5b50565b5f81359050613b0e81613aea565b92915050565b5f8060408385031215613b2a57613b29612f84565b5b5f613b378582860161333f565b9250506020613b4885828601613b00565b9150509250929050565b5f606082019050613b655f830186613476565b613b726020830185612fea565b613b7f6040830184612fea565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613bcb600c83613b87565b9150613bd682613b97565b602082019050919050565b5f6020820190508181035f830152613bf881613bbf565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f613c33601383613b87565b9150613c3e82613bff565b602082019050919050565b5f6020820190508181035f830152613c6081613c27565b9050919050565b5f819050919050565b613c81613c7c82612f8c565b613c67565b82525050565b5f8160601b9050919050565b5f613c9d82613c87565b9050919050565b5f613cae82613c93565b9050919050565b613cc6613cc182613186565b613ca4565b82525050565b5f613cd78286613c70565b602082019150613ce78285613c70565b602082019150613cf78284613cb5565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3f82612f8c565b9150613d4a83612f8c565b925082613d5a57613d59613d08565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613dc982612f8c565b9150613dd483612f8c565b9250828201905080821115613dec57613deb613d92565b5b92915050565b5f81519050613e0081613329565b92915050565b5f60208284031215613e1b57613e1a612f84565b5b5f613e2884828501613df2565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613e65601983613b87565b9150613e7082613e31565b602082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b5f606082019050613eac5f830186613476565b613eb96020830185613476565b613ec66040830184612fea565b949350505050565b5f608082019050613ee15f830187612fea565b613eee6020830186612fea565b613efb6040830185612fea565b613f086060830184612fea565b95945050505050565b5f604082019050613f245f830185613476565b613f316020830184612fea565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f613f6c601e83613b87565b9150613f7782613f38565b602082019050919050565b5f6020820190508181035f830152613f9981613f60565b9050919050565b5f606082019050613fb35f830186612fea565b613fc06020830185612fea565b613fcd6040830184612fea565b949350505050565b5f613fdf82612f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361401157614010613d92565b5b600182019050919050565b5f61402682612f8c565b915061403183612f8c565b925082820390508181111561404957614048613d92565b5b92915050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f614083601083613b87565b915061408e8261404f565b602082019050919050565b5f6020820190508181035f8301526140b081614077565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f6140eb600d83613b87565b91506140f6826140b7565b602082019050919050565b5f6020820190508181035f830152614118816140df565b9050919050565b5f61412a8287613c70565b60208201915061413a8286613cb5565b60148201915061414a8285613c70565b60208201915061415a8284613cb5565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f6141a0601383613b87565b91506141ab8261416c565b602082019050919050565b5f6020820190508181035f8301526141cd81614194565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f614235600d83613b87565b915061424082614201565b602082019050919050565b5f6020820190508181035f83015261426281614229565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f61429d600b83613b87565b91506142a882614269565b602082019050919050565b5f6020820190508181035f8301526142ca81614291565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f614305601183613b87565b9150614310826142d1565b602082019050919050565b5f6020820190508181035f830152614332816142f9565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f61436d600c83613b87565b915061437882614339565b602082019050919050565b5f6020820190508181035f83015261439a81614361565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f6143d5601083613b87565b91506143e0826143a1565b602082019050919050565b5f6020820190508181035f830152614402816143c9565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f61443d601483613b87565b915061444882614409565b602082019050919050565b5f6020820190508181035f83015261446a81614431565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f6144a5601783613b87565b91506144b082614471565b602082019050919050565b5f6020820190508181035f8301526144d281614499565b9050919050565b5f815190506144e781612f95565b92915050565b5f6020828403121561450257614501612f84565b5b5f61450f848285016144d9565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f61454c601783613b87565b915061455782614518565b602082019050919050565b5f6020820190508181035f83015261457981614540565b9050919050565b5f61458a82612f8c565b915061459583612f8c565b92508282026145a381612f8c565b915082820484148315176145ba576145b9613d92565b5b5092915050565b5f6145cb82612f8c565b91506145d683612f8c565b9250826145e6576145e5613d08565b5b82820490509291505056fea2646970667358221220db4225af44d8ebbce4ce088c471ac44c9c5d1a8fd17885639503518aca5ccb5864736f6c634300081a0033000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode
0x6080604052600436106101f1575f3560e01c806380e36dd81161010c578063c82db8f91161009f578063dfbed6231161006e578063dfbed623146106fe578063e7e8517c14610726578063eaf98d2314610750578063ecdc2c011461077a578063f2fde38b146107b8576101f8565b8063c82db8f914610656578063cc8db4ff1461067e578063cfb95e17146106a6578063dc3a4e9b146106e2576101f8565b80639a1564f0116100db5780639a1564f0146105975780639dd45d77146105c15780639fe9ada3146105eb578063b82ee8c71461062e576101f8565b806380e36dd8146104dd57806383d5e726146105075780638da5cb5b1461053157806398eeafc41461055b576101f8565b8063463fec0f1161018457806361eba6521161015357806361eba6521461044b5780636358ec571461047557806365e17c9d1461049d578063715018a6146104c7576101f8565b8063463fec0f1461036f578063536fff6c146103ab57806354f276b9146103e75780636088e93a14610423576101f8565b80630f5f1dbc116101c05780630f5f1dbc146102b75780631966cdbe146102e15780632f333d2e14610309578063339b2cff14610345576101f8565b8063039af9eb146101fc5780630594fd041461023b5780630a47f932146102655780630bf9ed2b1461028f576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610222600480360381019061021d9190612fbf565b6107e0565b6040516102329493929190613013565b60405180910390f35b348015610246575f80fd5b5061024f610818565b60405161025c9190613056565b60405180910390f35b348015610270575f80fd5b5061027961081e565b6040516102869190613309565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b09190613353565b61082f565b005b3480156102c2575f80fd5b506102cb61089a565b6040516102d8919061339e565b60405180910390f35b3480156102ec575f80fd5b50610307600480360381019061030291906133e1565b6108bf565b005b348015610314575f80fd5b5061032f600480360381019061032a919061341f565b610fb7565b60405161033c919061345d565b60405180910390f35b348015610350575f80fd5b50610359610fe1565b604051610366919061339e565b60405180910390f35b34801561037a575f80fd5b5061039560048036038101906103909190612fbf565b611006565b6040516103a29190613485565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc9190613353565b611041565b6040516103de919061345d565b60405180910390f35b3480156103f2575f80fd5b5061040d60048036038101906104089190612fbf565b61105e565b60405161041a91906134ad565b60405180910390f35b34801561042e575f80fd5b50610449600480360381019061044491906134c6565b61107e565b005b348015610456575f80fd5b5061045f611252565b60405161046c9190613309565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190613504565b611263565b005b3480156104a8575f80fd5b506104b161133a565b6040516104be919061339e565b60405180910390f35b3480156104d2575f80fd5b506104db61135f565b005b3480156104e8575f80fd5b506104f1611372565b6040516104fe919061364f565b60405180910390f35b348015610512575f80fd5b5061051b61147b565b604051610528919061368a565b60405180910390f35b34801561053c575f80fd5b50610545611480565b6040516105529190613485565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906137f3565b6114a7565b60405161058e91906134ad565b60405180910390f35b3480156105a2575f80fd5b506105ab61181b565b6040516105b89190613309565b60405180910390f35b3480156105cc575f80fd5b506105d561182b565b6040516105e2919061391b565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c919061393b565b6118b6565b604051610625989796959493929190613966565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f9190612fbf565b611952565b005b348015610661575f80fd5b5061067c6004803603810190610677919061393b565b611ae5565b005b348015610689575f80fd5b506106a4600480360381019061069f91906133e1565b611e9f565b005b3480156106b1575f80fd5b506106cc60048036038101906106c7919061393b565b612068565b6040516106d99190613aca565b60405180910390f35b6106fc60048036038101906106f791906133e1565b61213d565b005b348015610709575f80fd5b50610724600480360381019061071f9190613b14565b612720565b005b348015610731575f80fd5b5061073a6127ce565b604051610747919061368a565b60405180910390f35b34801561075b575f80fd5b506107646127d3565b604051610771919061368a565b60405180910390f35b348015610785575f80fd5b506107a0600480360381019061079b91906133e1565b6127d8565b6040516107af93929190613b52565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d99190613353565b612837565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b606061082a60016128bb565b905090565b610837612c49565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108de611480565b73ffffffffffffffffffffffffffffffffffffffff1614806109465750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613be1565b60405180910390fd5b61098d612cd0565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea90613c49565b60405180910390fd5b5f8160040154834233604051602001610a0e93929190613ccc565b604051602081830303815290604052805190602001205f1c610a309190613d35565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610afe578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610a66565b5050505090505f5b8151811015610b77575f828281518110610b2357610b22613d65565b5b60200260200101519050806040015186610b3d9190613dbf565b871015610b5757805f015194508060400151935050610b77565b806040015186610b679190613dbf565b9550508080600101915050610b06565b505f4790505f610ba76064610b99600860ff1685612d1690919063ffffffff16565b612d2b90919063ffffffff16565b90505f610bd46064610bc6604860ff1686612d1690919063ffffffff16565b612d2b90919063ffffffff16565b90505f610bfc82610bee8587612d4090919063ffffffff16565b612d4090919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610c62573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610cc7573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d2c573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610da49190613056565b602060405180830381865afa158015610dbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de39190613e06565b73ffffffffffffffffffffffffffffffffffffffff1614610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090613e7b565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e9d93929190613e99565b5f604051808303815f87803b158015610eb4575f80fd5b505af1158015610ec6573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610f5f9493929190613ece565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f99929190613f11565b60405180910390a250505050505050505050610fb3612d55565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110611015575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061106d575f80fd5b905f5260205f20015f915090505481565b611086612c49565b61108e612cd0565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016110de9190613056565b602060405180830381865afa1580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613e06565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613f82565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611198611480565b846040518463ffffffff1660e01b81526004016111b793929190613e99565b5f604051808303815f87803b1580156111ce575f80fd5b505af11580156111e0573d5f803e3d5ffd5b505050506111ec611480565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461124e612d55565b5050565b606061125e60026128bb565b905090565b61126b612c49565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a84848460405161131693929190613fa0565b60405180910390a260065f81548092919061133090613fd5565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611367612c49565b6113705f612d5e565b565b60605f6001600654611384919061401c565b67ffffffffffffffff81111561139d5761139c6136b7565b5b6040519080825280602002602001820160405280156113d657816020015b6113c3612e78565b8152602001906001900390816113bb5790505b5090505f600190505b6006548110156114735760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361144a919061401c565b8151811061145b5761145a613d65565b5b602002602001018190525080806001019150506113df565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6114b0612c49565b5f82116114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990614099565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016115429190613056565b602060405180830381865afa15801561155d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115819190613e06565b73ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90614101565b60405180910390fd5b428484336040516020016115ee949392919061411f565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f815260200183426116529190613dbf565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906116b7929190612e9e565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa91858585426117fc9190613dbf565b60405161180b93929190613b52565b60405180910390a2949350505050565b60606118265f6128bb565b905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611863575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61195a612c49565b600c8054905081106119a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611998906141b6565b60405180910390fd5b6001600c80549050036119f757600c8054806119c0576119bf6141d4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ae2565b600c6001600c80549050611a0b919061401c565b81548110611a1c57611a1b613d65565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110611a5857611a57613d65565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480611aaf57611aae6141d4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b3373ffffffffffffffffffffffffffffffffffffffff16611b04611480565b73ffffffffffffffffffffffffffffffffffffffff161480611b6c5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613be1565b60405180910390fd5b611bb3612cd0565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090613c49565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611da4575f60095f8681526020019081526020015f208281548110611c5f57611c5e613d65565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015611d83573d5f803e3d5ffd5b50805f015184611d939190613dbf565b935050508080600101915050611c1f565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611ded611480565b85600301546040518463ffffffff1660e01b8152600401611e1093929190613e99565b5f604051808303815f87803b158015611e27575f80fd5b505af1158015611e39573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611e8a9190613056565b60405180910390a25050611e9c612d55565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611ebe611480565b73ffffffffffffffffffffffffffffffffffffffff161480611f265750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c90613be1565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290613c49565b60405180910390fd5b5f821161200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490614099565b60405180910390fd5b81816005015f8282546120209190613dbf565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d4826005015460405161205b9190613056565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015612132578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250508152602001906001019061209a565b505050509050919050565b612145612cd0565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f79061424b565b60405180910390fd5b8160060160149054906101000a900460ff1615612252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612249906142b3565b60405180910390fd5b81600501544210612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061431b565b60405180910390fd5b80606001516122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614383565b60405180910390fd5b6123368260010180548060200260200160405190810160405280929190818152602001828054801561232b57602002820191905f5260205f20905b815481526020019060010190808311612317575b505050505084612e1f565b612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c906143eb565b60405180910390fd5b805f015134146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614453565b60405180910390fd5b5f815f0151036125e45760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612454906144bb565b60405180910390fd5b5f805b600c8054905081101561253d575f600c828154811061248257612481613d65565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124e29190613485565b602060405180830381865afa1580156124fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252191906144ed565b1115612530576001915061253d565b8080600101915050612460565b508061257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614562565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f816040015182602001516125f99190613dbf565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546126d09190613dbf565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612709929190613f11565b60405180910390a250505061271c612d55565b5050565b612728612c49565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c2796826040516127c2919061345d565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f2081815481106127f1575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b61283f612c49565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128af575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016128a69190613485565b60405180910390fd5b6128b881612d5e565b50565b60605f600a8054905067ffffffffffffffff8111156128dd576128dc6136b7565b5b60405190808252806020026020018201604052801561291657816020015b612903612ee9565b8152602001906001900390816128fb5790505b5090505f805b600a80549050811015612b95575f600a828154811061293e5761293d613d65565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603612991578160060160149054906101000a900460ff1615801561298a5750816005015442105b90506129e8565b60018860ff16036129b5578160060160149054906101000a900460ff1690506129e7565b60028860ff16036129e6578160060160149054906101000a900460ff161580156129e3575081600501544210155b90505b5b5b8015612b855781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a5157602002820191905f5260205f20905b815481526020019060010190808311612a3d575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110612b6b57612b6a613d65565b5b60200260200101819052508480612b8190613fd5565b9550505b505050808060010191505061291c565b505f8167ffffffffffffffff811115612bb157612bb06136b7565b5b604051908082528060200260200182016040528015612bea57816020015b612bd7612ee9565b815260200190600190039081612bcf5790505b5090505f5b82811015612c3d57838181518110612c0a57612c09613d65565b5b6020026020010151828281518110612c2557612c24613d65565b5b60200260200101819052508080600101915050612bef565b50809350505050919050565b612c51612e71565b73ffffffffffffffffffffffffffffffffffffffff16612c6f611480565b73ffffffffffffffffffffffffffffffffffffffff1614612cce57612c92612e71565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612cc59190613485565b60405180910390fd5b565b600260015403612d0c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612d239190614580565b905092915050565b5f8183612d3891906145c1565b905092915050565b5f8183612d4d919061401c565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612e665782848281518110612e4257612e41613d65565b5b602002602001015103612e59576001915050612e6b565b8080600101915050612e25565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612ed8579160200282015b82811115612ed7578251825591602001919060010190612ebc565b5b509050612ee59190612f60565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612f77575f815f905550600101612f61565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f9e81612f8c565b8114612fa8575f80fd5b50565b5f81359050612fb981612f95565b92915050565b5f60208284031215612fd457612fd3612f84565b5b5f612fe184828501612fab565b91505092915050565b612ff381612f8c565b82525050565b5f8115159050919050565b61300d81612ff9565b82525050565b5f6080820190506130265f830187612fea565b6130336020830186612fea565b6130406040830185612fea565b61304d6060830184613004565b95945050505050565b5f6020820190506130695f830184612fea565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6130aa81613098565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130e281612f8c565b82525050565b5f6130f383836130d9565b60208301905092915050565b5f602082019050919050565b5f613115826130b0565b61311f81856130ba565b935061312a836130ca565b805f5b8381101561315a57815161314188826130e8565b975061314c836130ff565b92505060018101905061312d565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61319082613167565b9050919050565b6131a081613186565b82525050565b6131af81612ff9565b82525050565b5f61012083015f8301516131cb5f8601826130a1565b50602083015184820360208601526131e3828261310b565b91505060408301516131f86040860182613197565b50606083015161320b60608601826130d9565b50608083015161321e60808601826130d9565b5060a083015161323160a08601826130d9565b5060c083015161324460c0860182613197565b5060e083015161325760e08601826131a6565b5061010083015161326c6101008601826131a6565b508091505092915050565b5f61328283836131b5565b905092915050565b5f602082019050919050565b5f6132a08261306f565b6132aa8185613079565b9350836020820285016132bc85613089565b805f5b858110156132f757848403895281516132d88582613277565b94506132e38361328a565b925060208a019950506001810190506132bf565b50829750879550505050505092915050565b5f6020820190508181035f8301526133218184613296565b905092915050565b61333281613186565b811461333c575f80fd5b50565b5f8135905061334d81613329565b92915050565b5f6020828403121561336857613367612f84565b5b5f6133758482850161333f565b91505092915050565b5f61338882613167565b9050919050565b6133988161337e565b82525050565b5f6020820190506133b15f83018461338f565b92915050565b6133c081613098565b81146133ca575f80fd5b50565b5f813590506133db816133b7565b92915050565b5f80604083850312156133f7576133f6612f84565b5b5f613404858286016133cd565b925050602061341585828601612fab565b9150509250929050565b5f806040838503121561343557613434612f84565b5b5f613442858286016133cd565b92505060206134538582860161333f565b9150509250929050565b5f6020820190506134705f830184613004565b92915050565b61347f81613186565b82525050565b5f6020820190506134985f830184613476565b92915050565b6134a781613098565b82525050565b5f6020820190506134c05f83018461349e565b92915050565b5f80604083850312156134dc576134db612f84565b5b5f6134e98582860161333f565b92505060206134fa85828601612fab565b9150509250929050565b5f805f6060848603121561351b5761351a612f84565b5b5f61352886828701612fab565b935050602061353986828701612fab565b925050604061354a86828701612fab565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516135915f8501826130d9565b5060208201516135a460208501826130d9565b5060408201516135b760408501826130d9565b5060608201516135ca60608501826131a6565b50505050565b5f6135db838361357d565b60808301905092915050565b5f602082019050919050565b5f6135fd82613554565b613607818561355e565b93506136128361356e565b805f5b8381101561364257815161362988826135d0565b9750613634836135e7565b925050600181019050613615565b5085935050505092915050565b5f6020820190508181035f83015261366781846135f3565b905092915050565b5f60ff82169050919050565b6136848161366f565b82525050565b5f60208201905061369d5f83018461367b565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6136ed826136a7565b810181811067ffffffffffffffff8211171561370c5761370b6136b7565b5b80604052505050565b5f61371e612f7b565b905061372a82826136e4565b919050565b5f67ffffffffffffffff821115613749576137486136b7565b5b602082029050602081019050919050565b5f80fd5b5f61377061376b8461372f565b613715565b905080838252602082019050602084028301858111156137935761379261375a565b5b835b818110156137bc57806137a88882612fab565b845260208401935050602081019050613795565b5050509392505050565b5f82601f8301126137da576137d96136a3565b5b81356137ea84826020860161375e565b91505092915050565b5f805f806080858703121561380b5761380a612f84565b5b5f85013567ffffffffffffffff81111561382857613827612f88565b5b613834878288016137c6565b94505060206138458782880161333f565b935050604061385687828801612fab565b925050606061386787828801612fab565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6138a78383613197565b60208301905092915050565b5f602082019050919050565b5f6138c982613873565b6138d3818561387d565b93506138de8361388d565b805f5b8381101561390e5781516138f5888261389c565b9750613900836138b3565b9250506001810190506138e1565b5085935050505092915050565b5f6020820190508181035f83015261393381846138bf565b905092915050565b5f602082840312156139505761394f612f84565b5b5f61395d848285016133cd565b91505092915050565b5f6101008201905061397a5f83018b61349e565b613987602083018a613476565b6139946040830189612fea565b6139a16060830188612fea565b6139ae6080830187612fea565b6139bb60a0830186613476565b6139c860c0830185613004565b6139d560e0830184613004565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f820151613a1f5f850182613197565b506020820151613a3260208501826130d9565b506040820151613a4560408501826130d9565b50505050565b5f613a568383613a0b565b60608301905092915050565b5f602082019050919050565b5f613a78826139e2565b613a8281856139ec565b9350613a8d836139fc565b805f5b83811015613abd578151613aa48882613a4b565b9750613aaf83613a62565b925050600181019050613a90565b5085935050505092915050565b5f6020820190508181035f830152613ae28184613a6e565b905092915050565b613af381612ff9565b8114613afd575f80fd5b50565b5f81359050613b0e81613aea565b92915050565b5f8060408385031215613b2a57613b29612f84565b5b5f613b378582860161333f565b9250506020613b4885828601613b00565b9150509250929050565b5f606082019050613b655f830186613476565b613b726020830185612fea565b613b7f6040830184612fea565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613bcb600c83613b87565b9150613bd682613b97565b602082019050919050565b5f6020820190508181035f830152613bf881613bbf565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f613c33601383613b87565b9150613c3e82613bff565b602082019050919050565b5f6020820190508181035f830152613c6081613c27565b9050919050565b5f819050919050565b613c81613c7c82612f8c565b613c67565b82525050565b5f8160601b9050919050565b5f613c9d82613c87565b9050919050565b5f613cae82613c93565b9050919050565b613cc6613cc182613186565b613ca4565b82525050565b5f613cd78286613c70565b602082019150613ce78285613c70565b602082019150613cf78284613cb5565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3f82612f8c565b9150613d4a83612f8c565b925082613d5a57613d59613d08565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613dc982612f8c565b9150613dd483612f8c565b9250828201905080821115613dec57613deb613d92565b5b92915050565b5f81519050613e0081613329565b92915050565b5f60208284031215613e1b57613e1a612f84565b5b5f613e2884828501613df2565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613e65601983613b87565b9150613e7082613e31565b602082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b5f606082019050613eac5f830186613476565b613eb96020830185613476565b613ec66040830184612fea565b949350505050565b5f608082019050613ee15f830187612fea565b613eee6020830186612fea565b613efb6040830185612fea565b613f086060830184612fea565b95945050505050565b5f604082019050613f245f830185613476565b613f316020830184612fea565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f613f6c601e83613b87565b9150613f7782613f38565b602082019050919050565b5f6020820190508181035f830152613f9981613f60565b9050919050565b5f606082019050613fb35f830186612fea565b613fc06020830185612fea565b613fcd6040830184612fea565b949350505050565b5f613fdf82612f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361401157614010613d92565b5b600182019050919050565b5f61402682612f8c565b915061403183612f8c565b925082820390508181111561404957614048613d92565b5b92915050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f614083601083613b87565b915061408e8261404f565b602082019050919050565b5f6020820190508181035f8301526140b081614077565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f6140eb600d83613b87565b91506140f6826140b7565b602082019050919050565b5f6020820190508181035f830152614118816140df565b9050919050565b5f61412a8287613c70565b60208201915061413a8286613cb5565b60148201915061414a8285613c70565b60208201915061415a8284613cb5565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f6141a0601383613b87565b91506141ab8261416c565b602082019050919050565b5f6020820190508181035f8301526141cd81614194565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f614235600d83613b87565b915061424082614201565b602082019050919050565b5f6020820190508181035f83015261426281614229565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f61429d600b83613b87565b91506142a882614269565b602082019050919050565b5f6020820190508181035f8301526142ca81614291565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f614305601183613b87565b9150614310826142d1565b602082019050919050565b5f6020820190508181035f830152614332816142f9565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f61436d600c83613b87565b915061437882614339565b602082019050919050565b5f6020820190508181035f83015261439a81614361565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f6143d5601083613b87565b91506143e0826143a1565b602082019050919050565b5f6020820190508181035f830152614402816143c9565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f61443d601483613b87565b915061444882614409565b602082019050919050565b5f6020820190508181035f83015261446a81614431565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f6144a5601783613b87565b91506144b082614471565b602082019050919050565b5f6020820190508181035f8301526144d281614499565b9050919050565b5f815190506144e781612f95565b92915050565b5f6020828403121561450257614501612f84565b5b5f61450f848285016144d9565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f61454c601783613b87565b915061455782614518565b602082019050919050565b5f6020820190508181035f83015261457981614540565b9050919050565b5f61458a82612f8c565b915061459583612f8c565b92508282026145a381612f8c565b915082820484148315176145ba576145b9613d92565b5b5092915050565b5f6145cb82612f8c565b91506145d683612f8c565b9250826145e6576145e5613d08565b5b82820490509291505056fea2646970667358221220db4225af44d8ebbce4ce088c471ac44c9c5d1a8fd17885639503518aca5ccb5864736f6c634300081a0033
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:12805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17138:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17187:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26715:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19207:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16449:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22221: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;:::-;;;;;;;;25277:523;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26830:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19332:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16364:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7801:103;;;;;;;;;;;;;:::i;:::-;;26323:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16221:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7126:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19681:1032;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26598:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26945:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17223:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;25862:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24118:692;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24851:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27054:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20752:1436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28647:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16271:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16177:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17345:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8059:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17138:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17187:29::-;;;;:::o;26715:107::-;26763:14;26797:17;26812:1;26797:14;:17::i;:::-;26790:24;;26715:107;:::o;19207:91::-;7012:13;:11;:13::i;:::-;19271:9:::1;19286:3;19271:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19207:91:::0;:::o;16449:40::-;;;;;;;;;;;;;:::o;22221:1854::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;22354:15:::2;22372:7;:16;22380:7;22372:16;;;;;;;;;;;22354:34;;22408:1;:9;;;;;;;;;;;;22407:10;22399:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22454:20;22581:1;:14;;;22526:10;22538:15;22555:10;22509:57;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22499:68;;;;;;22477:101;;:118;;;;:::i;:::-;22454:141;;22608:18;22637:14:::0;22662:21:::2;22696:28:::0;22727:14:::2;:23;22742:7;22727:23;;;;;;;;;;;22696:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;22766:9;22761:323;22785:5;:12;22781:1;:16;22761:323;;;22819:22;22844:5;22850:1;22844:8;;;;;;;;:::i;:::-;;;;;;;;22819:33;;22899:1;:9;;;22886:10;:22;;;;:::i;:::-;22871:12;:37;22867:168;;;22938:1;:13;;;22929:22;;22986:1;:9;;;22970:25;;23014:5;;;22867:168;23063:1;:9;;;23049:23;;;;;:::i;:::-;;;22804:280;22799:3;;;;;;;22761:323;;;;23096:22;23121:21;23096:46;;23153:17;23173:40;23209:3;23173:31;16213:1;23173:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23153:60;;23224:22;23249:45;23290:3;23249:36;16262:2;23249:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;23224:70;;23305:24;23332:73;23380:14;23332:29;23351:9;23332:14;:18;;:29;;;;:::i;:::-;:33;;:73;;;;:::i;:::-;23305:100;;23418:10;;;;;;;;;;;:19;;:30;23438:9;23418:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23459:15;;;;;;;;;;;:24;;:40;23484:14;23459:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23510:17;;;;;;;;;;;:26;;:44;23537:16;23510:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23636:4;23589:52;;23594:1;:12;;;;;;;;;;;;23589:26;;;23616:1;:7;;;23589:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;23567:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;23710:1;:12;;;;;;;;;;;;23705:31;;;23745:4;23752:6;23760:1;:7;;;23705:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23792:6;23781:1;:8;;;:17;;;;;;;;;;;;;;;;;;23821:4;23809:1;:9;;;:16;;;;;;;;;;;;;;;;;;23874:7;23843:162;23896:14;23925:9;23949:14;23978:16;23843:162;;;;;;;;;:::i;:::-;;;;;;;;24036:7;24021:46;24045:6;24053:13;24021:46;;;;;;;:::i;:::-;;;;;;;;22343:1732;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;22221:1854:::0;;:::o;17270:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16404:38::-;;;;;;;;;;;;;:::o;17537:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17444:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17409:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25277:523::-;7012:13;:11;:13::i;:::-;3525:21:::1;:19;:21::i;:::-;25518:4:::2;25473:50;;25478:10;25473:24;;;25498:7;25473:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;25451:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;25637:10;25632:33;;;25674:4;25681:7;:5;:7::i;:::-;25690;25632:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;25784:7;:5;:7::i;:::-;25750:42;;25775:7;25763:10;25750:42;;;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;25277:523:::0;;:::o;26830:107::-;26878:14;26912:17;26927:1;26912:14;:17::i;:::-;26905:24;;26830:107;:::o;19332:318::-;7012:13;:11;:13::i;:::-;19493:51:::1;;;;;;;;19503:7;19493:51;;;;19512:11;19493:51;;;;19525:12;19493:51;;;;19539:4;19493:51;;;;::::0;19473:5:::1;:17;19479:10;;19473:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19572:10;;19560:59;19584:7;19593:11;19606:12;19560:59;;;;;;;;:::i;:::-;;;;;;;;19630:10;;:12;;;;;;;;;:::i;:::-;;;;;;19332: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;26323:267::-;26369:18;26400:24;26456:1;26443:10;;:14;;;;:::i;:::-;26427:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;26400:58;;26474:9;26486:1;26474:13;;26469:91;26493:10;;26489:1;:14;26469:91;;;26540:5;:8;26546:1;26540:8;;;;;;;;;;;26525:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;26535:1;26531;:5;;;;:::i;:::-;26525:12;;;;;;;;:::i;:::-;;;;;;;:23;;;;26505:3;;;;;;;26469:91;;;;26577:5;26570:12;;;26323:267;:::o;16221:43::-;16262:2;16221:43;:::o;7126:87::-;7172:7;7199:6;;;;;;;;;;;7192:13;;7126:87;:::o;19681:1032::-;19857:15;7012:13;:11;:13::i;:::-;19904:1:::1;19893:8;:12;19885:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20002:4;19959:48;;19964:10;19959:24;;;19984:5;19959:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;19937:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;20112:15;20129:10;20141:5;20148:10;20095:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20071:99;;;;;;20061:109;;20202:318;;;;;;;;20227:7;20202:318;;;;20263:12;20202:318;;;;20302:10;20202:318;;;;;;20334:5;20202:318;;;;20368:1;20202:318;;;;20411:8;20393:15;:26;;;;:::i;:::-;20202:318;;;;20450:1;20202:318;;;;;;20476:5;20202:318;;;;;;20504:4;20202:318;;;;::::0;20183:7:::1;:16;20191:7;20183:16;;;;;;;;;;;:337;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20533:11;20550:7;20533:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20601:7;20574:131;20623:10;20648:5;20686:8;20668:15;:26;;;;:::i;:::-;20574:131;;;;;;;;:::i;:::-;;;;;;;;19681:1032:::0;;;;;;:::o;26598:109::-;26648:14;26682:17;26697:1;26682:14;:17::i;:::-;26675:24;;26598:109;:::o;26945:101::-;26993:16;27029:9;27022:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26945:101;:::o;17223:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25862:430::-;7012:13;:11;:13::i;:::-;25947:9:::1;:16;;;;25939:5;:24;25931:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26024:1;26004:9;:16;;;;:21:::0;26000:90:::1;;26042:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26072:7;;26000:90;26189:9;26218:1;26199:9;:16;;;;:20;;;;:::i;:::-;26189:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26170:9;26180:5;26170:16;;;;;;;;:::i;:::-;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;26269:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:1;25862:430:::0;:::o;24118:692::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;24200:15:::2;24218:7;:16;24226:7;24218:16;;;;;;;;;;;24200:34;;24254:1;:9;;;;;;;;;;;;24253:10;24245:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;24300:21;24339:9:::0;24351:1:::2;24339:13;;24334:310;24358:14;:23;24373:7;24358:23;;;;;;;;;;;:30;;;;24354:1;:34;24334:310;;;24410:22;24435:14;:23;24450:7;24435:23;;;;;;;;;;;24459:1;24435:26;;;;;;;;:::i;:::-;;;;;;;;;;;;24410:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24476:21;24500:5;:15;24506:1;:8;;;24500:15;;;;;;;;;;;24476:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24551:1;:13;;;24543:31;;:45;24575:4;:12;;;24543:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;24620:4;:12;;;24603:29;;;;;:::i;:::-;;;24395:249;;24390:3;;;;;;;24334:310;;;;24661:1;:12;;;;;;;;;;;;24656:31;;;24696:4;24703:7;:5;:7::i;:::-;24712:1;:7;;;24656:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24743:4;24731:1;:9;;;:16;;;;;;;;;;;;;;;;;;24779:7;24765:37;24788:13;24765:37;;;;;;:::i;:::-;;;;;;;;24189:621;;3569:20:::1;:18;:20::i;:::-;24118:692:::0;:::o;24851:379::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;24978:15:::1;24996:7;:16;25004:7;24996:16;;;;;;;;;;;24978:34;;25032:1;:9;;;;;;;;;;;;25031:10;25023:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25105:1;25084:18;:22;25076:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25153:18;25140:1;:9;;;:31;;;;;;;:::i;:::-;;;;;;;;25203:7;25189:33;25212:1;:9;;;25189:33;;;;;;:::i;:::-;;;;;;;;24967:263;24851:379:::0;;:::o;27054:170::-;27146:22;27193:14;:23;27208:7;27193:23;;;;;;;;;;;27186:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27054:170;;;:::o;20752:1436::-;3525:21;:19;:21::i;:::-;20874:15:::1;20892:7;:16;20900:7;20892:16;;;;;;;;;;;20874:34;;20919:21;20943:5;:13;20949:6;20943:13;;;;;;;;;;;20919:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;20977:1;:8;;;;;;;;;;;;20969:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21023:1;:9;;;;;;;;;;;;21022:10;21014:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21085:1;:9;;;21067:15;:27;21059:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21135:4;:11;;;21127:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21182:32;21191:1;:14;;21182:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21207:6;21182:8;:32::i;:::-;21174:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21267:4;:12;;;21254:9;:25;21246:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21337:1;21321:4;:12;;;:17:::0;21317:567:::1;;21382:16;:25;21399:7;21382:25;;;;;;;;;;;:37;21408:10;21382:37;;;;;;;;;;;;;;;;;;;;;;;;;21381:38;21355:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21493:16;21537:9:::0;21532:220:::1;21556:9;:16;;;;21552:1;:20;21532:220;;;21645:1;21607:9;21617:1;21607:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21602:28;;;21631:10;21602:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;21598:139;;;21685:4;21671:18;;21712:5;;21598:139;21574:3;;;;;;;21532:220;;;;21774:11;21766:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21868:4;21828:16;:25;21845:7;21828:25;;;;;;;;;;;:37;21854:10;21828:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;21340:544;21317:567;21896:20;21938:4;:17;;;21919:4;:16;;;:36;;;;:::i;:::-;21896:59;;21966:14;:23;21981:7;21966:23;;;;;;;;;;;22009:47;;;;;;;;22023:10;22009:47;;;;;;22035:6;22009:47;;;;22043:12;22009:47;;::::0;21966:101:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22096:12;22078:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;22146:7;22126:54;22155:10;22167:12;22126:54;;;;;;;:::i;:::-;;;;;;;;20863:1325;;;3569:20:::0;:18;:20::i;:::-;20752:1436;;:::o;28647:168::-;7012:13;:11;:13::i;:::-;28756:6:::1;28728:17;:25;28746:6;28728:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;28792:6;28778:29;;;28800:6;28778:29;;;;;;:::i;:::-;;;;;;;;28647:168:::0;;:::o;16271:45::-;16314:2;16271:45;:::o;16177:37::-;16213:1;16177:37;:::o;17345:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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;27257:1085::-;27348:14;27380:21;27416:11;:18;;;;27404:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27380:55;;27446:13;27481:9;27476:683;27500:11;:18;;;;27496:1;:22;27476:683;;;27540:10;27553:11;27565:1;27553:14;;;;;;;;:::i;:::-;;;;;;;;;;27540:27;;27582:15;27600:7;:11;27608:2;27600:11;;;;;;;;;;;27582:29;;27628:12;27673:1;27659:10;:15;;;27655:386;;27734:1;:9;;;;;;;;;;;;27733:10;:41;;;;;27765:1;:9;;;27747:15;:27;27733:41;27723:51;;27655:386;;;27814:1;27800:10;:15;;;27796:245;;27874:1;:9;;;;;;;;;;;;27864:19;;27796:245;;;27923:1;27909:10;:15;;;27905:136;;27982:1;:9;;;;;;;;;;;;27981:10;:44;;;;;28015:1;:9;;;27996:15;:28;;27981:44;27971:54;;27905:136;27796:245;27655:386;28061:7;28057:91;;;28105:1;28089:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;28096:5;28089:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;28125:7;;;;;:::i;:::-;;;;28057:91;27525:634;;;27520:3;;;;;;;27476:683;;;;28171:22;28208:5;28196:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;28171:43;;28230:9;28225:85;28249:5;28245:1;:9;28225:85;;;28289:6;28296:1;28289:9;;;;;;;;:::i;:::-;;;;;;;;28276:7;28284:1;28276:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;28256:3;;;;;;;28225:85;;;;28327:7;28320:14;;;;;27257: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;28350:256::-;28454:4;28481:9;28493:1;28481:13;;28476:100;28500:3;:10;28496:1;:14;28476:100;;;28546:5;28536:3;28540:1;28536:6;;;;;;;;:::i;:::-;;;;;;;;:15;28532:32;;28560:4;28553:11;;;;;28532:32;28512:3;;;;;;;28476:100;;;;28593:5;28586:12;;28350: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:136::-;2224:6;2258:5;2252:12;2242:22;;2135:136;;;:::o;2277:206::-;2398:11;2432:6;2427:3;2420:19;2472:4;2467:3;2463:14;2448:29;;2277:206;;;;:::o;2489:154::-;2578:4;2601:3;2593:11;;2631:4;2626:3;2622:14;2614:22;;2489:154;;;:::o;2649:77::-;2686:7;2715:5;2704:16;;2649:77;;;:::o;2732:108::-;2809:24;2827:5;2809:24;:::i;:::-;2804:3;2797:37;2732:108;;:::o;2846:114::-;2913:6;2947:5;2941:12;2931:22;;2846:114;;;:::o;2966:174::-;3055:11;3089:6;3084:3;3077:19;3129:4;3124:3;3120:14;3105:29;;2966:174;;;;:::o;3146:132::-;3213:4;3236:3;3228:11;;3266:4;3261:3;3257:14;3249:22;;3146:132;;;:::o;3284:108::-;3361:24;3379:5;3361:24;:::i;:::-;3356:3;3349:37;3284:108;;:::o;3398:179::-;3467:10;3488:46;3530:3;3522:6;3488:46;:::i;:::-;3566:4;3561:3;3557:14;3543:28;;3398:179;;;;:::o;3583:113::-;3653:4;3685;3680:3;3676:14;3668:22;;3583:113;;;:::o;3732:712::-;3841:3;3870:54;3918:5;3870:54;:::i;:::-;3940:76;4009:6;4004:3;3940:76;:::i;:::-;3933:83;;4040:56;4090:5;4040:56;:::i;:::-;4119:7;4150:1;4135:284;4160:6;4157:1;4154:13;4135:284;;;4236:6;4230:13;4263:63;4322:3;4307:13;4263:63;:::i;:::-;4256:70;;4349:60;4402:6;4349:60;:::i;:::-;4339:70;;4195:224;4182:1;4179;4175:9;4170:14;;4135:284;;;4139:14;4435:3;4428:10;;3846:598;;;3732:712;;;;:::o;4450:126::-;4487:7;4527:42;4520:5;4516:54;4505:65;;4450:126;;;:::o;4582:96::-;4619:7;4648:24;4666:5;4648:24;:::i;:::-;4637:35;;4582:96;;;:::o;4684:108::-;4761:24;4779:5;4761:24;:::i;:::-;4756:3;4749:37;4684:108;;:::o;4798:99::-;4869:21;4884:5;4869:21;:::i;:::-;4864:3;4857:34;4798:99;;:::o;4953:1863::-;5056:3;5092:6;5087:3;5083:16;5179:4;5172:5;5168:16;5162:23;5198:63;5255:4;5250:3;5246:14;5232:12;5198:63;:::i;:::-;5109:162;5361:4;5354:5;5350:16;5344:23;5414:3;5408:4;5404:14;5397:4;5392:3;5388:14;5381:38;5440:103;5538:4;5524:12;5440:103;:::i;:::-;5432:111;;5281:273;5642:4;5635:5;5631:16;5625:23;5661:63;5718:4;5713:3;5709:14;5695:12;5661:63;:::i;:::-;5564:170;5817:4;5810:5;5806:16;5800:23;5836:63;5893:4;5888:3;5884:14;5870:12;5836:63;:::i;:::-;5744:165;5999:4;5992:5;5988:16;5982:23;6018:63;6075:4;6070:3;6066:14;6052:12;6018:63;:::i;:::-;5919:172;6176:4;6169:5;6165:16;6159:23;6195:63;6252:4;6247:3;6243:14;6229:12;6195:63;:::i;:::-;6101:167;6352:4;6345:5;6341:16;6335:23;6371:63;6428:4;6423:3;6419:14;6405:12;6371:63;:::i;:::-;6278:166;6529:4;6522:5;6518:16;6512:23;6548:57;6599:4;6594:3;6590:14;6576:12;6548:57;:::i;:::-;6454:161;6699:6;6692:5;6688:18;6682:25;6720:59;6771:6;6766:3;6762:16;6748:12;6720:59;:::i;:::-;6625:164;6806:4;6799:11;;5061:1755;4953:1863;;;;:::o;6822:244::-;6935:10;6970:90;7056:3;7048:6;6970:90;:::i;:::-;6956:104;;6822:244;;;;:::o;7072:135::-;7164:4;7196;7191:3;7187:14;7179:22;;7072:135;;;:::o;7267:1087::-;7430:3;7459:76;7529:5;7459:76;:::i;:::-;7551:108;7652:6;7647:3;7551:108;:::i;:::-;7544:115;;7685:3;7730:4;7722:6;7718:17;7713:3;7709:27;7760:78;7832:5;7760:78;:::i;:::-;7861:7;7892:1;7877:432;7902:6;7899:1;7896:13;7877:432;;;7973:9;7967:4;7963:20;7958:3;7951:33;8024:6;8018:13;8052:108;8155:4;8140:13;8052:108;:::i;:::-;8044:116;;8183:82;8258:6;8183:82;:::i;:::-;8173:92;;8294:4;8289:3;8285:14;8278:21;;7937:372;7924:1;7921;7917:9;7912:14;;7877:432;;;7881:14;8325:4;8318:11;;8345:3;8338:10;;7435:919;;;;;7267:1087;;;;:::o;8360:461::-;8547:4;8585:2;8574:9;8570:18;8562:26;;8634:9;8628:4;8624:20;8620:1;8609:9;8605:17;8598:47;8662:152;8809:4;8800:6;8662:152;:::i;:::-;8654:160;;8360:461;;;;:::o;8827:122::-;8900:24;8918:5;8900:24;:::i;:::-;8893:5;8890:35;8880:63;;8939:1;8936;8929:12;8880:63;8827:122;:::o;8955:139::-;9001:5;9039:6;9026:20;9017:29;;9055:33;9082:5;9055:33;:::i;:::-;8955:139;;;;:::o;9100:329::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9334:1;9359:53;9404:7;9395:6;9384:9;9380:22;9359:53;:::i;:::-;9349:63;;9305:117;9100:329;;;;:::o;9435:104::-;9480:7;9509:24;9527:5;9509:24;:::i;:::-;9498:35;;9435:104;;;:::o;9545:142::-;9648:32;9674:5;9648:32;:::i;:::-;9643:3;9636:45;9545:142;;:::o;9693:254::-;9802:4;9840:2;9829:9;9825:18;9817:26;;9853:87;9937:1;9926:9;9922:17;9913:6;9853:87;:::i;:::-;9693:254;;;;:::o;9953:122::-;10026:24;10044:5;10026:24;:::i;:::-;10019:5;10016:35;10006:63;;10065:1;10062;10055:12;10006:63;9953:122;:::o;10081:139::-;10127:5;10165:6;10152:20;10143:29;;10181:33;10208:5;10181:33;:::i;:::-;10081:139;;;;:::o;10226:474::-;10294:6;10302;10351:2;10339:9;10330:7;10326:23;10322:32;10319:119;;;10357:79;;:::i;:::-;10319:119;10477:1;10502:53;10547:7;10538:6;10527:9;10523:22;10502:53;:::i;:::-;10492:63;;10448:117;10604:2;10630:53;10675:7;10666:6;10655:9;10651:22;10630:53;:::i;:::-;10620:63;;10575:118;10226:474;;;;;:::o;10706:::-;10774:6;10782;10831:2;10819:9;10810:7;10806:23;10802:32;10799:119;;;10837:79;;:::i;:::-;10799:119;10957:1;10982:53;11027:7;11018:6;11007:9;11003:22;10982:53;:::i;:::-;10972:63;;10928:117;11084:2;11110:53;11155:7;11146:6;11135:9;11131:22;11110:53;:::i;:::-;11100:63;;11055:118;10706:474;;;;;:::o;11186:210::-;11273:4;11311:2;11300:9;11296:18;11288:26;;11324:65;11386:1;11375:9;11371:17;11362:6;11324:65;:::i;:::-;11186:210;;;;:::o;11402:118::-;11489:24;11507:5;11489:24;:::i;:::-;11484:3;11477:37;11402:118;;:::o;11526:222::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11670:71;11738:1;11727:9;11723:17;11714:6;11670:71;:::i;:::-;11526:222;;;;:::o;11754:118::-;11841:24;11859:5;11841:24;:::i;:::-;11836:3;11829:37;11754:118;;:::o;11878:222::-;11971:4;12009:2;11998:9;11994:18;11986:26;;12022:71;12090:1;12079:9;12075:17;12066:6;12022:71;:::i;:::-;11878:222;;;;:::o;12106:474::-;12174:6;12182;12231:2;12219:9;12210:7;12206:23;12202:32;12199:119;;;12237:79;;:::i;:::-;12199:119;12357:1;12382:53;12427:7;12418:6;12407:9;12403:22;12382:53;:::i;:::-;12372:63;;12328:117;12484:2;12510:53;12555:7;12546:6;12535:9;12531:22;12510:53;:::i;:::-;12500:63;;12455:118;12106:474;;;;;:::o;12586:619::-;12663:6;12671;12679;12728:2;12716:9;12707:7;12703:23;12699:32;12696:119;;;12734:79;;:::i;:::-;12696:119;12854:1;12879:53;12924:7;12915:6;12904:9;12900:22;12879:53;:::i;:::-;12869:63;;12825:117;12981:2;13007:53;13052:7;13043:6;13032:9;13028:22;13007:53;:::i;:::-;12997:63;;12952:118;13109:2;13135:53;13180:7;13171:6;13160:9;13156:22;13135:53;:::i;:::-;13125:63;;13080:118;12586:619;;;;;:::o;13211:140::-;13304:6;13338:5;13332:12;13322:22;;13211:140;;;:::o;13357:210::-;13482:11;13516:6;13511:3;13504:19;13556:4;13551:3;13547:14;13532:29;;13357:210;;;;:::o;13573:158::-;13666:4;13689:3;13681:11;;13719:4;13714:3;13710:14;13702:22;;13573:158;;;:::o;13795:861::-;13934:4;13929:3;13925:14;14024:4;14017:5;14013:16;14007:23;14043:63;14100:4;14095:3;14091:14;14077:12;14043:63;:::i;:::-;13949:167;14205:4;14198:5;14194:16;14188:23;14224:63;14281:4;14276:3;14272:14;14258:12;14224:63;:::i;:::-;14126:171;14387:4;14380:5;14376:16;14370:23;14406:63;14463:4;14458:3;14454:14;14440:12;14406:63;:::i;:::-;14307:172;14563:4;14556:5;14552:16;14546:23;14582:57;14633:4;14628:3;14624:14;14610:12;14582:57;:::i;:::-;14489:160;13903:753;13795:861;;:::o;14662:283::-;14783:10;14804:98;14898:3;14890:6;14804:98;:::i;:::-;14934:4;14929:3;14925:14;14911:28;;14662:283;;;;:::o;14951:139::-;15047:4;15079;15074:3;15070:14;15062:22;;14951:139;;;:::o;15158:940::-;15329:3;15358:80;15432:5;15358:80;:::i;:::-;15454:112;15559:6;15554:3;15454:112;:::i;:::-;15447:119;;15590:82;15666:5;15590:82;:::i;:::-;15695:7;15726:1;15711:362;15736:6;15733:1;15730:13;15711:362;;;15812:6;15806:13;15839:115;15950:3;15935:13;15839:115;:::i;:::-;15832:122;;15977:86;16056:6;15977:86;:::i;:::-;15967:96;;15771:302;15758:1;15755;15751:9;15746:14;;15711:362;;;15715:14;16089:3;16082:10;;15334:764;;;15158:940;;;;:::o;16104:477::-;16299:4;16337:2;16326:9;16322:18;16314:26;;16386:9;16380:4;16376:20;16372:1;16361:9;16357:17;16350:47;16414:160;16569:4;16560:6;16414:160;:::i;:::-;16406:168;;16104:477;;;;:::o;16587:86::-;16622:7;16662:4;16655:5;16651:16;16640:27;;16587:86;;;:::o;16679:112::-;16762:22;16778:5;16762:22;:::i;:::-;16757:3;16750:35;16679:112;;:::o;16797:214::-;16886:4;16924:2;16913:9;16909:18;16901:26;;16937:67;17001:1;16990:9;16986:17;16977:6;16937:67;:::i;:::-;16797:214;;;;:::o;17017:117::-;17126:1;17123;17116:12;17140:102;17181:6;17232:2;17228:7;17223:2;17216:5;17212:14;17208:28;17198:38;;17140:102;;;:::o;17248:180::-;17296:77;17293:1;17286:88;17393:4;17390:1;17383:15;17417:4;17414:1;17407:15;17434:281;17517:27;17539:4;17517:27;:::i;:::-;17509:6;17505:40;17647:6;17635:10;17632:22;17611:18;17599:10;17596:34;17593:62;17590:88;;;17658:18;;:::i;:::-;17590:88;17698:10;17694:2;17687:22;17477:238;17434:281;;:::o;17721:129::-;17755:6;17782:20;;:::i;:::-;17772:30;;17811:33;17839:4;17831:6;17811:33;:::i;:::-;17721:129;;;:::o;17856:311::-;17933:4;18023:18;18015:6;18012:30;18009:56;;;18045:18;;:::i;:::-;18009:56;18095:4;18087:6;18083:17;18075:25;;18155:4;18149;18145:15;18137:23;;17856:311;;;:::o;18173:117::-;18282:1;18279;18272:12;18313:710;18409:5;18434:81;18450:64;18507:6;18450:64;:::i;:::-;18434:81;:::i;:::-;18425:90;;18535:5;18564:6;18557:5;18550:21;18598:4;18591:5;18587:16;18580:23;;18651:4;18643:6;18639:17;18631:6;18627:30;18680:3;18672:6;18669:15;18666:122;;;18699:79;;:::i;:::-;18666:122;18814:6;18797:220;18831:6;18826:3;18823:15;18797:220;;;18906:3;18935:37;18968:3;18956:10;18935:37;:::i;:::-;18930:3;18923:50;19002:4;18997:3;18993:14;18986:21;;18873:144;18857:4;18852:3;18848:14;18841:21;;18797:220;;;18801:21;18415:608;;18313:710;;;;;:::o;19046:370::-;19117:5;19166:3;19159:4;19151:6;19147:17;19143:27;19133:122;;19174:79;;:::i;:::-;19133:122;19291:6;19278:20;19316:94;19406:3;19398:6;19391:4;19383:6;19379:17;19316:94;:::i;:::-;19307:103;;19123:293;19046:370;;;;:::o;19422:975::-;19533:6;19541;19549;19557;19606:3;19594:9;19585:7;19581:23;19577:33;19574:120;;;19613:79;;:::i;:::-;19574:120;19761:1;19750:9;19746:17;19733:31;19791:18;19783:6;19780:30;19777:117;;;19813:79;;:::i;:::-;19777:117;19918:78;19988:7;19979:6;19968:9;19964:22;19918:78;:::i;:::-;19908:88;;19704:302;20045:2;20071:53;20116:7;20107:6;20096:9;20092:22;20071:53;:::i;:::-;20061:63;;20016:118;20173:2;20199:53;20244:7;20235:6;20224:9;20220:22;20199:53;:::i;:::-;20189:63;;20144:118;20301:2;20327:53;20372:7;20363:6;20352:9;20348:22;20327:53;:::i;:::-;20317:63;;20272:118;19422:975;;;;;;;:::o;20403:114::-;20470:6;20504:5;20498:12;20488:22;;20403:114;;;:::o;20523:184::-;20622:11;20656:6;20651:3;20644:19;20696:4;20691:3;20687:14;20672:29;;20523:184;;;;:::o;20713:132::-;20780:4;20803:3;20795:11;;20833:4;20828:3;20824:14;20816:22;;20713:132;;;:::o;20851:179::-;20920:10;20941:46;20983:3;20975:6;20941:46;:::i;:::-;21019:4;21014:3;21010:14;20996:28;;20851:179;;;;:::o;21036:113::-;21106:4;21138;21133:3;21129:14;21121:22;;21036:113;;;:::o;21185:732::-;21304:3;21333:54;21381:5;21333:54;:::i;:::-;21403:86;21482:6;21477:3;21403:86;:::i;:::-;21396:93;;21513:56;21563:5;21513:56;:::i;:::-;21592:7;21623:1;21608:284;21633:6;21630:1;21627:13;21608:284;;;21709:6;21703:13;21736:63;21795:3;21780:13;21736:63;:::i;:::-;21729:70;;21822:60;21875:6;21822:60;:::i;:::-;21812:70;;21668:224;21655:1;21652;21648:9;21643:14;;21608:284;;;21612:14;21908:3;21901:10;;21309:608;;;21185:732;;;;:::o;21923:373::-;22066:4;22104:2;22093:9;22089:18;22081:26;;22153:9;22147:4;22143:20;22139:1;22128:9;22124:17;22117:47;22181:108;22284:4;22275:6;22181:108;:::i;:::-;22173:116;;21923:373;;;;:::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:169::-;28187:11;28221:6;28216:3;28209:19;28261:4;28256:3;28252:14;28237:29;;28103:169;;;;:::o;28278:162::-;28418:14;28414:1;28406:6;28402:14;28395:38;28278:162;:::o;28446:366::-;28588:3;28609:67;28673:2;28668:3;28609:67;:::i;:::-;28602:74;;28685:93;28774:3;28685:93;:::i;:::-;28803:2;28798:3;28794:12;28787:19;;28446:366;;;:::o;28818:419::-;28984:4;29022:2;29011:9;29007:18;28999:26;;29071:9;29065:4;29061:20;29057:1;29046:9;29042:17;29035:47;29099:131;29225:4;29099:131;:::i;:::-;29091:139;;28818:419;;;:::o;29243:169::-;29383:21;29379:1;29371:6;29367:14;29360:45;29243:169;:::o;29418:366::-;29560:3;29581:67;29645:2;29640:3;29581:67;:::i;:::-;29574:74;;29657:93;29746:3;29657:93;:::i;:::-;29775:2;29770:3;29766:12;29759:19;;29418:366;;;:::o;29790:419::-;29956:4;29994:2;29983:9;29979:18;29971:26;;30043:9;30037:4;30033:20;30029:1;30018:9;30014:17;30007:47;30071:131;30197:4;30071:131;:::i;:::-;30063:139;;29790:419;;;:::o;30215:79::-;30254:7;30283:5;30272:16;;30215:79;;;:::o;30300:157::-;30405:45;30425:24;30443:5;30425:24;:::i;:::-;30405:45;:::i;:::-;30400:3;30393:58;30300:157;;:::o;30463:94::-;30496:8;30544:5;30540:2;30536:14;30515:35;;30463:94;;;:::o;30563:::-;30602:7;30631:20;30645:5;30631:20;:::i;:::-;30620:31;;30563:94;;;:::o;30663:100::-;30702:7;30731:26;30751:5;30731:26;:::i;:::-;30720:37;;30663:100;;;:::o;30769:157::-;30874:45;30894:24;30912:5;30894:24;:::i;:::-;30874:45;:::i;:::-;30869:3;30862:58;30769:157;;:::o;30932:538::-;31100:3;31115:75;31186:3;31177:6;31115:75;:::i;:::-;31215:2;31210:3;31206:12;31199:19;;31228:75;31299:3;31290:6;31228:75;:::i;:::-;31328:2;31323:3;31319:12;31312:19;;31341:75;31412:3;31403:6;31341:75;:::i;:::-;31441:2;31436:3;31432:12;31425:19;;31461:3;31454:10;;30932:538;;;;;;:::o;31476:180::-;31524:77;31521:1;31514:88;31621:4;31618:1;31611:15;31645:4;31642:1;31635:15;31662:176;31694:1;31711:20;31729:1;31711:20;:::i;:::-;31706:25;;31745:20;31763:1;31745:20;:::i;:::-;31740:25;;31784:1;31774:35;;31789:18;;:::i;:::-;31774:35;31830:1;31827;31823:9;31818:14;;31662:176;;;;:::o;31844:180::-;31892:77;31889:1;31882:88;31989:4;31986:1;31979:15;32013:4;32010:1;32003:15;32030:180;32078:77;32075:1;32068:88;32175:4;32172:1;32165:15;32199:4;32196:1;32189:15;32216:191;32256:3;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32309:20;32327:1;32309:20;:::i;:::-;32304:25;;32352:1;32349;32345:9;32338:16;;32373:3;32370:1;32367:10;32364:36;;;32380:18;;:::i;:::-;32364:36;32216:191;;;;:::o;32413:143::-;32470:5;32501:6;32495:13;32486:22;;32517:33;32544:5;32517:33;:::i;:::-;32413:143;;;;:::o;32562:351::-;32632:6;32681:2;32669:9;32660:7;32656:23;32652:32;32649:119;;;32687:79;;:::i;:::-;32649:119;32807:1;32832:64;32888:7;32879:6;32868:9;32864:22;32832:64;:::i;:::-;32822:74;;32778:128;32562:351;;;;:::o;32919:175::-;33059:27;33055:1;33047:6;33043:14;33036:51;32919:175;:::o;33100:366::-;33242:3;33263:67;33327:2;33322:3;33263:67;:::i;:::-;33256:74;;33339:93;33428:3;33339:93;:::i;:::-;33457:2;33452:3;33448:12;33441:19;;33100:366;;;:::o;33472:419::-;33638:4;33676:2;33665:9;33661:18;33653:26;;33725:9;33719:4;33715:20;33711:1;33700:9;33696:17;33689:47;33753:131;33879:4;33753:131;:::i;:::-;33745:139;;33472:419;;;:::o;33897:442::-;34046:4;34084:2;34073:9;34069:18;34061:26;;34097:71;34165:1;34154:9;34150:17;34141:6;34097:71;:::i;:::-;34178:72;34246:2;34235:9;34231:18;34222:6;34178:72;:::i;:::-;34260;34328:2;34317:9;34313:18;34304:6;34260:72;:::i;:::-;33897:442;;;;;;:::o;34345:553::-;34522:4;34560:3;34549:9;34545:19;34537:27;;34574:71;34642:1;34631:9;34627:17;34618:6;34574:71;:::i;:::-;34655:72;34723:2;34712:9;34708:18;34699:6;34655:72;:::i;:::-;34737;34805:2;34794:9;34790:18;34781:6;34737:72;:::i;:::-;34819;34887:2;34876:9;34872:18;34863:6;34819:72;:::i;:::-;34345:553;;;;;;;:::o;34904:332::-;35025:4;35063:2;35052:9;35048:18;35040:26;;35076:71;35144:1;35133:9;35129:17;35120:6;35076:71;:::i;:::-;35157:72;35225:2;35214:9;35210:18;35201:6;35157:72;:::i;:::-;34904:332;;;;;:::o;35242:180::-;35382:32;35378:1;35370:6;35366:14;35359:56;35242:180;:::o;35428:366::-;35570:3;35591:67;35655:2;35650:3;35591:67;:::i;:::-;35584:74;;35667:93;35756:3;35667:93;:::i;:::-;35785:2;35780:3;35776:12;35769:19;;35428:366;;;:::o;35800:419::-;35966:4;36004:2;35993:9;35989:18;35981:26;;36053:9;36047:4;36043:20;36039:1;36028:9;36024:17;36017:47;36081:131;36207:4;36081:131;:::i;:::-;36073:139;;35800:419;;;:::o;36225:442::-;36374:4;36412:2;36401:9;36397:18;36389:26;;36425:71;36493:1;36482:9;36478:17;36469:6;36425:71;:::i;:::-;36506:72;36574:2;36563:9;36559:18;36550:6;36506:72;:::i;:::-;36588;36656:2;36645:9;36641:18;36632:6;36588:72;:::i;:::-;36225:442;;;;;;:::o;36673:233::-;36712:3;36735:24;36753:5;36735:24;:::i;:::-;36726:33;;36781:66;36774:5;36771:77;36768:103;;36851:18;;:::i;:::-;36768:103;36898:1;36891:5;36887:13;36880:20;;36673:233;;;:::o;36912:194::-;36952:4;36972:20;36990:1;36972:20;:::i;:::-;36967:25;;37006:20;37024:1;37006:20;:::i;:::-;37001:25;;37050:1;37047;37043:9;37035:17;;37074:1;37068:4;37065:11;37062:37;;;37079:18;;:::i;:::-;37062:37;36912:194;;;;:::o;37112:166::-;37252:18;37248:1;37240:6;37236:14;37229:42;37112:166;:::o;37284:366::-;37426:3;37447:67;37511:2;37506:3;37447:67;:::i;:::-;37440:74;;37523:93;37612:3;37523:93;:::i;:::-;37641:2;37636:3;37632:12;37625:19;;37284:366;;;:::o;37656:419::-;37822:4;37860:2;37849:9;37845:18;37837:26;;37909:9;37903:4;37899:20;37895:1;37884:9;37880:17;37873:47;37937:131;38063:4;37937:131;:::i;:::-;37929:139;;37656:419;;;:::o;38081:163::-;38221:15;38217:1;38209:6;38205:14;38198:39;38081:163;:::o;38250:366::-;38392:3;38413:67;38477:2;38472:3;38413:67;:::i;:::-;38406:74;;38489:93;38578:3;38489:93;:::i;:::-;38607:2;38602:3;38598:12;38591:19;;38250:366;;;:::o;38622:419::-;38788:4;38826:2;38815:9;38811:18;38803:26;;38875:9;38869:4;38865:20;38861:1;38850:9;38846:17;38839:47;38903:131;39029:4;38903:131;:::i;:::-;38895:139;;38622:419;;;:::o;39047:679::-;39243:3;39258:75;39329:3;39320:6;39258:75;:::i;:::-;39358:2;39353:3;39349:12;39342:19;;39371:75;39442:3;39433:6;39371:75;:::i;:::-;39471:2;39466:3;39462:12;39455:19;;39484:75;39555:3;39546:6;39484:75;:::i;:::-;39584:2;39579:3;39575:12;39568:19;;39597:75;39668:3;39659:6;39597:75;:::i;:::-;39697:2;39692:3;39688:12;39681:19;;39717:3;39710:10;;39047:679;;;;;;;:::o;39732:169::-;39872:21;39868:1;39860:6;39856:14;39849:45;39732:169;:::o;39907:366::-;40049:3;40070:67;40134:2;40129:3;40070:67;:::i;:::-;40063:74;;40146:93;40235:3;40146:93;:::i;:::-;40264:2;40259:3;40255:12;40248:19;;39907:366;;;:::o;40279:419::-;40445:4;40483:2;40472:9;40468:18;40460:26;;40532:9;40526:4;40522:20;40518:1;40507:9;40503:17;40496:47;40560:131;40686:4;40560:131;:::i;:::-;40552:139;;40279:419;;;:::o;40704:180::-;40752:77;40749:1;40742:88;40849:4;40846:1;40839:15;40873:4;40870:1;40863:15;40890:163;41030:15;41026:1;41018:6;41014:14;41007:39;40890:163;:::o;41059:366::-;41201:3;41222:67;41286:2;41281:3;41222:67;:::i;:::-;41215:74;;41298:93;41387:3;41298:93;:::i;:::-;41416:2;41411:3;41407:12;41400:19;;41059:366;;;:::o;41431:419::-;41597:4;41635:2;41624:9;41620:18;41612:26;;41684:9;41678:4;41674:20;41670:1;41659:9;41655:17;41648:47;41712:131;41838:4;41712:131;:::i;:::-;41704:139;;41431:419;;;:::o;41856:161::-;41996:13;41992:1;41984:6;41980:14;41973:37;41856:161;:::o;42023:366::-;42165:3;42186:67;42250:2;42245:3;42186:67;:::i;:::-;42179:74;;42262:93;42351:3;42262:93;:::i;:::-;42380:2;42375:3;42371:12;42364:19;;42023:366;;;:::o;42395:419::-;42561:4;42599:2;42588:9;42584:18;42576:26;;42648:9;42642:4;42638:20;42634:1;42623:9;42619:17;42612:47;42676:131;42802:4;42676:131;:::i;:::-;42668:139;;42395:419;;;:::o;42820:167::-;42960:19;42956:1;42948:6;42944:14;42937:43;42820:167;:::o;42993:366::-;43135:3;43156:67;43220:2;43215:3;43156:67;:::i;:::-;43149:74;;43232:93;43321:3;43232:93;:::i;:::-;43350:2;43345:3;43341:12;43334:19;;42993:366;;;:::o;43365:419::-;43531:4;43569:2;43558:9;43554:18;43546:26;;43618:9;43612:4;43608:20;43604:1;43593:9;43589:17;43582:47;43646:131;43772:4;43646:131;:::i;:::-;43638:139;;43365:419;;;:::o;43790:162::-;43930:14;43926:1;43918:6;43914:14;43907:38;43790:162;:::o;43958:366::-;44100:3;44121:67;44185:2;44180:3;44121:67;:::i;:::-;44114:74;;44197:93;44286:3;44197:93;:::i;:::-;44315:2;44310:3;44306:12;44299:19;;43958:366;;;:::o;44330:419::-;44496:4;44534:2;44523:9;44519:18;44511:26;;44583:9;44577:4;44573:20;44569:1;44558:9;44554:17;44547:47;44611:131;44737:4;44611:131;:::i;:::-;44603:139;;44330:419;;;:::o;44755:166::-;44895:18;44891:1;44883:6;44879:14;44872:42;44755:166;:::o;44927:366::-;45069:3;45090:67;45154:2;45149:3;45090:67;:::i;:::-;45083:74;;45166:93;45255:3;45166:93;:::i;:::-;45284:2;45279:3;45275:12;45268:19;;44927:366;;;:::o;45299:419::-;45465:4;45503:2;45492:9;45488:18;45480:26;;45552:9;45546:4;45542:20;45538:1;45527:9;45523:17;45516:47;45580:131;45706:4;45580:131;:::i;:::-;45572:139;;45299:419;;;:::o;45724:170::-;45864:22;45860:1;45852:6;45848:14;45841:46;45724:170;:::o;45900:366::-;46042:3;46063:67;46127:2;46122:3;46063:67;:::i;:::-;46056:74;;46139:93;46228:3;46139:93;:::i;:::-;46257:2;46252:3;46248:12;46241:19;;45900:366;;;:::o;46272:419::-;46438:4;46476:2;46465:9;46461:18;46453:26;;46525:9;46519:4;46515:20;46511:1;46500:9;46496:17;46489:47;46553:131;46679:4;46553:131;:::i;:::-;46545:139;;46272:419;;;:::o;46697:173::-;46837:25;46833:1;46825:6;46821:14;46814:49;46697:173;:::o;46876:366::-;47018:3;47039:67;47103:2;47098:3;47039:67;:::i;:::-;47032:74;;47115:93;47204:3;47115:93;:::i;:::-;47233:2;47228:3;47224:12;47217:19;;46876:366;;;:::o;47248:419::-;47414:4;47452:2;47441:9;47437:18;47429:26;;47501:9;47495:4;47491:20;47487:1;47476:9;47472:17;47465:47;47529:131;47655:4;47529:131;:::i;:::-;47521:139;;47248:419;;;:::o;47673:143::-;47730:5;47761:6;47755:13;47746:22;;47777:33;47804:5;47777:33;:::i;:::-;47673:143;;;;:::o;47822:351::-;47892:6;47941:2;47929:9;47920:7;47916:23;47912:32;47909:119;;;47947:79;;:::i;:::-;47909:119;48067:1;48092:64;48148:7;48139:6;48128:9;48124:22;48092:64;:::i;:::-;48082:74;;48038:128;47822:351;;;;:::o;48179:173::-;48319:25;48315:1;48307:6;48303:14;48296:49;48179:173;:::o;48358:366::-;48500:3;48521:67;48585:2;48580:3;48521:67;:::i;:::-;48514:74;;48597:93;48686:3;48597:93;:::i;:::-;48715:2;48710:3;48706:12;48699:19;;48358:366;;;:::o;48730:419::-;48896:4;48934:2;48923:9;48919:18;48911:26;;48983:9;48977:4;48973:20;48969:1;48958:9;48954:17;48947:47;49011:131;49137:4;49011:131;:::i;:::-;49003:139;;48730:419;;;:::o;49155:410::-;49195:7;49218:20;49236:1;49218:20;:::i;:::-;49213:25;;49252:20;49270:1;49252:20;:::i;:::-;49247:25;;49307:1;49304;49300:9;49329:30;49347:11;49329:30;:::i;:::-;49318:41;;49508:1;49499:7;49495:15;49492:1;49489:22;49469:1;49462:9;49442:83;49419:139;;49538:18;;:::i;:::-;49419:139;49203:362;49155:410;;;;:::o;49571:185::-;49611:1;49628:20;49646:1;49628:20;:::i;:::-;49623:25;;49662:20;49680:1;49662:20;:::i;:::-;49657:25;;49701:1;49691:35;;49706:18;;:::i;:::-;49691:35;49748:1;49745;49741:9;49736:14;;49571:185;;;;:::o
Swarm Source
ipfs://db4225af44d8ebbce4ce088c471ac44c9c5d1a8fd17885639503518aca5ccb58
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.