Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 536 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
__accept Admin | 16066522 | 717 days ago | IN | 0 ETH | 0.00025601 | ||||
Cast Vote | 14422934 | 970 days ago | IN | 0 ETH | 0.00144423 | ||||
Cast Vote | 13329655 | 1140 days ago | IN | 0 ETH | 0.00218025 | ||||
Cast Vote | 13295146 | 1146 days ago | IN | 0 ETH | 0.00161043 | ||||
Cast Vote | 13294383 | 1146 days ago | IN | 0 ETH | 0.00120343 | ||||
Execute | 13114754 | 1174 days ago | IN | 0 ETH | 0.0102345 | ||||
Cast Vote | 13100373 | 1176 days ago | IN | 0 ETH | 0.00168313 | ||||
Cast Vote | 13100246 | 1176 days ago | IN | 0 ETH | 0.00183267 | ||||
Queue | 13099874 | 1176 days ago | IN | 0 ETH | 0.01246547 | ||||
Cast Vote | 13098986 | 1176 days ago | IN | 0 ETH | 0.00419217 | ||||
Cast Vote | 13098981 | 1176 days ago | IN | 0 ETH | 0.00298532 | ||||
Cast Vote | 13097558 | 1176 days ago | IN | 0 ETH | 0.00497944 | ||||
Cast Vote | 13097201 | 1176 days ago | IN | 0 ETH | 0.00793039 | ||||
Cast Vote | 13095166 | 1177 days ago | IN | 0 ETH | 0.00667739 | ||||
Cast Vote | 13095156 | 1177 days ago | IN | 0 ETH | 0.00499667 | ||||
Cast Vote | 13095152 | 1177 days ago | IN | 0 ETH | 0.00585591 | ||||
Cast Vote | 13095151 | 1177 days ago | IN | 0 ETH | 0.005856 | ||||
Cast Vote | 13095144 | 1177 days ago | IN | 0 ETH | 0.00676411 | ||||
Cast Vote | 13094802 | 1177 days ago | IN | 0 ETH | 0.00672624 | ||||
Cast Vote | 13094770 | 1177 days ago | IN | 0 ETH | 0.00558787 | ||||
Cast Vote | 13093372 | 1177 days ago | IN | 0 ETH | 0.00574745 | ||||
Cast Vote | 13093230 | 1177 days ago | IN | 0 ETH | 0.00365928 | ||||
Cast Vote | 13093208 | 1177 days ago | IN | 0 ETH | 0.00399932 | ||||
Cast Vote | 13093171 | 1177 days ago | IN | 0 ETH | 0.00377658 | ||||
Cast Vote | 13093083 | 1177 days ago | IN | 0 ETH | 0.00447562 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GovernorAlpha
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-31 */ pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; // Even fish can make waves. contract GovernorAlpha { /// @notice The name of this contract string public constant name = "Uniswap Governor Alpha"; /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed function quorumVotes() public pure returns (uint) { return 40_000_000e18; } // 4% of Uni /// @notice The number of votes required in order for a voter to become a proposer function proposalThreshold() public pure returns (uint) { return 2_500_000e18; } // 0.25% of Uni /// @notice The maximum number of actions that can be included in a proposal function proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions /// @notice The delay before voting on a proposal may take place, once proposed function votingDelay() public pure returns (uint) { return 1; } // 1 block /// @notice The duration of voting on a proposal, in blocks function votingPeriod() public pure returns (uint) { return 40_320; } // ~7 days in blocks (assuming 15s blocks) /// @notice The address of the Uniswap Protocol Timelock TimelockInterface public constant timelock = TimelockInterface(0x1a9C8182C09F50C8318d769245beA52c32BE35BC); /// @notice The address of the Uniswap governance token UniInterface public constant uni = UniInterface(0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984); /// @notice The total number of proposals uint public proposalCount; struct Proposal { /// @notice Unique id for looking up a proposal uint id; /// @notice Creator of the proposal address proposer; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds uint eta; /// @notice the ordered list of target addresses for calls to be made address[] targets; /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made uint[] values; /// @notice The ordered list of function signatures to be called string[] signatures; /// @notice The ordered list of calldata to be passed to each call bytes[] calldatas; /// @notice The block at which voting begins: holders must delegate their votes prior to this block uint startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block uint endBlock; /// @notice Current number of votes in favor of this proposal uint forVotes; /// @notice Current number of votes in opposition to this proposal uint againstVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been executed bool executed; /// @notice Receipts of ballots for the entire set of voters mapping (address => Receipt) receipts; } /// @notice Ballot receipt record for a voter struct Receipt { /// @notice Whether or not a vote has been cast bool hasVoted; /// @notice Whether or not the voter supports the proposal bool support; /// @notice The number of votes the voter had, which were cast uint96 votes; } /// @notice Possible states that a proposal may be in enum ProposalState { Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed } /// @notice The official record of all proposals ever proposed mapping (uint => Proposal) public proposals; /// @notice The latest proposal for each proposer mapping (address => uint) public latestProposalIds; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the ballot struct used by the contract bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)"); /// @notice An event emitted when a new proposal is created event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description); /// @notice An event emitted when a vote has been cast on a proposal event VoteCast(address voter, uint proposalId, bool support, uint votes); /// @notice An event emitted when a proposal has been canceled event ProposalCanceled(uint id); /// @notice An event emitted when a proposal has been queued in the Timelock event ProposalQueued(uint id, uint eta); /// @notice An event emitted when a proposal has been executed in the Timelock event ProposalExecuted(uint id); function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) { require(uni.getPriorVotes(msg.sender, sub256(block.number, 1)) > proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold"); require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch"); require(targets.length != 0, "GovernorAlpha::propose: must provide actions"); require(targets.length <= proposalMaxOperations(), "GovernorAlpha::propose: too many actions"); uint latestProposalId = latestProposalIds[msg.sender]; if (latestProposalId != 0) { ProposalState proposersLatestProposalState = state(latestProposalId); require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"); require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"); } uint startBlock = add256(block.number, votingDelay()); uint endBlock = add256(startBlock, votingPeriod()); proposalCount++; Proposal memory newProposal = Proposal({ id: proposalCount, proposer: msg.sender, eta: 0, targets: targets, values: values, signatures: signatures, calldatas: calldatas, startBlock: startBlock, endBlock: endBlock, forVotes: 0, againstVotes: 0, canceled: false, executed: false }); proposals[newProposal.id] = newProposal; latestProposalIds[newProposal.proposer] = newProposal.id; emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description); return newProposal.id; } function queue(uint proposalId) public { require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded"); Proposal storage proposal = proposals[proposalId]; uint eta = add256(block.timestamp, timelock.delay()); for (uint i = 0; i < proposal.targets.length; i++) { _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta); } proposal.eta = eta; emit ProposalQueued(proposalId, eta); } function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal { require(!timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))), "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"); timelock.queueTransaction(target, value, signature, data, eta); } function execute(uint proposalId) public payable { require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued"); Proposal storage proposal = proposals[proposalId]; proposal.executed = true; for (uint i = 0; i < proposal.targets.length; i++) { timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); } emit ProposalExecuted(proposalId); } function cancel(uint proposalId) public { ProposalState state = state(proposalId); require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal"); Proposal storage proposal = proposals[proposalId]; require(uni.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold"); proposal.canceled = true; for (uint i = 0; i < proposal.targets.length; i++) { timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); } emit ProposalCanceled(proposalId); } function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) { Proposal storage p = proposals[proposalId]; return (p.targets, p.values, p.signatures, p.calldatas); } function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) { return proposals[proposalId].receipts[voter]; } function state(uint proposalId) public view returns (ProposalState) { require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id"); Proposal storage proposal = proposals[proposalId]; if (proposal.canceled) { return ProposalState.Canceled; } else if (block.number <= proposal.startBlock) { return ProposalState.Pending; } else if (block.number <= proposal.endBlock) { return ProposalState.Active; } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) { return ProposalState.Defeated; } else if (proposal.eta == 0) { return ProposalState.Succeeded; } else if (proposal.executed) { return ProposalState.Executed; } else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) { return ProposalState.Expired; } else { return ProposalState.Queued; } } function castVote(uint proposalId, bool support) public { return _castVote(msg.sender, proposalId, support); } function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature"); return _castVote(signatory, proposalId, support); } function __acceptAdmin() public { timelock.acceptAdmin(); } function _castVote(address voter, uint proposalId, bool support) internal { require(state(proposalId) == ProposalState.Active, "GovernorAlpha::_castVote: voting is closed"); Proposal storage proposal = proposals[proposalId]; Receipt storage receipt = proposal.receipts[voter]; require(receipt.hasVoted == false, "GovernorAlpha::_castVote: voter already voted"); uint96 votes = uni.getPriorVotes(voter, proposal.startBlock); if (support) { proposal.forVotes = add256(proposal.forVotes, votes); } else { proposal.againstVotes = add256(proposal.againstVotes, votes); } receipt.hasVoted = true; receipt.support = support; receipt.votes = votes; emit VoteCast(voter, proposalId, support, votes); } function add256(uint256 a, uint256 b) internal pure returns (uint) { uint c = a + b; require(c >= a, "addition overflow"); return c; } function sub256(uint256 a, uint256 b) internal pure returns (uint) { require(b <= a, "subtraction underflow"); return a - b; } function getChainId() internal pure returns (uint) { uint chainId; assembly { chainId := chainid() } return chainId; } } interface TimelockInterface { function delay() external view returns (uint); function GRACE_PERIOD() external view returns (uint); function acceptAdmin() external; function queuedTransactions(bytes32 hash) external view returns (bool); function queueTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external returns (bytes32); function cancelTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external; function executeTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external payable returns (bytes memory); } interface UniInterface { function getPriorVotes(address account, uint blockNumber) external view returns (uint96); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"__acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uni","outputs":[{"internalType":"contract UniInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50613954806100206000396000f3fe6080604052600436106101805760003560e01c80634634c61f116100d6578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103f0578063edc9af951461041d578063fe0d94c11461043257610180565b8063da95691a1461039b578063ddf0b009146103bb578063deaaa7cc146103db57610180565b8063b9a61961116100b0578063b9a619611461034f578063d33219b414610364578063da35c6641461038657610180565b80634634c61f146103055780637bdbe4d014610325578063b58131b01461033a57610180565b806320606b70116101385780633932abb1116101125780633932abb1146102a35780633e4f49e6146102b857806340e58ee5146102e557610180565b806320606b701461024957806324bc1a641461025e578063328dd9821461027357610180565b806306fdde031161016957806306fdde03146101e557806315373e3d1461020757806317977c611461022957610180565b8063013cf08b1461018557806302a251a3146101c3575b600080fd5b34801561019157600080fd5b506101a56101a0366004612669565b610445565b6040516101ba999897969594939291906136bc565b60405180910390f35b3480156101cf57600080fd5b506101d86104ac565b6040516101ba9190613429565b3480156101f157600080fd5b506101fa6104b3565b6040516101ba91906134e5565b34801561021357600080fd5b506102276102223660046126c1565b6104ec565b005b34801561023557600080fd5b506101d86102443660046124e6565b6104fb565b34801561025557600080fd5b506101d861050d565b34801561026a57600080fd5b506101d8610524565b34801561027f57600080fd5b5061029361028e366004612669565b610533565b6040516101ba94939291906133dc565b3480156102af57600080fd5b506101d861080b565b3480156102c457600080fd5b506102d86102d3366004612669565b610810565b6040516101ba91906134d7565b3480156102f157600080fd5b50610227610300366004612669565b6109cb565b34801561031157600080fd5b506102276103203660046126f1565b610cb7565b34801561033157600080fd5b506101d8610e99565b34801561034657600080fd5b506101d8610e9e565b34801561035b57600080fd5b50610227610ead565b34801561037057600080fd5b50610379610f23565b6040516101ba91906134c9565b34801561039257600080fd5b506101d8610f3b565b3480156103a757600080fd5b506101d86103b636600461250c565b610f41565b3480156103c757600080fd5b506102276103d6366004612669565b61144a565b3480156103e757600080fd5b506101d8611739565b3480156103fc57600080fd5b5061041061040b366004612687565b611745565b6040516101ba9190613606565b34801561042957600080fd5b506103796117c6565b610227610440366004612669565b6117de565b60016020819052600091825260409091208054918101546002820154600783015460088401546009850154600a860154600b9096015473ffffffffffffffffffffffffffffffffffffffff9095169593949293919290919060ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104f7338383611a1e565b5050565b60026020526000908152604090205481565b604051610519906132cd565b604051809103902081565b6a211654585005212800000090565b606080606080600060016000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105c257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610597575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561061457602002820191906000526020600020905b815481526020019060010190808311610600575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156107055760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b820191906000526020600020905b8154815290600101906020018083116106d457829003601f168201915b50505050508152602001906001019061063c565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107f55760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b50505050508152602001906001019061072c565b5050505090509450945094509450509193509193565b600190565b600081600054101580156108245750600082115b610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613516565b60405180910390fd5b6000828152600160205260409020600b81015460ff16156108885760029150506109c6565b8060070154431161089d5760009150506109c6565b806008015443116108b25760019150506109c6565b80600a015481600901541115806108d357506108cc610524565b8160090154105b156108e25760039150506109c6565b60028101546108f55760049150506109c6565b600b810154610100900460ff16156109115760079150506109c6565b6109b08160020154731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b15801561097357600080fd5b505afa158015610987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ab9190810190612616565b611ca6565b42106109c05760069150506109c6565b60059150505b919050565b60006109d682610810565b905060078160078111156109e657fe5b1415610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135d6565b6000828152600160205260409020610a34610e9e565b600180830154731f9840a85d5af5bf1d1762f925bdaddc4201f9849163782d6fe19173ffffffffffffffffffffffffffffffffffffffff1690610a78904390611cec565b6040518363ffffffff1660e01b8152600401610a959291906132fe565b60206040518083038186803b158015610aad57600080fd5b505afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae59190810190612759565b6bffffffffffffffffffffffff1610610b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613576565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c7a57731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610ba557fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610bda57fe5b9060005260206000200154856005018581548110610bf457fe5b90600052602060002001866006018681548110610c0d57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c3c95949392919061339b565b600060405180830381600087803b158015610c5657600080fd5b505af1158015610c6a573d6000803e3d6000fd5b505060019092019150610b5a9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610caa9190613429565b60405180910390a1505050565b6000604051610cc5906132cd565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d2c611d2e565b30604051602001610d409493929190613437565b6040516020818303038152906040528051906020012090506000604051610d66906132d8565b604051908190038120610d7f918990899060200161346c565b60405160208183030381529060405280519060200120905060008282604051602001610dac92919061329c565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610de99493929190613494565b6020604051602081039080840390855afa158015610e0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135b6565b610e8e818a8a611a1e565b505050505050505050565b600a90565b6a021165458500521280000090565b731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050565b731a9c8182c09f50c8318d769245bea52c32be35bc81565b60005481565b6000610f4b610e9e565b731f9840a85d5af5bf1d1762f925bdaddc4201f98463782d6fe133610f71436001611cec565b6040518363ffffffff1660e01b8152600401610f8e9291906132e3565b60206040518083038186803b158015610fa657600080fd5b505afa158015610fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fde9190810190612759565b6bffffffffffffffffffffffff1611611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135a6565b84518651148015611035575083518651145b8015611042575082518651145b611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613566565b85516110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613596565b6110b8610e99565b865111156110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613546565b3360009081526002602052604090205480156111a357600061111382610810565b9050600181600781111561112357fe5b141561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135c6565b600081600781111561116957fe5b14156111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613536565b505b60006111b1436109ab61080b565b905060006111c1826109ab6104ac565b60008054600101905590506111d4611ee6565b604051806101a0016040528060005481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060016000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906112de929190611f68565b50608082015180516112fa916004840191602090910190611ff2565b5060a08201518051611316916005840191602090910190612039565b5060c08201518051611332916006840191602090910190612092565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160026000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161143299989796959493929190613614565b60405180910390a15193505050505b95945050505050565b600461145582610810565b600781111561146057fe5b14611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906134f6565b6000600160008381526020019081526020016000209050600061150e42731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561097357600080fd5b905060005b60038301548110156116ff576116f783600301828154811061153157fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff909216918490811061156657fe5b906000526020600020015485600501848154811061158057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b505050505086600601858154811061164057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156116ec5780601f106116c1576101008083540402835291602001916116ec565b820191906000526020600020905b8154815290600101906020018083116116cf57829003601f168201915b505050505086611d32565b600101611513565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610caa9085908490613742565b604051610519906132d8565b61174d6120eb565b50600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b731f9840a85d5af5bf1d1762f925bdaddc4201f98481565b60056117e982610810565b60078111156117f457fe5b1461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613506565b6000818152600160205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156119e257731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16630825f38f8360040183815481106118b457fe5b90600052602060002001548460030184815481106118ce57fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061190357fe5b906000526020600020015486600501868154811061191d57fe5b9060005260206000200187600601878154811061193657fe5b9060005260206000200188600201546040518763ffffffff1660e01b815260040161196595949392919061339b565b6000604051808303818588803b15801561197e57600080fd5b505af1158015611992573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119d99190810190612634565b50600101611869565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611a129190613429565b60405180910390a15050565b6001611a2983610810565b6007811115611a3457fe5b14611a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135e6565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613526565b60078201546040517f782d6fe1000000000000000000000000000000000000000000000000000000008152600091731f9840a85d5af5bf1d1762f925bdaddc4201f9849163782d6fe191611b34918a91906004016132fe565b60206040518083038186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b849190810190612759565b90508315611bb257611ba88360090154826bffffffffffffffffffffffff16611ca6565b6009840155611bd4565b611bce83600a0154826bffffffffffffffffffffffff16611ca6565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c9690889088908890869061330c565b60405180910390a1505050505050565b600082820183811015611ce5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613556565b9392505050565b600082821115611d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135f6565b50900390565b4690565b731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001611d7b959493929190613341565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611dad9190613429565b60206040518083038186803b158015611dc557600080fd5b505afa158015611dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dfd91908101906125f8565b15611e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613586565b6040517f3a66f901000000000000000000000000000000000000000000000000000000008152731a9c8182c09f50c8318d769245bea52c32be35bc90633a66f90190611e8c9088908890889088908890600401613341565b602060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ede9190810190612616565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611fe2579160200282015b82811115611fe257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611f88565b50611fee92915061210b565b5090565b82805482825590600052602060002090810192821561202d579160200282015b8281111561202d578251825591602001919060010190612012565b50611fee929150612147565b828054828255906000526020600020908101928215612086579160200282015b828111156120865782518051612076918491602090910190612161565b5091602001919060010190612059565b50611fee9291506121ce565b8280548282559060005260206000209081019282156120df579160200282015b828111156120df57825180516120cf918491602090910190612161565b50916020019190600101906120b2565b50611fee9291506121f1565b604080516060810182526000808252602082018190529181019190915290565b6104b091905b80821115611fee5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612111565b6104b091905b80821115611fee576000815560010161214d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121a257805160ff191683800117855561202d565b8280016001018555821561202d579182018281111561202d578251825591602001919060010190612012565b6104b091905b80821115611fee5760006121e88282612214565b506001016121d4565b6104b091905b80821115611fee57600061220b8282612214565b506001016121f7565b50805460018160011615610100020316600290046000825580601f1061223a5750612258565b601f0160209004906000526020600020908101906122589190612147565b50565b80356117c0816138d9565b600082601f83011261227757600080fd5b813561228a61228582613777565b613750565b915081818352602084019350602081019050838560208402820111156122af57600080fd5b60005b838110156122db57816122c5888261225b565b84525060209283019291909101906001016122b2565b5050505092915050565b600082601f8301126122f657600080fd5b813561230461228582613777565b81815260209384019390925082018360005b838110156122db578135860161232c888261243b565b8452506020928301929190910190600101612316565b600082601f83011261235357600080fd5b813561236161228582613777565b81815260209384019390925082018360005b838110156122db5781358601612389888261243b565b8452506020928301929190910190600101612373565b600082601f8301126123b057600080fd5b81356123be61228582613777565b915081818352602084019350602081019050838560208402820111156123e357600080fd5b60005b838110156122db57816123f98882612425565b84525060209283019291909101906001016123e6565b80356117c0816138ed565b80516117c0816138ed565b80356117c0816138f6565b80516117c0816138f6565b600082601f83011261244c57600080fd5b813561245a61228582613798565b9150808252602083016020830185838301111561247657600080fd5b61248183828461386f565b50505092915050565b600082601f83011261249b57600080fd5b81516124a961228582613798565b915080825260208301602083018583830111156124c557600080fd5b61248183828461387b565b80356117c0816138ff565b80516117c081613908565b6000602082840312156124f857600080fd5b6000612504848461225b565b949350505050565b600080600080600060a0868803121561252457600080fd5b853567ffffffffffffffff81111561253b57600080fd5b61254788828901612266565b955050602086013567ffffffffffffffff81111561256457600080fd5b6125708882890161239f565b945050604086013567ffffffffffffffff81111561258d57600080fd5b61259988828901612342565b935050606086013567ffffffffffffffff8111156125b657600080fd5b6125c2888289016122e5565b925050608086013567ffffffffffffffff8111156125df57600080fd5b6125eb8882890161243b565b9150509295509295909350565b60006020828403121561260a57600080fd5b6000612504848461241a565b60006020828403121561262857600080fd5b60006125048484612430565b60006020828403121561264657600080fd5b815167ffffffffffffffff81111561265d57600080fd5b6125048482850161248a565b60006020828403121561267b57600080fd5b60006125048484612425565b6000806040838503121561269a57600080fd5b60006126a68585612425565b92505060206126b78582860161225b565b9150509250929050565b600080604083850312156126d457600080fd5b60006126e08585612425565b92505060206126b78582860161240f565b600080600080600060a0868803121561270957600080fd5b60006127158888612425565b95505060206127268882890161240f565b9450506040612737888289016124d0565b935050606061274888828901612425565b92505060806125eb88828901612425565b60006020828403121561276b57600080fd5b600061250484846124db565b600061278383836127b2565b505060200190565b6000611ce58383612954565b6000612783838361293a565b6127ac81613847565b82525050565b6127ac816137fd565b60006127c6826137f0565b6127d081856137f4565b93506127db836137de565b8060005b838110156128095781516127f38882612777565b97506127fe836137de565b9250506001016127df565b509495945050505050565b600061281f826137f0565b61282981856137f4565b93508360208202850161283b856137de565b8060005b858110156128755784840389528151612858858261278b565b9450612863836137de565b60209a909a019992505060010161283f565b5091979650505050505050565b600061288d826137f0565b61289781856137f4565b9350836020820285016128a9856137de565b8060005b8581101561287557848403895281516128c6858261278b565b94506128d1836137de565b60209a909a01999250506001016128ad565b60006128ee826137f0565b6128f881856137f4565b9350612903836137de565b8060005b8381101561280957815161291b8882612797565b9750612926836137de565b925050600101612907565b6127ac81613808565b6127ac816104b0565b6127ac61294f826104b0565b6104b0565b600061295f826137f0565b61296981856137f4565b935061297981856020860161387b565b612982816138a7565b9093019392505050565b6000815460018116600081146129a957600181146129ed57612a2c565b607f60028304166129ba81876137f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612a2c565b600282046129fb81876137f4565b9550612a06856137e4565b60005b82811015612a2557815488820152600190910190602001612a09565b8701945050505b505092915050565b6127ac8161384e565b6127ac81613859565b6000612a536044836137f4565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ad86045836137f4565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612b5d6002836109c6565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612b966029836137f4565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612bf5602d836137f4565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612c546059836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612cd96028836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612d386011836137f4565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612d716043836109c6565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612df66027836109c6565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612e556044836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612eda602f836137f4565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612f396044836137f4565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612fbe602c836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b600061301d603f836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b600061307c602f836137f4565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006130db6058836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006131606036836137f4565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006131bf602a836137f4565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b600061321e6015836137f4565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b8051606083019061325b8482612931565b50602082015161326e6020850182612931565b506040820151610f1d6040850182613293565b6127ac81613830565b6127ac81613864565b6127ac81613836565b60006132a782612b50565b91506132b38285612943565b6020820191506132c38284612943565b5060200192915050565b60006117c082612d64565b60006117c082612de9565b604081016132f182856127a3565b611ce5602083018461293a565b604081016132f182856127b2565b6080810161331a82876127b2565b613327602083018661293a565b6133346040830185612931565b611441606083018461328a565b60a0810161334f82886127b2565b61335c602083018761293a565b818103604083015261336e8186612954565b905081810360608301526133828185612954565b9050613391608083018461293a565b9695505050505050565b60a081016133a982886127b2565b6133b6602083018761293a565b81810360408301526133c8818661298c565b90508181036060830152613382818561298c565b608080825281016133ed81876127bb565b9050818103602083015261340181866128e3565b905081810360408301526134158185612882565b905081810360608301526133918184612814565b602081016117c0828461293a565b60808101613445828761293a565b613452602083018661293a565b61345f604083018561293a565b61144160608301846127b2565b6060810161347a828661293a565b613487602083018561293a565b6125046040830184612931565b608081016134a2828761293a565b6134af6020830186613281565b6134bc604083018561293a565b611441606083018461293a565b602081016117c08284612a34565b602081016117c08284612a3d565b60208082528101611ce58184612954565b602080825281016117c081612a46565b602080825281016117c081612acb565b602080825281016117c081612b89565b602080825281016117c081612be8565b602080825281016117c081612c47565b602080825281016117c081612ccc565b602080825281016117c081612d2b565b602080825281016117c081612e48565b602080825281016117c081612ecd565b602080825281016117c081612f2c565b602080825281016117c081612fb1565b602080825281016117c081613010565b602080825281016117c08161306f565b602080825281016117c0816130ce565b602080825281016117c081613153565b602080825281016117c0816131b2565b602080825281016117c081613211565b606081016117c0828461324a565b6101208101613623828c61293a565b613630602083018b6127a3565b8181036040830152613642818a6127bb565b9050818103606083015261365681896128e3565b9050818103608083015261366a8188612882565b905081810360a083015261367e8187612814565b905061368d60c083018661293a565b61369a60e083018561293a565b8181036101008301526136ad8184612954565b9b9a5050505050505050505050565b61012081016136cb828c61293a565b6136d8602083018b6127b2565b6136e5604083018a61293a565b6136f2606083018961293a565b6136ff608083018861293a565b61370c60a083018761293a565b61371960c083018661293a565b61372660e0830185612931565b613734610100830184612931565b9a9950505050505050505050565b604081016132f1828561293a565b60405181810167ffffffffffffffff8111828210171561376f57600080fd5b604052919050565b600067ffffffffffffffff82111561378e57600080fd5b5060209081020190565b600067ffffffffffffffff8211156137af57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b60006117c082613817565b151590565b806109c6816138cf565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006117c0825b60006117c0826137fd565b60006117c08261380d565b60006117c082613836565b82818337506000910152565b60005b8381101561389657818101518382015260200161387e565b83811115610f1d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061225857fe5b6138e2816137fd565b811461225857600080fd5b6138e281613808565b6138e2816104b0565b6138e281613830565b6138e28161383656fea365627a7a723158200642f224cfa601d7f70b2f6dc6c59c40170b8d9c713b6c7b0341d6dbdacf3d466c6578706572696d656e74616cf564736f6c63430005110040
Deployed Bytecode
0x6080604052600436106101805760003560e01c80634634c61f116100d6578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103f0578063edc9af951461041d578063fe0d94c11461043257610180565b8063da95691a1461039b578063ddf0b009146103bb578063deaaa7cc146103db57610180565b8063b9a61961116100b0578063b9a619611461034f578063d33219b414610364578063da35c6641461038657610180565b80634634c61f146103055780637bdbe4d014610325578063b58131b01461033a57610180565b806320606b70116101385780633932abb1116101125780633932abb1146102a35780633e4f49e6146102b857806340e58ee5146102e557610180565b806320606b701461024957806324bc1a641461025e578063328dd9821461027357610180565b806306fdde031161016957806306fdde03146101e557806315373e3d1461020757806317977c611461022957610180565b8063013cf08b1461018557806302a251a3146101c3575b600080fd5b34801561019157600080fd5b506101a56101a0366004612669565b610445565b6040516101ba999897969594939291906136bc565b60405180910390f35b3480156101cf57600080fd5b506101d86104ac565b6040516101ba9190613429565b3480156101f157600080fd5b506101fa6104b3565b6040516101ba91906134e5565b34801561021357600080fd5b506102276102223660046126c1565b6104ec565b005b34801561023557600080fd5b506101d86102443660046124e6565b6104fb565b34801561025557600080fd5b506101d861050d565b34801561026a57600080fd5b506101d8610524565b34801561027f57600080fd5b5061029361028e366004612669565b610533565b6040516101ba94939291906133dc565b3480156102af57600080fd5b506101d861080b565b3480156102c457600080fd5b506102d86102d3366004612669565b610810565b6040516101ba91906134d7565b3480156102f157600080fd5b50610227610300366004612669565b6109cb565b34801561031157600080fd5b506102276103203660046126f1565b610cb7565b34801561033157600080fd5b506101d8610e99565b34801561034657600080fd5b506101d8610e9e565b34801561035b57600080fd5b50610227610ead565b34801561037057600080fd5b50610379610f23565b6040516101ba91906134c9565b34801561039257600080fd5b506101d8610f3b565b3480156103a757600080fd5b506101d86103b636600461250c565b610f41565b3480156103c757600080fd5b506102276103d6366004612669565b61144a565b3480156103e757600080fd5b506101d8611739565b3480156103fc57600080fd5b5061041061040b366004612687565b611745565b6040516101ba9190613606565b34801561042957600080fd5b506103796117c6565b610227610440366004612669565b6117de565b60016020819052600091825260409091208054918101546002820154600783015460088401546009850154600a860154600b9096015473ffffffffffffffffffffffffffffffffffffffff9095169593949293919290919060ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104f7338383611a1e565b5050565b60026020526000908152604090205481565b604051610519906132cd565b604051809103902081565b6a211654585005212800000090565b606080606080600060016000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105c257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610597575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561061457602002820191906000526020600020905b815481526020019060010190808311610600575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156107055760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b820191906000526020600020905b8154815290600101906020018083116106d457829003601f168201915b50505050508152602001906001019061063c565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107f55760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b50505050508152602001906001019061072c565b5050505090509450945094509450509193509193565b600190565b600081600054101580156108245750600082115b610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613516565b60405180910390fd5b6000828152600160205260409020600b81015460ff16156108885760029150506109c6565b8060070154431161089d5760009150506109c6565b806008015443116108b25760019150506109c6565b80600a015481600901541115806108d357506108cc610524565b8160090154105b156108e25760039150506109c6565b60028101546108f55760049150506109c6565b600b810154610100900460ff16156109115760079150506109c6565b6109b08160020154731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b15801561097357600080fd5b505afa158015610987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ab9190810190612616565b611ca6565b42106109c05760069150506109c6565b60059150505b919050565b60006109d682610810565b905060078160078111156109e657fe5b1415610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135d6565b6000828152600160205260409020610a34610e9e565b600180830154731f9840a85d5af5bf1d1762f925bdaddc4201f9849163782d6fe19173ffffffffffffffffffffffffffffffffffffffff1690610a78904390611cec565b6040518363ffffffff1660e01b8152600401610a959291906132fe565b60206040518083038186803b158015610aad57600080fd5b505afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae59190810190612759565b6bffffffffffffffffffffffff1610610b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613576565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c7a57731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610ba557fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610bda57fe5b9060005260206000200154856005018581548110610bf457fe5b90600052602060002001866006018681548110610c0d57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c3c95949392919061339b565b600060405180830381600087803b158015610c5657600080fd5b505af1158015610c6a573d6000803e3d6000fd5b505060019092019150610b5a9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610caa9190613429565b60405180910390a1505050565b6000604051610cc5906132cd565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d2c611d2e565b30604051602001610d409493929190613437565b6040516020818303038152906040528051906020012090506000604051610d66906132d8565b604051908190038120610d7f918990899060200161346c565b60405160208183030381529060405280519060200120905060008282604051602001610dac92919061329c565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610de99493929190613494565b6020604051602081039080840390855afa158015610e0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135b6565b610e8e818a8a611a1e565b505050505050505050565b600a90565b6a021165458500521280000090565b731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050565b731a9c8182c09f50c8318d769245bea52c32be35bc81565b60005481565b6000610f4b610e9e565b731f9840a85d5af5bf1d1762f925bdaddc4201f98463782d6fe133610f71436001611cec565b6040518363ffffffff1660e01b8152600401610f8e9291906132e3565b60206040518083038186803b158015610fa657600080fd5b505afa158015610fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fde9190810190612759565b6bffffffffffffffffffffffff1611611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135a6565b84518651148015611035575083518651145b8015611042575082518651145b611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613566565b85516110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613596565b6110b8610e99565b865111156110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613546565b3360009081526002602052604090205480156111a357600061111382610810565b9050600181600781111561112357fe5b141561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135c6565b600081600781111561116957fe5b14156111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613536565b505b60006111b1436109ab61080b565b905060006111c1826109ab6104ac565b60008054600101905590506111d4611ee6565b604051806101a0016040528060005481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060016000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906112de929190611f68565b50608082015180516112fa916004840191602090910190611ff2565b5060a08201518051611316916005840191602090910190612039565b5060c08201518051611332916006840191602090910190612092565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160026000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161143299989796959493929190613614565b60405180910390a15193505050505b95945050505050565b600461145582610810565b600781111561146057fe5b14611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906134f6565b6000600160008381526020019081526020016000209050600061150e42731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561097357600080fd5b905060005b60038301548110156116ff576116f783600301828154811061153157fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff909216918490811061156657fe5b906000526020600020015485600501848154811061158057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b505050505086600601858154811061164057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156116ec5780601f106116c1576101008083540402835291602001916116ec565b820191906000526020600020905b8154815290600101906020018083116116cf57829003601f168201915b505050505086611d32565b600101611513565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610caa9085908490613742565b604051610519906132d8565b61174d6120eb565b50600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b731f9840a85d5af5bf1d1762f925bdaddc4201f98481565b60056117e982610810565b60078111156117f457fe5b1461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613506565b6000818152600160205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156119e257731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff16630825f38f8360040183815481106118b457fe5b90600052602060002001548460030184815481106118ce57fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061190357fe5b906000526020600020015486600501868154811061191d57fe5b9060005260206000200187600601878154811061193657fe5b9060005260206000200188600201546040518763ffffffff1660e01b815260040161196595949392919061339b565b6000604051808303818588803b15801561197e57600080fd5b505af1158015611992573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119d99190810190612634565b50600101611869565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611a129190613429565b60405180910390a15050565b6001611a2983610810565b6007811115611a3457fe5b14611a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135e6565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613526565b60078201546040517f782d6fe1000000000000000000000000000000000000000000000000000000008152600091731f9840a85d5af5bf1d1762f925bdaddc4201f9849163782d6fe191611b34918a91906004016132fe565b60206040518083038186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b849190810190612759565b90508315611bb257611ba88360090154826bffffffffffffffffffffffff16611ca6565b6009840155611bd4565b611bce83600a0154826bffffffffffffffffffffffff16611ca6565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c9690889088908890869061330c565b60405180910390a1505050505050565b600082820183811015611ce5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613556565b9392505050565b600082821115611d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906135f6565b50900390565b4690565b731a9c8182c09f50c8318d769245bea52c32be35bc73ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001611d7b959493929190613341565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611dad9190613429565b60206040518083038186803b158015611dc557600080fd5b505afa158015611dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dfd91908101906125f8565b15611e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613586565b6040517f3a66f901000000000000000000000000000000000000000000000000000000008152731a9c8182c09f50c8318d769245bea52c32be35bc90633a66f90190611e8c9088908890889088908890600401613341565b602060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ede9190810190612616565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611fe2579160200282015b82811115611fe257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611f88565b50611fee92915061210b565b5090565b82805482825590600052602060002090810192821561202d579160200282015b8281111561202d578251825591602001919060010190612012565b50611fee929150612147565b828054828255906000526020600020908101928215612086579160200282015b828111156120865782518051612076918491602090910190612161565b5091602001919060010190612059565b50611fee9291506121ce565b8280548282559060005260206000209081019282156120df579160200282015b828111156120df57825180516120cf918491602090910190612161565b50916020019190600101906120b2565b50611fee9291506121f1565b604080516060810182526000808252602082018190529181019190915290565b6104b091905b80821115611fee5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612111565b6104b091905b80821115611fee576000815560010161214d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121a257805160ff191683800117855561202d565b8280016001018555821561202d579182018281111561202d578251825591602001919060010190612012565b6104b091905b80821115611fee5760006121e88282612214565b506001016121d4565b6104b091905b80821115611fee57600061220b8282612214565b506001016121f7565b50805460018160011615610100020316600290046000825580601f1061223a5750612258565b601f0160209004906000526020600020908101906122589190612147565b50565b80356117c0816138d9565b600082601f83011261227757600080fd5b813561228a61228582613777565b613750565b915081818352602084019350602081019050838560208402820111156122af57600080fd5b60005b838110156122db57816122c5888261225b565b84525060209283019291909101906001016122b2565b5050505092915050565b600082601f8301126122f657600080fd5b813561230461228582613777565b81815260209384019390925082018360005b838110156122db578135860161232c888261243b565b8452506020928301929190910190600101612316565b600082601f83011261235357600080fd5b813561236161228582613777565b81815260209384019390925082018360005b838110156122db5781358601612389888261243b565b8452506020928301929190910190600101612373565b600082601f8301126123b057600080fd5b81356123be61228582613777565b915081818352602084019350602081019050838560208402820111156123e357600080fd5b60005b838110156122db57816123f98882612425565b84525060209283019291909101906001016123e6565b80356117c0816138ed565b80516117c0816138ed565b80356117c0816138f6565b80516117c0816138f6565b600082601f83011261244c57600080fd5b813561245a61228582613798565b9150808252602083016020830185838301111561247657600080fd5b61248183828461386f565b50505092915050565b600082601f83011261249b57600080fd5b81516124a961228582613798565b915080825260208301602083018583830111156124c557600080fd5b61248183828461387b565b80356117c0816138ff565b80516117c081613908565b6000602082840312156124f857600080fd5b6000612504848461225b565b949350505050565b600080600080600060a0868803121561252457600080fd5b853567ffffffffffffffff81111561253b57600080fd5b61254788828901612266565b955050602086013567ffffffffffffffff81111561256457600080fd5b6125708882890161239f565b945050604086013567ffffffffffffffff81111561258d57600080fd5b61259988828901612342565b935050606086013567ffffffffffffffff8111156125b657600080fd5b6125c2888289016122e5565b925050608086013567ffffffffffffffff8111156125df57600080fd5b6125eb8882890161243b565b9150509295509295909350565b60006020828403121561260a57600080fd5b6000612504848461241a565b60006020828403121561262857600080fd5b60006125048484612430565b60006020828403121561264657600080fd5b815167ffffffffffffffff81111561265d57600080fd5b6125048482850161248a565b60006020828403121561267b57600080fd5b60006125048484612425565b6000806040838503121561269a57600080fd5b60006126a68585612425565b92505060206126b78582860161225b565b9150509250929050565b600080604083850312156126d457600080fd5b60006126e08585612425565b92505060206126b78582860161240f565b600080600080600060a0868803121561270957600080fd5b60006127158888612425565b95505060206127268882890161240f565b9450506040612737888289016124d0565b935050606061274888828901612425565b92505060806125eb88828901612425565b60006020828403121561276b57600080fd5b600061250484846124db565b600061278383836127b2565b505060200190565b6000611ce58383612954565b6000612783838361293a565b6127ac81613847565b82525050565b6127ac816137fd565b60006127c6826137f0565b6127d081856137f4565b93506127db836137de565b8060005b838110156128095781516127f38882612777565b97506127fe836137de565b9250506001016127df565b509495945050505050565b600061281f826137f0565b61282981856137f4565b93508360208202850161283b856137de565b8060005b858110156128755784840389528151612858858261278b565b9450612863836137de565b60209a909a019992505060010161283f565b5091979650505050505050565b600061288d826137f0565b61289781856137f4565b9350836020820285016128a9856137de565b8060005b8581101561287557848403895281516128c6858261278b565b94506128d1836137de565b60209a909a01999250506001016128ad565b60006128ee826137f0565b6128f881856137f4565b9350612903836137de565b8060005b8381101561280957815161291b8882612797565b9750612926836137de565b925050600101612907565b6127ac81613808565b6127ac816104b0565b6127ac61294f826104b0565b6104b0565b600061295f826137f0565b61296981856137f4565b935061297981856020860161387b565b612982816138a7565b9093019392505050565b6000815460018116600081146129a957600181146129ed57612a2c565b607f60028304166129ba81876137f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612a2c565b600282046129fb81876137f4565b9550612a06856137e4565b60005b82811015612a2557815488820152600190910190602001612a09565b8701945050505b505092915050565b6127ac8161384e565b6127ac81613859565b6000612a536044836137f4565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ad86045836137f4565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612b5d6002836109c6565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612b966029836137f4565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612bf5602d836137f4565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612c546059836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612cd96028836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612d386011836137f4565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612d716043836109c6565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612df66027836109c6565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612e556044836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612eda602f836137f4565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612f396044836137f4565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612fbe602c836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b600061301d603f836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b600061307c602f836137f4565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006130db6058836137f4565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006131606036836137f4565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006131bf602a836137f4565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b600061321e6015836137f4565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b8051606083019061325b8482612931565b50602082015161326e6020850182612931565b506040820151610f1d6040850182613293565b6127ac81613830565b6127ac81613864565b6127ac81613836565b60006132a782612b50565b91506132b38285612943565b6020820191506132c38284612943565b5060200192915050565b60006117c082612d64565b60006117c082612de9565b604081016132f182856127a3565b611ce5602083018461293a565b604081016132f182856127b2565b6080810161331a82876127b2565b613327602083018661293a565b6133346040830185612931565b611441606083018461328a565b60a0810161334f82886127b2565b61335c602083018761293a565b818103604083015261336e8186612954565b905081810360608301526133828185612954565b9050613391608083018461293a565b9695505050505050565b60a081016133a982886127b2565b6133b6602083018761293a565b81810360408301526133c8818661298c565b90508181036060830152613382818561298c565b608080825281016133ed81876127bb565b9050818103602083015261340181866128e3565b905081810360408301526134158185612882565b905081810360608301526133918184612814565b602081016117c0828461293a565b60808101613445828761293a565b613452602083018661293a565b61345f604083018561293a565b61144160608301846127b2565b6060810161347a828661293a565b613487602083018561293a565b6125046040830184612931565b608081016134a2828761293a565b6134af6020830186613281565b6134bc604083018561293a565b611441606083018461293a565b602081016117c08284612a34565b602081016117c08284612a3d565b60208082528101611ce58184612954565b602080825281016117c081612a46565b602080825281016117c081612acb565b602080825281016117c081612b89565b602080825281016117c081612be8565b602080825281016117c081612c47565b602080825281016117c081612ccc565b602080825281016117c081612d2b565b602080825281016117c081612e48565b602080825281016117c081612ecd565b602080825281016117c081612f2c565b602080825281016117c081612fb1565b602080825281016117c081613010565b602080825281016117c08161306f565b602080825281016117c0816130ce565b602080825281016117c081613153565b602080825281016117c0816131b2565b602080825281016117c081613211565b606081016117c0828461324a565b6101208101613623828c61293a565b613630602083018b6127a3565b8181036040830152613642818a6127bb565b9050818103606083015261365681896128e3565b9050818103608083015261366a8188612882565b905081810360a083015261367e8187612814565b905061368d60c083018661293a565b61369a60e083018561293a565b8181036101008301526136ad8184612954565b9b9a5050505050505050505050565b61012081016136cb828c61293a565b6136d8602083018b6127b2565b6136e5604083018a61293a565b6136f2606083018961293a565b6136ff608083018861293a565b61370c60a083018761293a565b61371960c083018661293a565b61372660e0830185612931565b613734610100830184612931565b9a9950505050505050505050565b604081016132f1828561293a565b60405181810167ffffffffffffffff8111828210171561376f57600080fd5b604052919050565b600067ffffffffffffffff82111561378e57600080fd5b5060209081020190565b600067ffffffffffffffff8211156137af57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b60006117c082613817565b151590565b806109c6816138cf565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006117c0825b60006117c0826137fd565b60006117c08261380d565b60006117c082613836565b82818337506000910152565b60005b8381101561389657818101518382015260200161387e565b83811115610f1d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061225857fe5b6138e2816137fd565b811461225857600080fd5b6138e281613808565b6138e2816104b0565b6138e281613830565b6138e28161383656fea365627a7a723158200642f224cfa601d7f70b2f6dc6c59c40170b8d9c713b6c7b0341d6dbdacf3d466c6578706572696d656e74616cf564736f6c63430005110040
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.