Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 153 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Purchase | 1615623 | 6 hrs ago | IN | 20 S | 0.00022571 | ||||
Purchase | 1615598 | 6 hrs ago | IN | 10 S | 0.00022879 | ||||
Purchase | 1611708 | 7 hrs ago | IN | 5 S | 0.00094044 | ||||
Purchase | 1604821 | 9 hrs ago | IN | 5 S | 0.00092163 | ||||
Purchase | 1595370 | 12 hrs ago | IN | 20 S | 0.00065933 | ||||
Purchase | 1595361 | 12 hrs ago | IN | 10 S | 0.00065933 | ||||
Purchase | 1595332 | 12 hrs ago | IN | 5 S | 0.00092163 | ||||
Purchase | 1592390 | 12 hrs ago | IN | 5 S | 0.00058206 | ||||
Purchase | 1587542 | 14 hrs ago | IN | 10 S | 0.00022571 | ||||
Purchase | 1587471 | 14 hrs ago | IN | 5 S | 0.00048801 | ||||
Purchase | 1585329 | 14 hrs ago | IN | 20 S | 0.00065933 | ||||
Purchase | 1584988 | 14 hrs ago | IN | 10 S | 0.00065933 | ||||
Purchase | 1584740 | 14 hrs ago | IN | 5 S | 0.00094044 | ||||
Purchase | 1568933 | 17 hrs ago | IN | 80 S | 0.00022571 | ||||
Purchase | 1568345 | 17 hrs ago | IN | 40 S | 0.00022571 | ||||
Purchase | 1568317 | 17 hrs ago | IN | 20 S | 0.00022571 | ||||
Purchase | 1568302 | 17 hrs ago | IN | 10 S | 0.00022571 | ||||
Purchase | 1568273 | 17 hrs ago | IN | 5 S | 0.00058206 | ||||
Purchase | 1549461 | 22 hrs ago | IN | 10 S | 0.00022571 | ||||
Purchase | 1549443 | 22 hrs ago | IN | 5 S | 0.00058206 | ||||
Purchase | 1548163 | 22 hrs ago | IN | 10 S | 0.00065933 | ||||
Purchase | 1548136 | 22 hrs ago | IN | 5 S | 0.00092163 | ||||
Purchase | 1538450 | 25 hrs ago | IN | 10 S | 0.00022571 | ||||
Purchase | 1538408 | 25 hrs ago | IN | 5 S | 0.00048801 | ||||
Purchase | 1530732 | 27 hrs ago | IN | 40 S | 0.00065933 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
1615623 | 6 hrs ago | 20 S | ||||
1615598 | 6 hrs ago | 10 S | ||||
1611708 | 7 hrs ago | 1.25 S | ||||
1611708 | 7 hrs ago | 1.25 S | ||||
1611708 | 7 hrs ago | 1.25 S | ||||
1611708 | 7 hrs ago | 1.25 S | ||||
1604821 | 9 hrs ago | 1.25 S | ||||
1604821 | 9 hrs ago | 1.25 S | ||||
1604821 | 9 hrs ago | 1.25 S | ||||
1604821 | 9 hrs ago | 1.25 S | ||||
1595370 | 12 hrs ago | 5 S | ||||
1595370 | 12 hrs ago | 5 S | ||||
1595370 | 12 hrs ago | 5 S | ||||
1595370 | 12 hrs ago | 5 S | ||||
1595361 | 12 hrs ago | 2.5 S | ||||
1595361 | 12 hrs ago | 2.5 S | ||||
1595361 | 12 hrs ago | 2.5 S | ||||
1595361 | 12 hrs ago | 2.5 S | ||||
1595332 | 12 hrs ago | 1.25 S | ||||
1595332 | 12 hrs ago | 1.25 S | ||||
1595332 | 12 hrs ago | 1.25 S | ||||
1595332 | 12 hrs ago | 1.25 S | ||||
1592390 | 12 hrs ago | 5 S | ||||
1587542 | 14 hrs ago | 10 S | ||||
1587471 | 14 hrs ago | 5 S |
Loading...
Loading
Contract Name:
VRMatrix
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-21 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.0; // Ownable contract to manage contract ownership contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(msg.sender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // ReentrancyGuard contract to prevent reentrancy attacks contract ReentrancyGuard { uint256 private _status; uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } // Interface for the registration contract interface IREG { function NumberOfUsers() external view returns (uint256); function AddressToCountId(address user) external view returns (uint256); function countIdToAddress(uint id) external view returns (address); function isRegistered(address user) external view returns (bool); function userUpline(address user) external view returns (address); } contract VRMatrix is Ownable , ReentrancyGuard { // public variables- uint public numberOfActiveUsers; uint public totalEarned ; IREG public regContract; address public lastUser; uint public TOTAL_LEVELS = 10; constructor() { regContract = IREG(0xbbcd14B04924F33c303627578708fd4f51d39383); levelPrice[1] = 5 ether ; for (uint i = 2; i < TOTAL_LEVELS ; i++ ) { levelPrice[i] = levelPrice[i - 1] * 2; // each price from 1 is 2X the last price } initOwner(); // initialize the constante variables and public variables with the values from the registry } function initOwner() internal { address zeroAddress = address(0); lastUser = getFirstID(); virtualUplineOf[lastUser] = zeroAddress ; users[lastUser] = User ({ userAddress : lastUser, team_Id : 1 , totalIncome : 0 , totalVirtualIncome : 0 , transactionCount : 0 , totalDirect : 0 , lastUpdate : block.timestamp , currentUserLevel : TOTAL_LEVELS , firstActivationDate : block.timestamp }) ; userLevel[lastUser] = TOTAL_LEVELS ; virtualIds[lastUser] = numberOfActiveUsers; isActive[lastUser] = true ; numberOfActiveUsers = 1; emit ownerInit(lastUser); } mapping (address => address ) public virtualUplineOf; mapping (uint => uint ) public levelPrice; mapping (address => uint ) public userLevel; mapping (address => uint ) public totalVirtualDirect; mapping (address => address[] ) public virtualDirectsOf; mapping (uint => address ) public virtualAddresses; mapping (address => uint ) public virtualIds; mapping (address => bool ) public isActive; mapping (address => User ) public users; mapping (address => UserHistory [] ) public history; // user structure to save total informations struct User { address userAddress; uint team_Id ; uint totalIncome; uint totalVirtualIncome; uint transactionCount; uint totalDirect; uint lastUpdate; uint currentUserLevel ; uint firstActivationDate ; } // userHistory to track system activities struct UserHistory { string actionName; uint actionAmount; address actionFrom; uint actionDate; } // events to track contract activities event TransferSent (address to, uint amount , uint timestamp); event virtualGainSent (address to , uint amount , uint timestamp); event RoyaltyGainSent(address to, uint amount , uint timestamp); event LevelPurchased (address from, uint amount , uint timestamp); event ownerInit (address owner) ; // get the fiirst id registered function getFirstID () internal view returns(address) { return regContract.countIdToAddress(1); } function purchase (uint level ) public nonReentrant payable { // the user must enter the correct level require(level > 0 && level < 11, "Level is out of range"); // the user can't be the 0 address require(msg.sender != address(0), "Zero address is not allowed"); // the user must be regsitered require(regContract.isRegistered(msg.sender), "User is not registered"); // the value to send must be equal to the price of the level require(msg.value == levelPrice[level], "not enougth opBNB"); if (level > 1 ) { // the user must have the previus level activated require(userLevel[msg.sender] == level - 1, "Previous level not activated"); } // handling user purchase if (level == 1) { handlePurchase(level) ; } else { handlePurchaseFromVrData (level) ; } // after distribution handle updates address uplineOfUser = regContract.userUpline(msg.sender); uint totalDirect = totalVirtualDirect[uplineOfUser] ; if (users[msg.sender].userAddress == address(0) ) { // it's the user first time to buy the level ... users[msg.sender] = User ({ userAddress : msg.sender, team_Id : totalDirect + 1 , totalIncome : 0 , totalVirtualIncome : 0 , transactionCount : 0 , totalDirect : 0 , lastUpdate : block.timestamp , currentUserLevel : level , firstActivationDate : block.timestamp }) ; totalVirtualDirect[uplineOfUser] ++ ; virtualDirectsOf[uplineOfUser].push(msg.sender) ; numberOfActiveUsers ++ ; virtualIds[msg.sender] = numberOfActiveUsers; isActive[msg.sender] = true ; virtualUplineOf[msg.sender] = uplineOfUser; } userLevel[msg.sender] = level ; lastUser = msg.sender ; totalEarned += msg.value ; emit LevelPurchased(msg.sender , levelPrice[level], block.timestamp) ; } function purchase_sec_case (address user , uint level ) public nonReentrant onlyOwner { // the user must enter the correct level require(level > 0 && level < 11, "Level is out of range"); // the user can't be the 0 address require(user != address(0), "Zero address is not allowed"); // the user must be regsitered require(regContract.isRegistered(user), "User is not registered"); // after distribution handle updates address uplineOfUser = regContract.userUpline(user); uint totalDirect = totalVirtualDirect[uplineOfUser] ; if (users[user].userAddress == address(0) ) { // it's the user first time to buy the level ... users[user] = User ({ userAddress : user, team_Id : totalDirect + 1 , totalIncome : 0 , totalVirtualIncome : 0 , transactionCount : 0 , totalDirect : 0 , lastUpdate : block.timestamp , currentUserLevel : level , firstActivationDate : block.timestamp }) ; totalVirtualDirect[uplineOfUser] ++ ; virtualDirectsOf[uplineOfUser].push(user) ; numberOfActiveUsers ++ ; virtualIds[user] = numberOfActiveUsers; isActive[user] = true ; virtualUplineOf[user] = uplineOfUser; } userLevel[user] = level ; emit LevelPurchased(user , levelPrice[level], block.timestamp) ; } function handlePurchase (uint level) internal { address uplineOfUser = regContract.userUpline(msg.sender); address [4] memory uplines = getUPlinesArray(uplineOfUser); if (uplineOfUser != address(0)) { // we get the number of virtual downlines of the upline of this adress // and add 1 to get the position of the upcoming user uint directNumber = totalVirtualDirect[uplineOfUser] + 1; // if the upcoming user is odd if (directNumber % 2 != 0) { // the direct is odd // this function will distribute 90% to the direct upline // and 10% to the last user has Free income distributeDirectIncome ( level , uplines); } else { distributeToUplines (level , uplines) ; } } } function getUPlinesArray (address uplineOne) internal view returns (address [4] memory ) { address [4] memory uplines ; uplines[0] = uplineOne; // we already have one upline , this function will return 4 uplines for (uint i = 1 ; i < 4 ; i++ ) { uplines[i] = regContract.userUpline(uplines[i - 1]); } return uplines; } function distributeDirectIncome ( uint level , address [4] memory uplines) internal returns(uint ) { address firstUpline = uplines[0]; address currentUpline ; address firstId = getFirstID(); if (firstUpline == address(0)) { currentUpline = firstId; distributeFunds(level , currentUpline) ; return 0 ; } for (uint i = 0 ; i < uplines.length; i ++) { if (hasLevel(level, uplines[i])) { currentUpline = uplines[i] ; break ; } if (i == 3) { currentUpline = firstId; } } distributeFunds(level , currentUpline) ; return 0 ; } function hasLevel (uint level ,address user) internal view returns (bool){ return userLevel[user] >= level; } // this function transfer the amount to the sponsor who is detecet by the function callert function distributeFunds(uint level, address user) internal { uint amount = levelPrice[level] ; if (user != address(0)) { (bool success , ) = user.call{value : amount}("") ; require(success, "Transfer to the user failed") ; UserHistory memory newHistory = UserHistory ({ actionName : "Direct Gain" , actionAmount : amount , actionFrom : msg.sender , actionDate : block.timestamp }) ; history[user].push(newHistory) ; // upldate user state users[user].totalIncome += amount ; users[user].transactionCount += 1 ; users[user].lastUpdate = block.timestamp ; } else { address firstSponsor = getFirstID(); (bool success2 , ) = firstSponsor.call{value : amount}(""); require(success2, "An error occured during direct transfer"); } emit TransferSent(user, amount, block.timestamp); } // this function send at the same time to 4 sponsor 25% of the investment if they are available function distributeToUplines (uint level , address [4] memory uplines) internal { uint staticAmount = levelPrice[level] * 25 / 100; address initialUpline = getFirstID(); for (uint i = 0 ; i < uplines.length ; i ++) { address currentUpline = uplines[i] ; address availableUpline; if (currentUpline == address(0) || !hasLevel(level, currentUpline)) { availableUpline = initialUpline ; } else { availableUpline = currentUpline ; } (bool success , ) = availableUpline.call{value :staticAmount }(""); require(success, "the transfer to the current upline amoung 4 of them failed"); UserHistory memory newHistory = UserHistory ({ actionName : "Sponsor Gain" , actionAmount : staticAmount , actionFrom : msg.sender , actionDate : block.timestamp }) ; history[availableUpline].push(newHistory); // upldate user state users[availableUpline].totalIncome += staticAmount; users[availableUpline].transactionCount += 1 ; users[availableUpline].lastUpdate = block.timestamp ; users[availableUpline].totalVirtualIncome += staticAmount; emit TransferSent(availableUpline, staticAmount, block.timestamp); } } function handlePurchaseFromVrData (uint level) internal { uint team_idOfUser = users[msg.sender].team_Id ; address uplineOfUser = regContract.userUpline(msg.sender); address [4] memory uplines = getUPlinesArray(uplineOfUser); if (team_idOfUser % 2 != 0) { distributeDirectIncome (level , uplines) ; } else { distributeToUplines(level , uplines) ; } } function getvirtualTeamSize(address user) public view returns (uint256) { require(regContract.isRegistered(user), "User not registered"); uint256 totalTeamSize = _getTotalTeamSize(user); return totalTeamSize; } function _getTotalTeamSize(address user) internal view returns (uint256) { uint256 teamSize = virtualDirectsOf[user].length; // Parcours récursif pour compter les downlines des downlines for (uint256 i = 0; i < virtualDirectsOf[user].length; i++) { teamSize += _getTotalTeamSize(virtualDirectsOf[user][i]); } return teamSize; } function getStories (address user) external view returns (UserHistory[] memory) { return history[user]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LevelPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RoyaltyGainSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TransferSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"ownerInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"virtualGainSent","type":"event"},{"inputs":[],"name":"TOTAL_LEVELS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getStories","outputs":[{"components":[{"internalType":"string","name":"actionName","type":"string"},{"internalType":"uint256","name":"actionAmount","type":"uint256"},{"internalType":"address","name":"actionFrom","type":"address"},{"internalType":"uint256","name":"actionDate","type":"uint256"}],"internalType":"struct VRMatrix.UserHistory[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getvirtualTeamSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"history","outputs":[{"internalType":"string","name":"actionName","type":"string"},{"internalType":"uint256","name":"actionAmount","type":"uint256"},{"internalType":"address","name":"actionFrom","type":"address"},{"internalType":"uint256","name":"actionDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfActiveUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"purchase_sec_case","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"regContract","outputs":[{"internalType":"contract IREG","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalVirtualDirect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"team_Id","type":"uint256"},{"internalType":"uint256","name":"totalIncome","type":"uint256"},{"internalType":"uint256","name":"totalVirtualIncome","type":"uint256"},{"internalType":"uint256","name":"transactionCount","type":"uint256"},{"internalType":"uint256","name":"totalDirect","type":"uint256"},{"internalType":"uint256","name":"lastUpdate","type":"uint256"},{"internalType":"uint256","name":"currentUserLevel","type":"uint256"},{"internalType":"uint256","name":"firstActivationDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"virtualAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"virtualDirectsOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"virtualIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"virtualUplineOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600a6006553480156200001657600080fd5b5062000028336200012b60201b60201c565b6001808190555073bbcd14b04924f33c303627578708fd4f51d39383600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550674563918244f400006008600060018152602001908152602001600020819055506000600290505b6006548110156200011457600260086000600184620000cc9190620007c5565b815260200190815260200160002054620000e7919062000764565b600860008381526020019081526020016000208190555080806200010b9062000852565b915050620000ac565b5062000125620001ef60201b60201c565b620008e9565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000620002016200060c60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060076000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806101200160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001815260200160008152602001600081526020016000815260200160008152602001428152602001600654815260200142815250600f6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015590505060065460096000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600254600d6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016002819055507f033adf756bd958e7e4607baacceb41f01f04f86bef905b925c3332140eb8e1d6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200060191906200072a565b60405180910390a150565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b81526004016200066c919062000747565b60206040518083038186803b1580156200068557600080fd5b505afa1580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c09190620006dc565b905090565b600081519050620006d681620008cf565b92915050565b600060208284031215620006ef57600080fd5b6000620006ff84828501620006c5565b91505092915050565b620007138162000800565b82525050565b62000724816200083e565b82525050565b600060208201905062000741600083018462000708565b92915050565b60006020820190506200075e600083018462000719565b92915050565b6000620007718262000834565b91506200077e8362000834565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007ba57620007b9620008a0565b5b828202905092915050565b6000620007d28262000834565b9150620007df8362000834565b925082821015620007f557620007f4620008a0565b5b828203905092915050565b60006200080d8262000814565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200084b8262000834565b9050919050565b60006200085f8262000834565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620008955762000894620008a0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620008da8162000800565b8114620008e657600080fd5b50565b613e1b80620008f96000396000f3fe60806040526004361061012a5760003560e01c80637718f4ec116100ab578063aad049b31161006f578063aad049b314610471578063af1db4dd146104ae578063b0b95fa2146104d9578063dc85fecf14610504578063efef39a114610541578063f2fde38b1461055d5761012a565b80637718f4ec146103475780638da5cb5b146103875780639f8a13d7146103b2578063a87430ba146103ef578063a8950aa4146104345761012a565b80635abe9a06116100f25780635abe9a061461023a5780635dd43796146102775780636c04cbfd146102b45780636dfa8d99146102f157806373416fc81461031c5761012a565b80630eb7eb831461012f578063173ef9cb1461015a57806322bbb95714610197578063260f5fe9146101c0578063280e31cc146101fd575b600080fd5b34801561013b57600080fd5b50610144610586565b6040516101519190613a04565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061309e565b61058c565b60405161018e9190613a04565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b991906130f0565b6105a4565b005b3480156101cc57600080fd5b506101e760048036038101906101e29190613155565b610dbc565b6040516101f491906136e6565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061309e565b610def565b6040516102319190613a04565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061309e565b610e07565b60405161026e91906136e6565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061309e565b610e3a565b6040516102ab91906137c5565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d6919061309e565b610fd4565b6040516102e89190613a04565b60405180910390f35b3480156102fd57600080fd5b506103066110d6565b6040516103139190613a04565b60405180910390f35b34801561032857600080fd5b506103316110dc565b60405161033e9190613802565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130f0565b611102565b60405161037e9493929190613838565b60405180910390f35b34801561039357600080fd5b5061039c6111f7565b6040516103a991906136e6565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d4919061309e565b611220565b6040516103e691906137e7565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061309e565b611240565b60405161042b99989796959493929190613738565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906130f0565b6112ae565b60405161046891906136e6565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613155565b6112fc565b6040516104a59190613a04565b60405180910390f35b3480156104ba57600080fd5b506104c3611314565b6040516104d09190613a04565b60405180910390f35b3480156104e557600080fd5b506104ee61131a565b6040516104fb91906136e6565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061309e565b611340565b6040516105389190613a04565b60405180910390f35b61055b60048036038101906105569190613155565b611358565b005b34801561056957600080fd5b50610584600480360381019061057f919061309e565b611c48565b005b60065481565b600a6020528060005260406000206000915090505481565b600260015414156105ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e1906139e4565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610677906139c4565b60405180910390fd5b6000811180156106905750600b81105b6106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161079a91906136e6565b60206040518083038186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea919061312c565b610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082090613984565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150846040518263ffffffff1660e01b815260040161088691906136e6565b60206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d1d576040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020016001836109e89190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b4390613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190610bfb90613c88565b9190505550600254600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b84600860008681526020019081526020016000205442604051610da793929190613701565b60405180910390a15050600180819055505050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610fc95783829060005260206000209060040201604051806080016040529081600082018054610ece90613c56565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613c56565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505081526020019060010190610e9b565b505050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161103191906136e6565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061312c565b6110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790613924565b60405180910390fd5b60006110cb83611d52565b905080915050919050565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020818154811061111e57600080fd5b90600052602060002090600402016000915091505080600001805461114290613c56565b80601f016020809104026020016040519081016040528092919081815260200182805461116e90613c56565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b5050505050908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600b60205281600052604060002081815481106112ca57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6002600154141561139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906139e4565b60405180910390fd5b60026001819055506000811180156113b65750600b81105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547336040518263ffffffff1660e01b81526004016114c091906136e6565b60206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061312c565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613984565b60405180910390fd5b600860008281526020019081526020016000205434146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613944565b60405180910390fd5b600181111561163b576001816115ba9190613b71565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906138a4565b60405180910390fd5b5b60018114156116525761164d81611ebb565b61165c565b61165b81612031565b5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016116b991906136e6565b60206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170991906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b50576040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160018361181b9190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061197690613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190611a2e90613c88565b9190505550600254600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460036000828254611be79190613a90565b925050819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b33600860008681526020019081526020016000205442604051611c3493929190613701565b60405180910390a150506001808190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613904565b60405180910390fd5b611d4f81612169565b50565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611eb157611e91600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611e61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d52565b82611e9c9190613a90565b91508080611ea990613c88565b915050611d9d565b5080915050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b8152600401611f1891906136e6565b60206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906130c7565b90506000611f758261222d565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461202c5760006001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99190613a90565b9050600060028261200a9190613cd1565b1461201f576120198483612440565b5061202a565b61202984836125b5565b5b505b505050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016120d591906136e6565b60206040518083038186803b1580156120ed57600080fd5b505afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212591906130c7565b905060006121328261222d565b905060006002846121439190613cd1565b14612158576121528482612440565b50612163565b61216284826125b5565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612235612f85565b61223d612f85565b8281600060048110612278577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600190505b600481101561243657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c61508360018461230b9190613b71565b60048110612342577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040518263ffffffff1660e01b815260040161236391906136e6565b60206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b391906130c7565b8282600481106123ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061242e90613c88565b9150506122b6565b5080915050919050565b6000808260006004811061247d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008061248f612a3e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124df578091506124d38683612af1565b600093505050506125af565b60005b600481101561259c5761253287878360048110612528577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612f38565b1561257c57858160048110612570577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151925061259c565b6003811415612589578192505b808061259490613c88565b9150506124e2565b506125a78683612af1565b600093505050505b92915050565b60006064601960086000868152602001908152602001600020546125d99190613b17565b6125e39190613ae6565b905060006125ef612a3e565b905060005b6004811015612a37576000848260048110612638577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061268257506126808783612f38565b155b1561268f57839050612693565b8190505b60008173ffffffffffffffffffffffffffffffffffffffff16866040516126b9906136d1565b60006040518083038185875af1925050503d80600081146126f6576040519150601f19603f3d011682016040523d82523d6000602084013e6126fb565b606091505b505090508061273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690613964565b60405180910390fd5b600060405180608001604052806040518060400160405280600c81526020017f53706f6e736f72204761696e000000000000000000000000000000000000000081525081526020018881526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612834929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546128e49190613a90565b925050819055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825461293e9190613a90565b9250508190555042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546129de9190613a90565b925050819055507f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0838842604051612a1893929190613701565b60405180910390a1505050508080612a2f90613c88565b9150506125f4565b5050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b8152600401612a9c919061381d565b60206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906130c7565b905090565b600060086000848152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e3d5760008273ffffffffffffffffffffffffffffffffffffffff1682604051612b63906136d1565b60006040518083038185875af1925050503d8060008114612ba0576040519150601f19603f3d011682016040523d82523d6000602084013e612ba5565b606091505b5050905080612be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be0906139a4565b60405180910390fd5b600060405180608001604052806040518060400160405280600b81526020017f446972656374204761696e00000000000000000000000000000000000000000081525081526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612cde929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505082600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612d8e9190613a90565b925050819055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612de89190613a90565b9250508190555042600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505050612ef8565b6000612e47612a3e565b905060008173ffffffffffffffffffffffffffffffffffffffff1683604051612e6f906136d1565b60006040518083038185875af1925050503d8060008114612eac576040519150601f19603f3d011682016040523d82523d6000602084013e612eb1565b606091505b5050905080612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90613884565b60405180910390fd5b50505b7f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0828242604051612f2b93929190613701565b60405180910390a1505050565b600082600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015905092915050565b6040518060800160405280600490602082028036833780820191505090505090565b828054612fb390613c56565b90600052602060002090601f016020900481019282612fd5576000855561301c565b82601f10612fee57805160ff191683800117855561301c565b8280016001018555821561301c579182015b8281111561301b578251825591602001919060010190613000565b5b509050613029919061302d565b5090565b5b8082111561304657600081600090555060010161302e565b5090565b60008135905061305981613da0565b92915050565b60008151905061306e81613da0565b92915050565b60008151905061308381613db7565b92915050565b60008135905061309881613dce565b92915050565b6000602082840312156130b057600080fd5b60006130be8482850161304a565b91505092915050565b6000602082840312156130d957600080fd5b60006130e78482850161305f565b91505092915050565b6000806040838503121561310357600080fd5b60006131118582860161304a565b925050602061312285828601613089565b9150509250929050565b60006020828403121561313e57600080fd5b600061314c84828501613074565b91505092915050565b60006020828403121561316757600080fd5b600061317584828501613089565b91505092915050565b600061318a8383613650565b905092915050565b61319b81613ba5565b82525050565b6131aa81613ba5565b82525050565b60006131bb82613a2f565b6131c58185613a52565b9350836020820285016131d785613a1f565b8060005b8581101561321357848403895281516131f4858261317e565b94506131ff83613a45565b925060208a019950506001810190506131db565b50829750879550505050505092915050565b61322e81613bb7565b82525050565b61323d81613bed565b82525050565b61324c81613c11565b82525050565b600061325d82613a3a565b6132678185613a6e565b9350613277818560208601613c23565b61328081613d8f565b840191505092915050565b600061329682613a3a565b6132a08185613a7f565b93506132b0818560208601613c23565b6132b981613d8f565b840191505092915050565b60006132d1602783613a7f565b91507f416e206572726f72206f63637572656420647572696e6720646972656374207460008301527f72616e73666572000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613337601c83613a7f565b91507f50726576696f7573206c6576656c206e6f7420616374697661746564000000006000830152602082019050919050565b6000613377601b83613a7f565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b60006133b7601583613a7f565b91507f4c6576656c206973206f7574206f662072616e676500000000000000000000006000830152602082019050919050565b60006133f7602683613a7f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061345d601383613a7f565b91507f55736572206e6f742072656769737465726564000000000000000000000000006000830152602082019050919050565b600061349d601183613a7f565b91507f6e6f7420656e6f75677468206f70424e420000000000000000000000000000006000830152602082019050919050565b60006134dd603a83613a7f565b91507f746865207472616e7366657220746f207468652063757272656e742075706c6960008301527f6e6520616d6f756e672034206f66207468656d206661696c65640000000000006020830152604082019050919050565b6000613543601683613a7f565b91507f55736572206973206e6f742072656769737465726564000000000000000000006000830152602082019050919050565b6000613583601b83613a7f565b91507f5472616e7366657220746f207468652075736572206661696c656400000000006000830152602082019050919050565b60006135c3602083613a7f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613603600083613a63565b9150600082019050919050565b600061361d601f83613a7f565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000608083016000830151848203600086015261366d8282613252565b915050602083015161368260208601826136b3565b5060408301516136956040860182613192565b5060608301516136a860608601826136b3565b508091505092915050565b6136bc81613be3565b82525050565b6136cb81613be3565b82525050565b60006136dc826135f6565b9150819050919050565b60006020820190506136fb60008301846131a1565b92915050565b600060608201905061371660008301866131a1565b61372360208301856136c2565b61373060408301846136c2565b949350505050565b60006101208201905061374e600083018c6131a1565b61375b602083018b6136c2565b613768604083018a6136c2565b61377560608301896136c2565b61378260808301886136c2565b61378f60a08301876136c2565b61379c60c08301866136c2565b6137a960e08301856136c2565b6137b76101008301846136c2565b9a9950505050505050505050565b600060208201905081810360008301526137df81846131b0565b905092915050565b60006020820190506137fc6000830184613225565b92915050565b60006020820190506138176000830184613234565b92915050565b60006020820190506138326000830184613243565b92915050565b60006080820190508181036000830152613852818761328b565b905061386160208301866136c2565b61386e60408301856131a1565b61387b60608301846136c2565b95945050505050565b6000602082019050818103600083015261389d816132c4565b9050919050565b600060208201905081810360008301526138bd8161332a565b9050919050565b600060208201905081810360008301526138dd8161336a565b9050919050565b600060208201905081810360008301526138fd816133aa565b9050919050565b6000602082019050818103600083015261391d816133ea565b9050919050565b6000602082019050818103600083015261393d81613450565b9050919050565b6000602082019050818103600083015261395d81613490565b9050919050565b6000602082019050818103600083015261397d816134d0565b9050919050565b6000602082019050818103600083015261399d81613536565b9050919050565b600060208201905081810360008301526139bd81613576565b9050919050565b600060208201905081810360008301526139dd816135b6565b9050919050565b600060208201905081810360008301526139fd81613610565b9050919050565b6000602082019050613a1960008301846136c2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a9b82613be3565b9150613aa683613be3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613adb57613ada613d02565b5b828201905092915050565b6000613af182613be3565b9150613afc83613be3565b925082613b0c57613b0b613d31565b5b828204905092915050565b6000613b2282613be3565b9150613b2d83613be3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6657613b65613d02565b5b828202905092915050565b6000613b7c82613be3565b9150613b8783613be3565b925082821015613b9a57613b99613d02565b5b828203905092915050565b6000613bb082613bc3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613bf882613bff565b9050919050565b6000613c0a82613bc3565b9050919050565b6000613c1c82613be3565b9050919050565b60005b83811015613c41578082015181840152602081019050613c26565b83811115613c50576000848401525b50505050565b60006002820490506001821680613c6e57607f821691505b60208210811415613c8257613c81613d60565b5b50919050565b6000613c9382613be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc657613cc5613d02565b5b600182019050919050565b6000613cdc82613be3565b9150613ce783613be3565b925082613cf757613cf6613d31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613da981613ba5565b8114613db457600080fd5b50565b613dc081613bb7565b8114613dcb57600080fd5b50565b613dd781613be3565b8114613de257600080fd5b5056fea2646970667358221220608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c8664736f6c63430008000033
Deployed Bytecode
0x60806040526004361061012a5760003560e01c80637718f4ec116100ab578063aad049b31161006f578063aad049b314610471578063af1db4dd146104ae578063b0b95fa2146104d9578063dc85fecf14610504578063efef39a114610541578063f2fde38b1461055d5761012a565b80637718f4ec146103475780638da5cb5b146103875780639f8a13d7146103b2578063a87430ba146103ef578063a8950aa4146104345761012a565b80635abe9a06116100f25780635abe9a061461023a5780635dd43796146102775780636c04cbfd146102b45780636dfa8d99146102f157806373416fc81461031c5761012a565b80630eb7eb831461012f578063173ef9cb1461015a57806322bbb95714610197578063260f5fe9146101c0578063280e31cc146101fd575b600080fd5b34801561013b57600080fd5b50610144610586565b6040516101519190613a04565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061309e565b61058c565b60405161018e9190613a04565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b991906130f0565b6105a4565b005b3480156101cc57600080fd5b506101e760048036038101906101e29190613155565b610dbc565b6040516101f491906136e6565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061309e565b610def565b6040516102319190613a04565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061309e565b610e07565b60405161026e91906136e6565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061309e565b610e3a565b6040516102ab91906137c5565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d6919061309e565b610fd4565b6040516102e89190613a04565b60405180910390f35b3480156102fd57600080fd5b506103066110d6565b6040516103139190613a04565b60405180910390f35b34801561032857600080fd5b506103316110dc565b60405161033e9190613802565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130f0565b611102565b60405161037e9493929190613838565b60405180910390f35b34801561039357600080fd5b5061039c6111f7565b6040516103a991906136e6565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d4919061309e565b611220565b6040516103e691906137e7565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061309e565b611240565b60405161042b99989796959493929190613738565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906130f0565b6112ae565b60405161046891906136e6565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613155565b6112fc565b6040516104a59190613a04565b60405180910390f35b3480156104ba57600080fd5b506104c3611314565b6040516104d09190613a04565b60405180910390f35b3480156104e557600080fd5b506104ee61131a565b6040516104fb91906136e6565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061309e565b611340565b6040516105389190613a04565b60405180910390f35b61055b60048036038101906105569190613155565b611358565b005b34801561056957600080fd5b50610584600480360381019061057f919061309e565b611c48565b005b60065481565b600a6020528060005260406000206000915090505481565b600260015414156105ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e1906139e4565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610677906139c4565b60405180910390fd5b6000811180156106905750600b81105b6106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161079a91906136e6565b60206040518083038186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea919061312c565b610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082090613984565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150846040518263ffffffff1660e01b815260040161088691906136e6565b60206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d1d576040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020016001836109e89190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b4390613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190610bfb90613c88565b9190505550600254600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b84600860008681526020019081526020016000205442604051610da793929190613701565b60405180910390a15050600180819055505050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610fc95783829060005260206000209060040201604051806080016040529081600082018054610ece90613c56565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613c56565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505081526020019060010190610e9b565b505050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161103191906136e6565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061312c565b6110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790613924565b60405180910390fd5b60006110cb83611d52565b905080915050919050565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020818154811061111e57600080fd5b90600052602060002090600402016000915091505080600001805461114290613c56565b80601f016020809104026020016040519081016040528092919081815260200182805461116e90613c56565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b5050505050908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600b60205281600052604060002081815481106112ca57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6002600154141561139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906139e4565b60405180910390fd5b60026001819055506000811180156113b65750600b81105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547336040518263ffffffff1660e01b81526004016114c091906136e6565b60206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061312c565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613984565b60405180910390fd5b600860008281526020019081526020016000205434146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613944565b60405180910390fd5b600181111561163b576001816115ba9190613b71565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906138a4565b60405180910390fd5b5b60018114156116525761164d81611ebb565b61165c565b61165b81612031565b5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016116b991906136e6565b60206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170991906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b50576040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160018361181b9190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061197690613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190611a2e90613c88565b9190505550600254600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460036000828254611be79190613a90565b925050819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b33600860008681526020019081526020016000205442604051611c3493929190613701565b60405180910390a150506001808190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613904565b60405180910390fd5b611d4f81612169565b50565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611eb157611e91600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611e61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d52565b82611e9c9190613a90565b91508080611ea990613c88565b915050611d9d565b5080915050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b8152600401611f1891906136e6565b60206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906130c7565b90506000611f758261222d565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461202c5760006001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99190613a90565b9050600060028261200a9190613cd1565b1461201f576120198483612440565b5061202a565b61202984836125b5565b5b505b505050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016120d591906136e6565b60206040518083038186803b1580156120ed57600080fd5b505afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212591906130c7565b905060006121328261222d565b905060006002846121439190613cd1565b14612158576121528482612440565b50612163565b61216284826125b5565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612235612f85565b61223d612f85565b8281600060048110612278577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600190505b600481101561243657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c61508360018461230b9190613b71565b60048110612342577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040518263ffffffff1660e01b815260040161236391906136e6565b60206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b391906130c7565b8282600481106123ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061242e90613c88565b9150506122b6565b5080915050919050565b6000808260006004811061247d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008061248f612a3e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124df578091506124d38683612af1565b600093505050506125af565b60005b600481101561259c5761253287878360048110612528577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612f38565b1561257c57858160048110612570577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151925061259c565b6003811415612589578192505b808061259490613c88565b9150506124e2565b506125a78683612af1565b600093505050505b92915050565b60006064601960086000868152602001908152602001600020546125d99190613b17565b6125e39190613ae6565b905060006125ef612a3e565b905060005b6004811015612a37576000848260048110612638577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061268257506126808783612f38565b155b1561268f57839050612693565b8190505b60008173ffffffffffffffffffffffffffffffffffffffff16866040516126b9906136d1565b60006040518083038185875af1925050503d80600081146126f6576040519150601f19603f3d011682016040523d82523d6000602084013e6126fb565b606091505b505090508061273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690613964565b60405180910390fd5b600060405180608001604052806040518060400160405280600c81526020017f53706f6e736f72204761696e000000000000000000000000000000000000000081525081526020018881526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612834929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546128e49190613a90565b925050819055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825461293e9190613a90565b9250508190555042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546129de9190613a90565b925050819055507f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0838842604051612a1893929190613701565b60405180910390a1505050508080612a2f90613c88565b9150506125f4565b5050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b8152600401612a9c919061381d565b60206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906130c7565b905090565b600060086000848152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e3d5760008273ffffffffffffffffffffffffffffffffffffffff1682604051612b63906136d1565b60006040518083038185875af1925050503d8060008114612ba0576040519150601f19603f3d011682016040523d82523d6000602084013e612ba5565b606091505b5050905080612be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be0906139a4565b60405180910390fd5b600060405180608001604052806040518060400160405280600b81526020017f446972656374204761696e00000000000000000000000000000000000000000081525081526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612cde929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505082600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612d8e9190613a90565b925050819055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612de89190613a90565b9250508190555042600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505050612ef8565b6000612e47612a3e565b905060008173ffffffffffffffffffffffffffffffffffffffff1683604051612e6f906136d1565b60006040518083038185875af1925050503d8060008114612eac576040519150601f19603f3d011682016040523d82523d6000602084013e612eb1565b606091505b5050905080612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90613884565b60405180910390fd5b50505b7f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0828242604051612f2b93929190613701565b60405180910390a1505050565b600082600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015905092915050565b6040518060800160405280600490602082028036833780820191505090505090565b828054612fb390613c56565b90600052602060002090601f016020900481019282612fd5576000855561301c565b82601f10612fee57805160ff191683800117855561301c565b8280016001018555821561301c579182015b8281111561301b578251825591602001919060010190613000565b5b509050613029919061302d565b5090565b5b8082111561304657600081600090555060010161302e565b5090565b60008135905061305981613da0565b92915050565b60008151905061306e81613da0565b92915050565b60008151905061308381613db7565b92915050565b60008135905061309881613dce565b92915050565b6000602082840312156130b057600080fd5b60006130be8482850161304a565b91505092915050565b6000602082840312156130d957600080fd5b60006130e78482850161305f565b91505092915050565b6000806040838503121561310357600080fd5b60006131118582860161304a565b925050602061312285828601613089565b9150509250929050565b60006020828403121561313e57600080fd5b600061314c84828501613074565b91505092915050565b60006020828403121561316757600080fd5b600061317584828501613089565b91505092915050565b600061318a8383613650565b905092915050565b61319b81613ba5565b82525050565b6131aa81613ba5565b82525050565b60006131bb82613a2f565b6131c58185613a52565b9350836020820285016131d785613a1f565b8060005b8581101561321357848403895281516131f4858261317e565b94506131ff83613a45565b925060208a019950506001810190506131db565b50829750879550505050505092915050565b61322e81613bb7565b82525050565b61323d81613bed565b82525050565b61324c81613c11565b82525050565b600061325d82613a3a565b6132678185613a6e565b9350613277818560208601613c23565b61328081613d8f565b840191505092915050565b600061329682613a3a565b6132a08185613a7f565b93506132b0818560208601613c23565b6132b981613d8f565b840191505092915050565b60006132d1602783613a7f565b91507f416e206572726f72206f63637572656420647572696e6720646972656374207460008301527f72616e73666572000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613337601c83613a7f565b91507f50726576696f7573206c6576656c206e6f7420616374697661746564000000006000830152602082019050919050565b6000613377601b83613a7f565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b60006133b7601583613a7f565b91507f4c6576656c206973206f7574206f662072616e676500000000000000000000006000830152602082019050919050565b60006133f7602683613a7f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061345d601383613a7f565b91507f55736572206e6f742072656769737465726564000000000000000000000000006000830152602082019050919050565b600061349d601183613a7f565b91507f6e6f7420656e6f75677468206f70424e420000000000000000000000000000006000830152602082019050919050565b60006134dd603a83613a7f565b91507f746865207472616e7366657220746f207468652063757272656e742075706c6960008301527f6e6520616d6f756e672034206f66207468656d206661696c65640000000000006020830152604082019050919050565b6000613543601683613a7f565b91507f55736572206973206e6f742072656769737465726564000000000000000000006000830152602082019050919050565b6000613583601b83613a7f565b91507f5472616e7366657220746f207468652075736572206661696c656400000000006000830152602082019050919050565b60006135c3602083613a7f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613603600083613a63565b9150600082019050919050565b600061361d601f83613a7f565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000608083016000830151848203600086015261366d8282613252565b915050602083015161368260208601826136b3565b5060408301516136956040860182613192565b5060608301516136a860608601826136b3565b508091505092915050565b6136bc81613be3565b82525050565b6136cb81613be3565b82525050565b60006136dc826135f6565b9150819050919050565b60006020820190506136fb60008301846131a1565b92915050565b600060608201905061371660008301866131a1565b61372360208301856136c2565b61373060408301846136c2565b949350505050565b60006101208201905061374e600083018c6131a1565b61375b602083018b6136c2565b613768604083018a6136c2565b61377560608301896136c2565b61378260808301886136c2565b61378f60a08301876136c2565b61379c60c08301866136c2565b6137a960e08301856136c2565b6137b76101008301846136c2565b9a9950505050505050505050565b600060208201905081810360008301526137df81846131b0565b905092915050565b60006020820190506137fc6000830184613225565b92915050565b60006020820190506138176000830184613234565b92915050565b60006020820190506138326000830184613243565b92915050565b60006080820190508181036000830152613852818761328b565b905061386160208301866136c2565b61386e60408301856131a1565b61387b60608301846136c2565b95945050505050565b6000602082019050818103600083015261389d816132c4565b9050919050565b600060208201905081810360008301526138bd8161332a565b9050919050565b600060208201905081810360008301526138dd8161336a565b9050919050565b600060208201905081810360008301526138fd816133aa565b9050919050565b6000602082019050818103600083015261391d816133ea565b9050919050565b6000602082019050818103600083015261393d81613450565b9050919050565b6000602082019050818103600083015261395d81613490565b9050919050565b6000602082019050818103600083015261397d816134d0565b9050919050565b6000602082019050818103600083015261399d81613536565b9050919050565b600060208201905081810360008301526139bd81613576565b9050919050565b600060208201905081810360008301526139dd816135b6565b9050919050565b600060208201905081810360008301526139fd81613610565b9050919050565b6000602082019050613a1960008301846136c2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a9b82613be3565b9150613aa683613be3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613adb57613ada613d02565b5b828201905092915050565b6000613af182613be3565b9150613afc83613be3565b925082613b0c57613b0b613d31565b5b828204905092915050565b6000613b2282613be3565b9150613b2d83613be3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6657613b65613d02565b5b828202905092915050565b6000613b7c82613be3565b9150613b8783613be3565b925082821015613b9a57613b99613d02565b5b828203905092915050565b6000613bb082613bc3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613bf882613bff565b9050919050565b6000613c0a82613bc3565b9050919050565b6000613c1c82613be3565b9050919050565b60005b83811015613c41578082015181840152602081019050613c26565b83811115613c50576000848401525b50505050565b60006002820490506001821680613c6e57607f821691505b60208210811415613c8257613c81613d60565b5b50919050565b6000613c9382613be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc657613cc5613d02565b5b600182019050919050565b6000613cdc82613be3565b9150613ce783613be3565b925082613cf757613cf6613d31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613da981613ba5565b8114613db457600080fd5b50565b613dc081613bb7565b8114613dcb57600080fd5b50565b613dd781613be3565b8114613de257600080fd5b5056fea2646970667358221220608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c8664736f6c63430008000033
Deployed Bytecode Sourcemap
1821:12498:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2034:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3438:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7022:1490;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3557:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3389:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3284:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14200:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13595:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1939:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1970;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3758:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;325:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3663:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3713:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3496:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3342:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1901:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2000:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3613:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4878:2137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;537:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2034:29;;;;:::o;3438:52::-;;;;;;;;;;;;;;;;;:::o;7022:1490::-;1133:1;1249:7;;:19;;1241:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1;1315:7;:18;;;;462:10:::1;452:20;;:6;::::0;::::1;;;;;;;;:20;;;444:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7183:1:::2;7175:5;:9;:23;;;;;7196:2;7188:5;:10;7175:23;7167:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7307:1;7291:18;;:4;:18;;;;7283:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7405:11;;;;;;;;;;;:24;;;7430:4;7405:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7397:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7531:20;7554:11;;;;;;;;;;;:22;;;7577:4;7554:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7531:51;;7591:16;7610:18;:32;7629:12;7610:32;;;;;;;;;;;;;;;;7591:51;;7694:1;7659:37;;:5;:11;7665:4;7659:11;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:37;;;7655:744;;;7782:342;;;;;;;;7814:4;7782:342;;;;;;7854:1;7840:11;:15;;;;:::i;:::-;7782:342;;;;7882:1;7782:342;;;;7917:1;7782:342;;;;7951:1;7782:342;;;;7980:1;7782:342;;;;8008:15;7782:342;;;;8055:5;7782:342;;;;8095:15;7782:342;;::::0;7768:5:::2;:11;7774:4;7768:11;;;;;;;;;;;;;;;:356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:18;:32;8158:12;8139:32;;;;;;;;;;;;;;;;:35;;;;;;;;;:::i;:::-;;;;;;8185:16;:30;8202:12;8185:30;;;;;;;;;;;;;;;8221:4;8185:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8237:19;;:22;;;;;;;;;:::i;:::-;;;;;;8289:19;;8270:10;:16;8281:4;8270:16;;;;;;;;;;;;;;;:38;;;;8335:4;8318:8;:14;8327:4;8318:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;8374:12;8350:15;:21;8366:4;8350:21;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7655:744;8420:5;8402:9;:15;8412:4;8402:15;;;;;;;;;;;;;;;:23;;;;8436:57;8451:4;8458:10;:17;8469:5;8458:17;;;;;;;;;;;;8477:15;8436:57;;;;;;;;:::i;:::-;;;;;;;;520:1;;1089::::0;1356:7;:22;;;;7022:1490;;:::o;3557:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;3389:43::-;;;;;;;;;;;;;;;;;:::o;3284:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14200:116::-;14258:20;14294:7;:13;14302:4;14294:13;;;;;;;;;;;;;;;14287:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14200:116;;;:::o;13595:228::-;13658:7;13682:11;;;;;;;;;;;:24;;;13707:4;13682:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13674:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13745:21;13769:23;13787:4;13769:17;:23::i;:::-;13745:47;;13806:13;13799:20;;;13595:228;;;:::o;1939:23::-;;;;:::o;1970:::-;;;;;;;;;;;;;:::o;3758:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;325:79::-;363:7;390:6;;;;;;;;;;;383:13;;325:79;:::o;3663:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3713:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3496:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3342:41::-;;;;;;;;;;;;;;;;;:::o;1901:31::-;;;;:::o;2000:23::-;;;;;;;;;;;;;:::o;3613:44::-;;;;;;;;;;;;;;;;;:::o;4878:2137::-;1133:1;1249:7;;:19;;1241:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1;1315:7;:18;;;;5012:1:::1;5004:5;:9;:23;;;;;5025:2;5017:5;:10;5004:23;4996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5142:1;5120:24;;:10;:24;;;;5112:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5240:11;;;;;;;;;;;:24;;;5265:10;5240:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5232:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5407:10;:17;5418:5;5407:17;;;;;;;;;;;;5394:9;:30;5386:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5480:1;5471:5;:10;5467:183;;;5604:1;5596:5;:9;;;;:::i;:::-;5571;:21;5581:10;5571:21;;;;;;;;;;;;;;;;:34;5563:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5467:183;5712:1;5703:5;:10;5699:160;;;5751:21;5766:5;5751:14;:21::i;:::-;5699:160;;;5812:32;5838:5;5812:24;:32::i;:::-;5699:160;5915:20;5938:11;;;;;;;;;;;:22;;;5961:10;5938:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5915:57;;5981:16;6000:18;:32;6019:12;6000:32;;;;;;;;;;;;;;;;5981:51;;6090:1;6049:43;;:5;:17;6055:10;6049:17;;;;;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;6045:786;;;6184:348;;;;;;;;6216:10;6184:348;;;;;;6262:1;6248:11;:15;;;;:::i;:::-;6184:348;;;;6290:1;6184:348;;;;6325:1;6184:348;;;;6359:1;6184:348;;;;6388:1;6184:348;;;;6416:15;6184:348;;;;6463:5;6184:348;;;;6503:15;6184:348;;::::0;6164:5:::1;:17;6170:10;6164:17;;;;;;;;;;;;;;;:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6547:18;:32;6566:12;6547:32;;;;;;;;;;;;;;;;:35;;;;;;;;;:::i;:::-;;;;;;6593:16;:30;6610:12;6593:30;;;;;;;;;;;;;;;6629:10;6593:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:19;;:22;;;;;;;;;:::i;:::-;;;;;;6709:19;;6684:10;:22;6695:10;6684:22;;;;;;;;;;;;;;;:44;;;;6761:4;6738:8;:20;6747:10;6738:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;6806:12;6776:15;:27;6792:10;6776:27;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6045:786;6861:5;6837:9;:21;6847:10;6837:21;;;;;;;;;;;;;;;:29;;;;6882:10;6870:8;;:22;;;;;;;;;;;;;;;;;;6913:9;6898:11;;:24;;;;;;;:::i;:::-;;;;;;;;6933:63;6948:10;6961;:17;6972:5;6961:17;;;;;;;;;;;;6980:15;6933:63;;;;;;;;:::i;:::-;;;;;;;;1344:1;;1089::::0;1356:7;:22;;;;4878:2137;:::o;537:193::-;462:10;452:20;;:6;;;;;;;;;;:20;;;444:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;638:1:::1;618:22;;:8;:22;;;;610:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;694:28;713:8;694:18;:28::i;:::-;537:193:::0;:::o;13829:367::-;13893:7;13909:16;13928;:22;13945:4;13928:22;;;;;;;;;;;;;;;:29;;;;13909:48;;14039:9;14034:135;14058:16;:22;14075:4;14058:22;;;;;;;;;;;;;;;:29;;;;14054:1;:33;14034:135;;;14117:44;14135:16;:22;14152:4;14135:22;;;;;;;;;;;;;;;14158:1;14135:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14117:17;:44::i;:::-;14105:56;;;;;:::i;:::-;;;14089:3;;;;;:::i;:::-;;;;14034:135;;;;14184:8;14177:15;;;13829:367;;;:::o;8518:890::-;8576:20;8599:11;;;;;;;;;;;:22;;;8622:10;8599:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8576:57;;8645:26;8674:29;8690:12;8674:15;:29::i;:::-;8645:58;;8744:1;8720:26;;:12;:26;;;8716:688;;8915:17;8971:1;8936:18;:32;8955:12;8936:32;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;8915:57;;9055:1;9050;9035:12;:16;;;;:::i;:::-;:21;9031:360;;9253:41;9278:5;9286:7;9253:22;:41::i;:::-;;9031:360;;;9337:37;9358:5;9366:7;9337:19;:37::i;:::-;9031:360;8716:688;;8518:890;;;:::o;13194:396::-;13257:18;13278:5;:17;13284:10;13278:17;;;;;;;;;;;;;;;:25;;;13257:46;;13312:20;13335:11;;;;;;;;;;;:22;;;13358:10;13335:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13312:57;;13381:26;13410:29;13426:12;13410:15;:29::i;:::-;13381:58;;13471:1;13466;13450:13;:17;;;;:::i;:::-;:22;13446:139;;13481:40;13505:5;13513:7;13481:22;:40::i;:::-;;13446:139;;;13542:36;13562:5;13570:7;13542:19;:36::i;:::-;13446:139;13194:396;;;;:::o;738:183::-;804:16;823:6;;;;;;;;;;;804:25;;849:8;840:6;;:17;;;;;;;;;;;;;;;;;;904:8;873:40;;894:8;873:40;;;;;;;;;;;;738:183;;:::o;9412:365::-;9480:19;;:::i;:::-;9510:26;;:::i;:::-;9557:9;9544:7;9552:1;9544:10;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;9653:6;9662:1;9653:10;;9648:103;9671:1;9667;:5;9648:103;;;9704:11;;;;;;;;;;;:22;;;9727:7;9739:1;9735;:5;;;;:::i;:::-;9727:14;;;;;;;;;;;;;;;;;;;9704:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9691:7;9699:1;9691:10;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;9675:3;;;;;:::i;:::-;;;;9648:103;;;;9764:7;9757:14;;;9412:365;;;:::o;9781:634::-;9874:4;9887:19;9909:7;9917:1;9909:10;;;;;;;;;;;;;;;;;;;9887:32;;9925:21;9954:15;9972:12;:10;:12::i;:::-;9954:30;;10017:1;9994:25;;:11;:25;;;9990:134;;;10046:7;10030:23;;10060:38;10076:5;10084:13;10060:15;:38::i;:::-;10113:1;10106:8;;;;;;;9990:134;10137:6;10132:216;10154:14;10150:1;:18;10132:216;;;10189:27;10198:5;10205:7;10213:1;10205:10;;;;;;;;;;;;;;;;;;;10189:8;:27::i;:::-;10185:96;;;10245:7;10253:1;10245:10;;;;;;;;;;;;;;;;;;;10229:26;;10267:5;;10185:96;10296:1;10291;:6;10287:56;;;10328:7;10312:23;;10287:56;10170:4;;;;;:::i;:::-;;;;10132:216;;;;10356:38;10372:5;10380:13;10356:15;:38::i;:::-;10407:1;10400:8;;;;;9781:634;;;;;:::o;11782:1406::-;11871:17;11916:3;11911:2;11891:10;:17;11902:5;11891:17;;;;;;;;;;;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11871:48;;11926:21;11950:12;:10;:12::i;:::-;11926:36;;11976:6;11971:1214;11993:14;11989:1;:18;11971:1214;;;12039:21;12063:7;12071:1;12063:10;;;;;;;;;;;;;;;;;;;12039:34;;12087:23;12150:1;12125:27;;:13;:27;;;:62;;;;12157:30;12166:5;12173:13;12157:8;:30::i;:::-;12156:31;12125:62;12121:190;;;12220:13;12202:31;;12121:190;;;12283:13;12265:31;;12121:190;12328:12;12347:15;:20;;12375:12;12347:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12327:66;;;12412:7;12404:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12506:29;12538:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:12;12538:199;;;;12658:10;12538:199;;;;;;12694:15;12538:199;;;12506:231;;12750:7;:24;12758:15;12750:24;;;;;;;;;;;;;;;12780:10;12750:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12883:12;12845:5;:22;12851:15;12845:22;;;;;;;;;;;;;;;:34;;;:50;;;;;;;:::i;:::-;;;;;;;;12953:1;12910:5;:22;12916:15;12910:22;;;;;;;;;;;;;;;:39;;;:44;;;;;;;:::i;:::-;;;;;;;;13006:15;12970:5;:22;12976:15;12970:22;;;;;;;;;;;;;;;:33;;:51;;;;13082:12;13037:5;:22;13043:15;13037:22;;;;;;;;;;;;;;;:41;;;:57;;;;;;;:::i;:::-;;;;;;;;13113:60;13126:15;13143:12;13157:15;13113:60;;;;;;;;:::i;:::-;;;;;;;;11971:1214;;;;12010:4;;;;;:::i;:::-;;;;11971:1214;;;;11782:1406;;;;:::o;4763:106::-;4808:7;4831:11;;;;;;;;;;;:28;;;4860:1;4831:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4824:38;;4763:106;:::o;10652:1024::-;10719:11;10733:10;:17;10744:5;10733:17;;;;;;;;;;;;10719:31;;10780:1;10764:18;;:4;:18;;;10760:838;;10796:12;10815:4;:9;;10833:6;10815:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10795:49;;;10864:7;10856:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10918:29;10950:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11030:6;10950:191;;;;11062:10;10950:191;;;;;;11098:15;10950:191;;;10918:223;;11154:7;:13;11162:4;11154:13;;;;;;;;;;;;;;;11173:10;11154:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:6;11239:5;:11;11245:4;11239:11;;;;;;;;;;;;;;;:23;;;:33;;;;;;;:::i;:::-;;;;;;;;11320:1;11288:5;:11;11294:4;11288:11;;;;;;;;;;;;;;;:28;;;:33;;;;;;;:::i;:::-;;;;;;;;11362:15;11337:5;:11;11343:4;11337:11;;;;;;;;;;;;;;;:22;;:40;;;;10760:838;;;;;11415:20;11438:12;:10;:12::i;:::-;11415:35;;11462:13;11482:12;:17;;11508:6;11482:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11461:58;;;11538:8;11530:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10760:838;;;11614:43;11627:4;11633:6;11641:15;11614:43;;;;;;;;:::i;:::-;;;;;;;;10652:1024;;;:::o;10425:124::-;10493:4;10534:5;10515:9;:15;10525:4;10515:15;;;;;;;;;;;;;;;;:24;;10508:31;;10425:124;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:284::-;;976:2;964:9;955:7;951:23;947:32;944:2;;;992:1;989;982:12;944:2;1035:1;1060:64;1116:7;1107:6;1096:9;1092:22;1060:64;:::i;:::-;1050:74;;1006:128;934:207;;;;:::o;1147:407::-;;;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;1288:1;1285;1278:12;1240:2;1331:1;1356:53;1401:7;1392:6;1381:9;1377:22;1356:53;:::i;:::-;1346:63;;1302:117;1458:2;1484:53;1529:7;1520:6;1509:9;1505:22;1484:53;:::i;:::-;1474:63;;1429:118;1230:324;;;;;:::o;1560:278::-;;1676:2;1664:9;1655:7;1651:23;1647:32;1644:2;;;1692:1;1689;1682:12;1644:2;1735:1;1760:61;1813:7;1804:6;1793:9;1789:22;1760:61;:::i;:::-;1750:71;;1706:125;1634:204;;;;:::o;1844:262::-;;1952:2;1940:9;1931:7;1927:23;1923:32;1920:2;;;1968:1;1965;1958:12;1920:2;2011:1;2036:53;2081:7;2072:6;2061:9;2057:22;2036:53;:::i;:::-;2026:63;;1982:117;1910:196;;;;:::o;2112:268::-;;2272:102;2370:3;2362:6;2272:102;:::i;:::-;2258:116;;2248:132;;;;:::o;2386:108::-;2463:24;2481:5;2463:24;:::i;:::-;2458:3;2451:37;2441:53;;:::o;2500:118::-;2587:24;2605:5;2587:24;:::i;:::-;2582:3;2575:37;2565:53;;:::o;2694:1135::-;;2898:82;2974:5;2898:82;:::i;:::-;2996:114;3103:6;3098:3;2996:114;:::i;:::-;2989:121;;3136:3;3181:4;3173:6;3169:17;3164:3;3160:27;3211:84;3289:5;3211:84;:::i;:::-;3318:7;3349:1;3334:450;3359:6;3356:1;3353:13;3334:450;;;3430:9;3424:4;3420:20;3415:3;3408:33;3481:6;3475:13;3509:120;3624:4;3609:13;3509:120;:::i;:::-;3501:128;;3652:88;3733:6;3652:88;:::i;:::-;3642:98;;3769:4;3764:3;3760:14;3753:21;;3394:390;3381:1;3378;3374:9;3369:14;;3334:450;;;3338:14;3800:4;3793:11;;3820:3;3813:10;;2874:955;;;;;;;;;:::o;3835:109::-;3916:21;3931:5;3916:21;:::i;:::-;3911:3;3904:34;3894:50;;:::o;3950:155::-;4049:49;4092:5;4049:49;:::i;:::-;4044:3;4037:62;4027:78;;:::o;4111:147::-;4206:45;4245:5;4206:45;:::i;:::-;4201:3;4194:58;4184:74;;:::o;4264:344::-;;4370:39;4403:5;4370:39;:::i;:::-;4425:61;4479:6;4474:3;4425:61;:::i;:::-;4418:68;;4495:52;4540:6;4535:3;4528:4;4521:5;4517:16;4495:52;:::i;:::-;4572:29;4594:6;4572:29;:::i;:::-;4567:3;4563:39;4556:46;;4346:262;;;;;:::o;4614:364::-;;4730:39;4763:5;4730:39;:::i;:::-;4785:71;4849:6;4844:3;4785:71;:::i;:::-;4778:78;;4865:52;4910:6;4905:3;4898:4;4891:5;4887:16;4865:52;:::i;:::-;4942:29;4964:6;4942:29;:::i;:::-;4937:3;4933:39;4926:46;;4706:272;;;;;:::o;4984:371::-;;5147:67;5211:2;5206:3;5147:67;:::i;:::-;5140:74;;5244:34;5240:1;5235:3;5231:11;5224:55;5310:9;5305:2;5300:3;5296:12;5289:31;5346:2;5341:3;5337:12;5330:19;;5130:225;;;:::o;5361:326::-;;5524:67;5588:2;5583:3;5524:67;:::i;:::-;5517:74;;5621:30;5617:1;5612:3;5608:11;5601:51;5678:2;5673:3;5669:12;5662:19;;5507:180;;;:::o;5693:325::-;;5856:67;5920:2;5915:3;5856:67;:::i;:::-;5849:74;;5953:29;5949:1;5944:3;5940:11;5933:50;6009:2;6004:3;6000:12;5993:19;;5839:179;;;:::o;6024:319::-;;6187:67;6251:2;6246:3;6187:67;:::i;:::-;6180:74;;6284:23;6280:1;6275:3;6271:11;6264:44;6334:2;6329:3;6325:12;6318:19;;6170:173;;;:::o;6349:370::-;;6512:67;6576:2;6571:3;6512:67;:::i;:::-;6505:74;;6609:34;6605:1;6600:3;6596:11;6589:55;6675:8;6670:2;6665:3;6661:12;6654:30;6710:2;6705:3;6701:12;6694:19;;6495:224;;;:::o;6725:317::-;;6888:67;6952:2;6947:3;6888:67;:::i;:::-;6881:74;;6985:21;6981:1;6976:3;6972:11;6965:42;7033:2;7028:3;7024:12;7017:19;;6871:171;;;:::o;7048:315::-;;7211:67;7275:2;7270:3;7211:67;:::i;:::-;7204:74;;7308:19;7304:1;7299:3;7295:11;7288:40;7354:2;7349:3;7345:12;7338:19;;7194:169;;;:::o;7369:390::-;;7532:67;7596:2;7591:3;7532:67;:::i;:::-;7525:74;;7629:34;7625:1;7620:3;7616:11;7609:55;7695:28;7690:2;7685:3;7681:12;7674:50;7750:2;7745:3;7741:12;7734:19;;7515:244;;;:::o;7765:320::-;;7928:67;7992:2;7987:3;7928:67;:::i;:::-;7921:74;;8025:24;8021:1;8016:3;8012:11;8005:45;8076:2;8071:3;8067:12;8060:19;;7911:174;;;:::o;8091:325::-;;8254:67;8318:2;8313:3;8254:67;:::i;:::-;8247:74;;8351:29;8347:1;8342:3;8338:11;8331:50;8407:2;8402:3;8398:12;8391:19;;8237:179;;;:::o;8422:330::-;;8585:67;8649:2;8644:3;8585:67;:::i;:::-;8578:74;;8682:34;8678:1;8673:3;8669:11;8662:55;8743:2;8738:3;8734:12;8727:19;;8568:184;;;:::o;8758:297::-;;8938:83;9019:1;9014:3;8938:83;:::i;:::-;8931:90;;9047:1;9042:3;9038:11;9031:18;;8921:134;;;:::o;9061:329::-;;9224:67;9288:2;9283:3;9224:67;:::i;:::-;9217:74;;9321:33;9317:1;9312:3;9308:11;9301:54;9381:2;9376:3;9372:12;9365:19;;9207:183;;;:::o;9462:976::-;;9613:4;9608:3;9604:14;9706:4;9699:5;9695:16;9689:23;9759:3;9753:4;9749:14;9742:4;9737:3;9733:14;9726:38;9785:73;9853:4;9839:12;9785:73;:::i;:::-;9777:81;;9628:241;9959:4;9952:5;9948:16;9942:23;9978:63;10035:4;10030:3;10026:14;10012:12;9978:63;:::i;:::-;9879:172;10139:4;10132:5;10128:16;10122:23;10158:63;10215:4;10210:3;10206:14;10192:12;10158:63;:::i;:::-;10061:170;10319:4;10312:5;10308:16;10302:23;10338:63;10395:4;10390:3;10386:14;10372:12;10338:63;:::i;:::-;10241:170;10428:4;10421:11;;9582:856;;;;;:::o;10444:108::-;10521:24;10539:5;10521:24;:::i;:::-;10516:3;10509:37;10499:53;;:::o;10558:118::-;10645:24;10663:5;10645:24;:::i;:::-;10640:3;10633:37;10623:53;;:::o;10682:379::-;;10888:147;11031:3;10888:147;:::i;:::-;10881:154;;11052:3;11045:10;;10870:191;;;:::o;11067:222::-;;11198:2;11187:9;11183:18;11175:26;;11211:71;11279:1;11268:9;11264:17;11255:6;11211:71;:::i;:::-;11165:124;;;;:::o;11295:442::-;;11482:2;11471:9;11467:18;11459:26;;11495:71;11563:1;11552:9;11548:17;11539:6;11495:71;:::i;:::-;11576:72;11644:2;11633:9;11629:18;11620:6;11576:72;:::i;:::-;11658;11726:2;11715:9;11711:18;11702:6;11658:72;:::i;:::-;11449:288;;;;;;:::o;11743:1108::-;;12098:3;12087:9;12083:19;12075:27;;12112:71;12180:1;12169:9;12165:17;12156:6;12112:71;:::i;:::-;12193:72;12261:2;12250:9;12246:18;12237:6;12193:72;:::i;:::-;12275;12343:2;12332:9;12328:18;12319:6;12275:72;:::i;:::-;12357;12425:2;12414:9;12410:18;12401:6;12357:72;:::i;:::-;12439:73;12507:3;12496:9;12492:19;12483:6;12439:73;:::i;:::-;12522;12590:3;12579:9;12575:19;12566:6;12522:73;:::i;:::-;12605;12673:3;12662:9;12658:19;12649:6;12605:73;:::i;:::-;12688;12756:3;12745:9;12741:19;12732:6;12688:73;:::i;:::-;12771;12839:3;12828:9;12824:19;12815:6;12771:73;:::i;:::-;12065:786;;;;;;;;;;;;:::o;12857:485::-;;13094:2;13083:9;13079:18;13071:26;;13143:9;13137:4;13133:20;13129:1;13118:9;13114:17;13107:47;13171:164;13330:4;13321:6;13171:164;:::i;:::-;13163:172;;13061:281;;;;:::o;13348:210::-;;13473:2;13462:9;13458:18;13450:26;;13486:65;13548:1;13537:9;13533:17;13524:6;13486:65;:::i;:::-;13440:118;;;;:::o;13564:246::-;;13707:2;13696:9;13692:18;13684:26;;13720:83;13800:1;13789:9;13785:17;13776:6;13720:83;:::i;:::-;13674:136;;;;:::o;13816:238::-;;13955:2;13944:9;13940:18;13932:26;;13968:79;14044:1;14033:9;14029:17;14020:6;13968:79;:::i;:::-;13922:132;;;;:::o;14060:644::-;;14295:3;14284:9;14280:19;14272:27;;14345:9;14339:4;14335:20;14331:1;14320:9;14316:17;14309:47;14373:78;14446:4;14437:6;14373:78;:::i;:::-;14365:86;;14461:72;14529:2;14518:9;14514:18;14505:6;14461:72;:::i;:::-;14543;14611:2;14600:9;14596:18;14587:6;14543:72;:::i;:::-;14625;14693:2;14682:9;14678:18;14669:6;14625:72;:::i;:::-;14262:442;;;;;;;:::o;14710:419::-;;14914:2;14903:9;14899:18;14891:26;;14963:9;14957:4;14953:20;14949:1;14938:9;14934:17;14927:47;14991:131;15117:4;14991:131;:::i;:::-;14983:139;;14881:248;;;:::o;15135:419::-;;15339:2;15328:9;15324:18;15316:26;;15388:9;15382:4;15378:20;15374:1;15363:9;15359:17;15352:47;15416:131;15542:4;15416:131;:::i;:::-;15408:139;;15306:248;;;:::o;15560:419::-;;15764:2;15753:9;15749:18;15741:26;;15813:9;15807:4;15803:20;15799:1;15788:9;15784:17;15777:47;15841:131;15967:4;15841:131;:::i;:::-;15833:139;;15731:248;;;:::o;15985:419::-;;16189:2;16178:9;16174:18;16166:26;;16238:9;16232:4;16228:20;16224:1;16213:9;16209:17;16202:47;16266:131;16392:4;16266:131;:::i;:::-;16258:139;;16156:248;;;:::o;16410:419::-;;16614:2;16603:9;16599:18;16591:26;;16663:9;16657:4;16653:20;16649:1;16638:9;16634:17;16627:47;16691:131;16817:4;16691:131;:::i;:::-;16683:139;;16581:248;;;:::o;16835:419::-;;17039:2;17028:9;17024:18;17016:26;;17088:9;17082:4;17078:20;17074:1;17063:9;17059:17;17052:47;17116:131;17242:4;17116:131;:::i;:::-;17108:139;;17006:248;;;:::o;17260:419::-;;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17431:248;;;:::o;17685:419::-;;17889:2;17878:9;17874:18;17866:26;;17938:9;17932:4;17928:20;17924:1;17913:9;17909:17;17902:47;17966:131;18092:4;17966:131;:::i;:::-;17958:139;;17856:248;;;:::o;18110:419::-;;18314:2;18303:9;18299:18;18291:26;;18363:9;18357:4;18353:20;18349:1;18338:9;18334:17;18327:47;18391:131;18517:4;18391:131;:::i;:::-;18383:139;;18281:248;;;:::o;18535:419::-;;18739:2;18728:9;18724:18;18716:26;;18788:9;18782:4;18778:20;18774:1;18763:9;18759:17;18752:47;18816:131;18942:4;18816:131;:::i;:::-;18808:139;;18706:248;;;:::o;18960:419::-;;19164:2;19153:9;19149:18;19141:26;;19213:9;19207:4;19203:20;19199:1;19188:9;19184:17;19177:47;19241:131;19367:4;19241:131;:::i;:::-;19233:139;;19131:248;;;:::o;19385:419::-;;19589:2;19578:9;19574:18;19566:26;;19638:9;19632:4;19628:20;19624:1;19613:9;19609:17;19602:47;19666:131;19792:4;19666:131;:::i;:::-;19658:139;;19556:248;;;:::o;19810:222::-;;19941:2;19930:9;19926:18;19918:26;;19954:71;20022:1;20011:9;20007:17;19998:6;19954:71;:::i;:::-;19908:124;;;;:::o;20038:160::-;;20156:3;20148:11;;20186:4;20181:3;20177:14;20169:22;;20138:60;;;:::o;20204:142::-;;20333:5;20327:12;20317:22;;20306:40;;;:::o;20352:99::-;;20438:5;20432:12;20422:22;;20411:40;;;:::o;20457:141::-;;20587:4;20582:3;20578:14;20570:22;;20560:38;;;:::o;20604:212::-;;20765:6;20760:3;20753:19;20805:4;20800:3;20796:14;20781:29;;20743:73;;;;:::o;20822:147::-;;20960:3;20945:18;;20935:34;;;;:::o;20975:159::-;;21083:6;21078:3;21071:19;21123:4;21118:3;21114:14;21099:29;;21061:73;;;;:::o;21140:169::-;;21258:6;21253:3;21246:19;21298:4;21293:3;21289:14;21274:29;;21236:73;;;;:::o;21315:305::-;;21374:20;21392:1;21374:20;:::i;:::-;21369:25;;21408:20;21426:1;21408:20;:::i;:::-;21403:25;;21562:1;21494:66;21490:74;21487:1;21484:81;21481:2;;;21568:18;;:::i;:::-;21481:2;21612:1;21609;21605:9;21598:16;;21359:261;;;;:::o;21626:185::-;;21683:20;21701:1;21683:20;:::i;:::-;21678:25;;21717:20;21735:1;21717:20;:::i;:::-;21712:25;;21756:1;21746:2;;21761:18;;:::i;:::-;21746:2;21803:1;21800;21796:9;21791:14;;21668:143;;;;:::o;21817:348::-;;21880:20;21898:1;21880:20;:::i;:::-;21875:25;;21914:20;21932:1;21914:20;:::i;:::-;21909:25;;22102:1;22034:66;22030:74;22027:1;22024:81;22019:1;22012:9;22005:17;22001:105;21998:2;;;22109:18;;:::i;:::-;21998:2;22157:1;22154;22150:9;22139:20;;21865:300;;;;:::o;22171:191::-;;22231:20;22249:1;22231:20;:::i;:::-;22226:25;;22265:20;22283:1;22265:20;:::i;:::-;22260:25;;22304:1;22301;22298:8;22295:2;;;22309:18;;:::i;:::-;22295:2;22354:1;22351;22347:9;22339:17;;22216:146;;;;:::o;22368:96::-;;22434:24;22452:5;22434:24;:::i;:::-;22423:35;;22413:51;;;:::o;22470:90::-;;22547:5;22540:13;22533:21;22522:32;;22512:48;;;:::o;22566:126::-;;22643:42;22636:5;22632:54;22621:65;;22611:81;;;:::o;22698:77::-;;22764:5;22753:16;;22743:32;;;:::o;22781:150::-;;22876:49;22919:5;22876:49;:::i;:::-;22863:62;;22853:78;;;:::o;22937:125::-;;23032:24;23050:5;23032:24;:::i;:::-;23019:37;;23009:53;;;:::o;23068:121::-;;23159:24;23177:5;23159:24;:::i;:::-;23146:37;;23136:53;;;:::o;23195:307::-;23263:1;23273:113;23287:6;23284:1;23281:13;23273:113;;;23372:1;23367:3;23363:11;23357:18;23353:1;23348:3;23344:11;23337:39;23309:2;23306:1;23302:10;23297:15;;23273:113;;;23404:6;23401:1;23398:13;23395:2;;;23484:1;23475:6;23470:3;23466:16;23459:27;23395:2;23244:258;;;;:::o;23508:320::-;;23589:1;23583:4;23579:12;23569:22;;23636:1;23630:4;23626:12;23657:18;23647:2;;23713:4;23705:6;23701:17;23691:27;;23647:2;23775;23767:6;23764:14;23744:18;23741:38;23738:2;;;23794:18;;:::i;:::-;23738:2;23559:269;;;;:::o;23834:233::-;;23896:24;23914:5;23896:24;:::i;:::-;23887:33;;23942:66;23935:5;23932:77;23929:2;;;24012:18;;:::i;:::-;23929:2;24059:1;24052:5;24048:13;24041:20;;23877:190;;;:::o;24073:176::-;;24122:20;24140:1;24122:20;:::i;:::-;24117:25;;24156:20;24174:1;24156:20;:::i;:::-;24151:25;;24195:1;24185:2;;24200:18;;:::i;:::-;24185:2;24241:1;24238;24234:9;24229:14;;24107:142;;;;:::o;24255:180::-;24303:77;24300:1;24293:88;24400:4;24397:1;24390:15;24424:4;24421:1;24414:15;24441:180;24489:77;24486:1;24479:88;24586:4;24583:1;24576:15;24610:4;24607:1;24600:15;24627:180;24675:77;24672:1;24665:88;24772:4;24769:1;24762:15;24796:4;24793:1;24786:15;24813:102;;24905:2;24901:7;24896:2;24889:5;24885:14;24881:28;24871:38;;24861:54;;;:::o;24921:122::-;24994:24;25012:5;24994:24;:::i;:::-;24987:5;24984:35;24974:2;;25033:1;25030;25023:12;24974:2;24964:79;:::o;25049:116::-;25119:21;25134:5;25119:21;:::i;:::-;25112:5;25109:32;25099:2;;25155:1;25152;25145:12;25099:2;25089:76;:::o;25171:122::-;25244:24;25262:5;25244:24;:::i;:::-;25237:5;25234:35;25224:2;;25283:1;25280;25273:12;25224:2;25214:79;:::o
Swarm Source
ipfs://608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c86
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.