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
Multi Chain
Multichain Addresses
3 addresses found via
Latest 25 from a total of 54 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 18259742 | 58 days 20 hrs ago | IN | 0 ETH | 0.00032247 | ||||
Transfer | 18259742 | 58 days 20 hrs ago | IN | 0 ETH | 0.00050253 | ||||
Transfer | 17577306 | 154 days 11 hrs ago | IN | 0 ETH | 0.00157575 | ||||
Transfer | 17520035 | 162 days 12 hrs ago | IN | 0 ETH | 0.00106275 | ||||
Transfer | 17519936 | 162 days 13 hrs ago | IN | 0 ETH | 0.00106239 | ||||
Transfer | 17442026 | 173 days 12 hrs ago | IN | 0 ETH | 0.00157575 | ||||
Transfer | 17399558 | 179 days 11 hrs ago | IN | 0 ETH | 0.00157575 | ||||
Transfer | 17398803 | 179 days 14 hrs ago | IN | 0 ETH | 0.00157575 | ||||
Transfer | 17224277 | 204 days 5 hrs ago | IN | 0 ETH | 0.00536932 | ||||
Transfer | 16755473 | 270 days 8 hrs ago | IN | 0 ETH | 0.00310759 | ||||
Transfer | 16748533 | 271 days 8 hrs ago | IN | 0 ETH | 0.00176207 | ||||
Transfer | 15617309 | 429 days 10 hrs ago | IN | 0 ETH | 0.00106275 | ||||
Transfer | 15617231 | 429 days 10 hrs ago | IN | 0 ETH | 0.00106239 | ||||
Transfer | 15574644 | 435 days 10 hrs ago | IN | 0 ETH | 0.00106275 | ||||
Transfer | 15574565 | 435 days 10 hrs ago | IN | 0 ETH | 0.00106239 | ||||
Transfer | 15567250 | 436 days 10 hrs ago | IN | 0 ETH | 0.00106275 | ||||
Transfer | 15566860 | 436 days 12 hrs ago | IN | 0 ETH | 0.00157539 | ||||
Transfer | 15532285 | 441 days 12 hrs ago | IN | 0 ETH | 0.00157575 | ||||
Transfer | 15532117 | 441 days 13 hrs ago | IN | 0 ETH | 0.00157539 | ||||
Transfer | 15211779 | 492 days 9 hrs ago | IN | 0 ETH | 0.00157539 | ||||
Transfer | 14721891 | 572 days 16 hrs ago | IN | 0 ETH | 0.00137704 | ||||
Transfer | 14721891 | 572 days 16 hrs ago | IN | 0 ETH | 0.00137758 | ||||
Transfer | 14721891 | 572 days 16 hrs ago | IN | 0 ETH | 0.00214708 | ||||
Transfer | 14442470 | 616 days 10 hrs ago | IN | 0 ETH | 0.00089875 | ||||
Claim | 14442422 | 616 days 10 hrs ago | IN | 0 ETH | 0.00353591 |
Latest 1 internal transaction
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
13390706 | 780 days 10 hrs ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
TeleportToken
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-10 */ pragma solidity ^0.8.6; /* * SPDX-License-Identifier: MIT */ pragma experimental ABIEncoderV2; // import "hardhat/console.sol"; contract Verify { function recoverSigner(bytes32 message, bytes memory sig) public pure returns (address) { uint8 v; bytes32 r; bytes32 s; (v, r, s) = splitSignature(sig); if (v != 27 && v != 28) { return (address(0)); } else { // solium-disable-next-line arg-overflow return ecrecover(message, v, r, s); } } function splitSignature(bytes memory sig) public pure returns (uint8, bytes32, bytes32) { require(sig.length == 65); bytes32 r; bytes32 s; uint8 v; assembly { // first 32 bytes, after the length prefix r := mload(add(sig, 32)) // second 32 bytes s := mload(add(sig, 64)) // final byte (first byte of the next 32 bytes) v := byte(0, mload(add(sig, 96))) } if (v < 27) v += 27; return (v, r, s); } } library Endian { /* https://ethereum.stackexchange.com/questions/83626/how-to-reverse-byte-order-in-uint256-or-bytes32 */ function reverse64(uint64 input) internal pure returns (uint64 v) { v = input; // swap bytes v = ((v & 0xFF00FF00FF00FF00) >> 8) | ((v & 0x00FF00FF00FF00FF) << 8); // swap 2-byte long pairs v = ((v & 0xFFFF0000FFFF0000) >> 16) | ((v & 0x0000FFFF0000FFFF) << 16); // swap 4-byte long pairs v = (v >> 32) | (v << 32); } function reverse32(uint32 input) internal pure returns (uint32 v) { v = input; // swap bytes v = ((v & 0xFF00FF00) >> 8) | ((v & 0x00FF00FF) << 8); // swap 2-byte long pairs v = (v >> 16) | (v << 16); } function reverse16(uint16 input) internal pure returns (uint16 v) { v = input; // swap bytes v = (v >> 8) | (v << 8); } } // ---------------------------------------------------------------------------- // Safe maths // ---------------------------------------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- abstract contract ERC20Interface { function totalSupply() virtual public view returns (uint); function balanceOf(address tokenOwner) virtual public view returns (uint balance); function allowance(address tokenOwner, address spender) virtual public view returns (uint remaining); function transfer(address to, uint tokens) virtual public returns (bool success); function approve(address spender, uint tokens) virtual public returns (bool success); function transferFrom(address from, address to, uint tokens) virtual public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // // Borrowed from MiniMeToken // ---------------------------------------------------------------------------- abstract contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) virtual public; } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract Oracled is Owned { mapping(address => bool) public oracles; address[] public oraclesArr; modifier onlyOracle { require(oracles[msg.sender] == true, "Account is not a registered oracle"); _; } function regOracle(address _newOracle) public onlyOwner { require(!oracles[_newOracle], "Oracle is already registered"); oraclesArr.push(_newOracle); oracles[_newOracle] = true; } function unregOracle(address _remOracle) public onlyOwner { require(oracles[_remOracle] == true, "Oracle is not registered"); delete oracles[_remOracle]; } } // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and an // initial fixed supply, added teleport method // ---------------------------------------------------------------------------- contract TeleportToken is ERC20Interface, Owned, Oracled, Verify { using SafeMath for uint; string public symbol; string public name; uint8 public decimals; uint public _totalSupply; uint8 public threshold; uint8 public thisChainId; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; mapping(uint64 => mapping(address => bool)) signed; mapping(uint64 => bool) public claimed; event Teleport(address indexed from, string to, uint tokens, uint chainId); event Claimed(uint64 id, address to, uint tokens); struct TeleportData { uint64 id; uint32 ts; uint64 fromAddr; uint64 quantity; uint64 symbolRaw; uint8 chainId; address toAddress; } // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor(string memory _symbol, string memory _name, uint8 _decimals, uint __totalSupply, uint8 _threshold, uint8 _thisChainId) { symbol = _symbol; name = _name; decimals = _decimals; _totalSupply = __totalSupply * 10**uint(_decimals); balances[address(0)] = _totalSupply; threshold = _threshold; thisChainId = _thisChainId; } // ------------------------------------------------------------------------ // Total supply // ------------------------------------------------------------------------ function totalSupply() override public view returns (uint) { return _totalSupply - balances[address(0)]; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) override public view returns (uint balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint tokens) override public returns (bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender, to, tokens); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // recommends that there are no checks for the approval double-spend attack // as this should be implemented in user interfaces // ------------------------------------------------------------------------ function approve(address spender, uint tokens) override public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint tokens) override public returns (bool success) { balances[from] = balances[from].sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(from, to, tokens); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) override public view returns (uint remaining) { return allowed[tokenOwner][spender]; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account. The `spender` contract function // `receiveApproval(...)` is then executed // ------------------------------------------------------------------------ function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data); return true; } // ------------------------------------------------------------------------ // Moves tokens to the inaccessible account and then sends event for the oracles // to monitor and issue on other chain // to : EOS address // tokens : number of tokens in satoshis // chainId : The chain id that they will be sent to // ------------------------------------------------------------------------ function teleport(string memory to, uint tokens, uint chainid) public returns (bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[address(0)] = balances[address(0)].add(tokens); emit Transfer(msg.sender, address(0), tokens); emit Teleport(msg.sender, to, tokens, chainid); return true; } // ------------------------------------------------------------------------ // Claim tokens sent using signatures supplied to the other chain // ------------------------------------------------------------------------ function stringToBytes32(string memory source) public pure returns (bytes32 result) { bytes memory tempEmptyStringTest = bytes(source); if (tempEmptyStringTest.length == 0) { return 0x0; } assembly { result := mload(add(source, 32)) } } function verifySigData(bytes memory sigData) private returns (TeleportData memory) { TeleportData memory td; uint64 id; uint32 ts; uint64 fromAddr; uint64 quantity; uint64 symbolRaw; uint8 chainId; address toAddress; uint64 requiredSymbolRaw; assembly { id := mload(add(add(sigData, 0x8), 0)) ts := mload(add(add(sigData, 0x4), 8)) fromAddr := mload(add(add(sigData, 0x8), 12)) quantity := mload(add(add(sigData, 0x8), 20)) symbolRaw := mload(add(add(sigData, 0x8), 29)) chainId := mload(add(add(sigData, 0x1), 36)) toAddress := mload(add(add(sigData, 0x14), 37)) } td.id = Endian.reverse64(id); td.ts = Endian.reverse32(ts); td.fromAddr = Endian.reverse64(fromAddr); td.quantity = Endian.reverse64(quantity); td.symbolRaw = Endian.reverse64(symbolRaw); td.chainId = chainId; td.toAddress = toAddress; requiredSymbolRaw = uint64(bytes8(stringToBytes32(TeleportToken.symbol))); require(requiredSymbolRaw == symbolRaw-td.chainId, "Wrong symbol"); require(thisChainId == td.chainId, "Invalid Chain ID"); require(block.timestamp < SafeMath.add(td.ts, (60 * 60 * 24 * 30)), "Teleport has expired"); require(!claimed[td.id], "Already Claimed"); claimed[td.id] = true; return td; } function claim(bytes memory sigData, bytes[] calldata signatures) public returns (address toAddress) { TeleportData memory td = verifySigData(sigData); // verify signatures require(sigData.length == 69, "Signature data is the wrong size"); require(signatures.length <= 10, "Maximum of 10 signatures can be provided"); bytes32 message = keccak256(sigData); uint8 numberSigs = 0; for (uint8 i = 0; i < signatures.length; i++){ address potential = Verify.recoverSigner(message, signatures[i]); // console.log(potential); // console.log(oracles[potential]); // console.log(!signed[td.id][potential]); // Check that they are an oracle and they haven't signed twice if (oracles[potential] && !signed[td.id][potential]){ signed[td.id][potential] = true; numberSigs++; if (numberSigs >= threshold){ break; } } } require(numberSigs >= threshold, "Not enough valid signatures provided"); balances[address(0)] = balances[address(0)].sub(td.quantity); balances[td.toAddress] = balances[td.toAddress].add(td.quantity); emit Claimed(td.id, td.toAddress, td.quantity); emit Transfer(address(0), td.toAddress, td.quantity); return td.toAddress; } function updateThreshold(uint8 newThreshold) public onlyOwner returns (bool success) { if (newThreshold > 0){ require(newThreshold <= 10, "Threshold has maximum of 10"); threshold = newThreshold; return true; } return false; } function updateChainId(uint8 newChainId) public onlyOwner returns (bool success) { if (newChainId > 0){ require(newChainId <= 100, "ChainID is too big"); thisChainId = newChainId; return true; } return false; } // ------------------------------------------------------------------------ // Don't accept ETH // ------------------------------------------------------------------------ receive () external payable { revert(); } // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"__totalSupply","type":"uint256"},{"internalType":"uint8","name":"_threshold","type":"uint8"},{"internalType":"uint8","name":"_thisChainId","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"id","type":"uint64"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"string","name":"to","type":"string"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"Teleport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"sigData","type":"bytes"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"claim","outputs":[{"internalType":"address","name":"toAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oracles","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"oraclesArr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"message","type":"bytes32"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"recoverSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOracle","type":"address"}],"name":"regOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"splitSignature","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"source","type":"string"}],"name":"stringToBytes32","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"chainid","type":"uint256"}],"name":"teleport","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"thisChainId","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_remOracle","type":"address"}],"name":"unregOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newChainId","type":"uint8"}],"name":"updateChainId","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newThreshold","type":"uint8"}],"name":"updateThreshold","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162004227380380620042278339818101604052810190620000379190620002cd565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600490805190602001906200008f92919062000171565b508460059080519060200190620000a892919062000171565b5083600660006101000a81548160ff021916908360ff1602179055508360ff16600a620000d6919062000461565b83620000e391906200059e565b600781905550600754600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff160217905550505050505050620007ab565b8280546200017f906200064c565b90600052602060002090601f016020900481019282620001a35760008555620001ef565b82601f10620001be57805160ff1916838001178555620001ef565b82800160010185558215620001ef579182015b82811115620001ee578251825591602001919060010190620001d1565b5b509050620001fe919062000202565b5090565b5b808211156200021d57600081600090555060010162000203565b5090565b6000620002386200023284620003d0565b620003a7565b9050828152602081018484840111156200025757620002566200074a565b5b6200026484828562000616565b509392505050565b600082601f83011262000284576200028362000745565b5b81516200029684826020860162000221565b91505092915050565b600081519050620002b08162000777565b92915050565b600081519050620002c78162000791565b92915050565b60008060008060008060c08789031215620002ed57620002ec62000754565b5b600087015167ffffffffffffffff8111156200030e576200030d6200074f565b5b6200031c89828a016200026c565b965050602087015167ffffffffffffffff81111562000340576200033f6200074f565b5b6200034e89828a016200026c565b95505060406200036189828a01620002b6565b94505060606200037489828a016200029f565b93505060806200038789828a01620002b6565b92505060a06200039a89828a01620002b6565b9150509295509295509295565b6000620003b3620003c6565b9050620003c1828262000682565b919050565b6000604051905090565b600067ffffffffffffffff821115620003ee57620003ed62000716565b5b620003f98262000759565b9050602081019050919050565b6000808291508390505b6001851115620004585780860481111562000430576200042f620006b8565b5b6001851615620004405780820291505b808102905062000450856200076a565b945062000410565b94509492505050565b60006200046e82620005ff565b91506200047b83620005ff565b9250620004aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004b2565b905092915050565b600082620004c4576001905062000597565b81620004d4576000905062000597565b8160018114620004ed5760028114620004f8576200052e565b600191505062000597565b60ff8411156200050d576200050c620006b8565b5b8360020a915084821115620005275762000526620006b8565b5b5062000597565b5060208310610133831016604e8410600b8410161715620005685782820a905083811115620005625762000561620006b8565b5b62000597565b62000577848484600162000406565b92509050818404811115620005915762000590620006b8565b5b81810290505b9392505050565b6000620005ab82620005ff565b9150620005b883620005ff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005f457620005f3620006b8565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60005b838110156200063657808201518184015260208101905062000619565b8381111562000646576000848401525b50505050565b600060028204905060018216806200066557607f821691505b602082108114156200067c576200067b620006e7565b5b50919050565b6200068d8262000759565b810181811067ffffffffffffffff82111715620006af57620006ae62000716565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6200078281620005ff565b81146200078e57600080fd5b50565b6200079c8162000609565b8114620007a857600080fd5b50565b613a6c80620007bb6000396000f3fe6080604052600436106101d15760003560e01c806395d89b41116100f7578063cae9ca5111610095578063dd62ed3e11610064578063dd62ed3e14610736578063e3d29c5d14610773578063f2fde38b1461079e578063f3df5b69146107c7576101db565b8063cae9ca5114610654578063cfb5192814610691578063d4ee1d90146106ce578063dc39d06d146106f9576101db565b80639ea8a71a116100d15780639ea8a71a1461055e578063a7bb58031461059b578063a9059cbb146105da578063addd509914610617576101db565b806395d89b41146104b957806397aba7f9146104e45780639e8da54314610521576101db565b8063487e83071161016f5780637739acc71161013e5780637739acc71461041157806379ba50971461044e578063825540c7146104655780638da5cb5b1461048e576101db565b8063487e8307146103315780636426d53d1461036e57806370a08231146103ab578063769c8d90146103e8576101db565b806323b872dd116101ab57806323b872dd14610273578063313ce567146102b05780633eaaf86b146102db57806342cde4e814610306576101db565b806306fdde03146101e0578063095ea7b31461020b57806318160ddd14610248576101db565b366101db57600080fd5b600080fd5b3480156101ec57600080fd5b506101f5610804565b60405161020291906130b9565b60405180910390f35b34801561021757600080fd5b50610232600480360381019061022d9190612a16565b610892565b60405161023f919061303e565b60405180910390f35b34801561025457600080fd5b5061025d610984565b60405161026a9190613279565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906129c3565b6109d8565b6040516102a7919061303e565b60405180910390f35b3480156102bc57600080fd5b506102c5610c83565b6040516102d291906132e6565b60405180910390f35b3480156102e757600080fd5b506102f0610c96565b6040516102fd9190613279565b60405180910390f35b34801561031257600080fd5b5061031b610c9c565b60405161032891906132e6565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612ccb565b610caf565b6040516103659190612fae565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612b97565b610cee565b6040516103a29190612fae565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612956565b611221565b6040516103df9190613279565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612956565b61126a565b005b34801561041d57600080fd5b5061043860048036038101906104339190612d25565b6113a7565b604051610445919061303e565b60405180910390f35b34801561045a57600080fd5b50610463611483565b005b34801561047157600080fd5b5061048c60048036038101906104879190612956565b61161f565b005b34801561049a57600080fd5b506104a36117c2565b6040516104b09190612fae565b60405180910390f35b3480156104c557600080fd5b506104ce6117e6565b6040516104db91906130b9565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190612af2565b611874565b6040516105189190612fae565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190612cf8565b611913565b604051610555919061303e565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612c5c565b611933565b604051610592919061303e565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190612b4e565b611b22565b6040516105d193929190613301565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612a16565b611b81565b60405161060e919061303e565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612956565b611d1c565b60405161064b919061303e565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190612a56565b611d3c565b604051610688919061303e565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b39190612c13565b611ea0565b6040516106c59190613059565b60405180910390f35b3480156106da57600080fd5b506106e3611eca565b6040516106f09190612fae565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190612a16565b611ef0565b60405161072d919061303e565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190612983565b612000565b60405161076a9190613279565b60405180910390f35b34801561077f57600080fd5b50610788612087565b60405161079591906132e6565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190612956565b61209a565b005b3480156107d357600080fd5b506107ee60048036038101906107e99190612d25565b612136565b6040516107fb919061303e565b60405180910390f35b6005805461081190613616565b80601f016020809104026020016040519081016040528092919081815260200182805461083d90613616565b801561088a5780601f1061085f5761010080835404028352916020019161088a565b820191906000526020600020905b81548152906001019060200180831161086d57829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109729190613279565b60405180910390a36001905092915050565b6000600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007546109d391906134e7565b905090565b6000610a2c82600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610afe82600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c709190613279565b60405180910390a3600190509392505050565b600660009054906101000a900460ff1681565b60075481565b600860009054906101000a900460ff1681565b60038181548110610cbf57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610cfa85612258565b90506045855114610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906131b9565b60405180910390fd5b600a848490501115610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613179565b60405180910390fd5b6000858051906020012090506000805b868690508160ff161015610fb4576000610e1b8489898560ff16818110610dc157610dc0613701565b5b9050602002810190610dd39190613338565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611874565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610ee95750600b6000866000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610fa0576001600b6000876000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508280610f7a90613679565b935050600860009054906101000a900460ff1660ff168360ff1610610f9f5750610fb4565b5b508080610fac90613679565b915050610d97565b50600860009054906101000a900460ff1660ff168160ff16101561100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100490613259565b60405180910390fd5b61106d836060015167ffffffffffffffff16600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611114836060015167ffffffffffffffff16600960008660c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008560c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507ff20fc6923b8057dd0c3b606483fcaa038229bb36ebc35a0040e3eaa39cf97b1783600001518460c00151856060015160405161119a939291906132af565b60405180910390a18260c0015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85606001516040516112089190613294565b60405180910390a38260c0015193505050509392505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c257600080fd5b60011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906131f9565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461140257600080fd5b60008260ff1611156114795760648260ff161115611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906131d9565b60405180910390fd5b81600860016101000a81548160ff021916908360ff1602179055506001905061147e565b600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114dd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461167757600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613199565b60405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600480546117f390613616565b80601f016020809104026020016040519081016040528092919081815260200182805461181f90613616565b801561186c5780601f106118415761010080835404028352916020019161186c565b820191906000526020600020905b81548152906001019060200180831161184f57829003601f168201915b505050505081565b60008060008061188385611b22565b809350819450829550505050601b8360ff16141580156118a75750601c8360ff1614155b156118b8576000935050505061190d565b600186848484604051600081526020016040526040516118db9493929190613074565b6020604051602081039080840390855afa1580156118fd573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600061198783600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c83600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611abd9190613279565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f622824274e0937ee319b036740cd0887131781bc2032b47eac3e88a1be17f5d5858585604051611b0f939291906130db565b60405180910390a2600190509392505050565b60008060006041845114611b3557600080fd5b60008060006020870151925060408701519150606087015160001a9050601b8160ff161015611b6e57601b81611b6b91906134b0565b90505b8083839550955095505050509193909250565b6000611bd582600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c6a82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d0a9190613279565b60405180910390a36001905092915050565b60026020528060005260406000206000915054906101000a900460ff1681565b600082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611e1c9190613279565b60405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401611e639493929190612ff2565b600060405180830381600087803b158015611e7d57600080fd5b505af1158015611e91573d6000803e3d6000fd5b50505050600190509392505050565b600080829050600081511415611ebc576000801b915050611ec5565b60208301519150505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f4b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611fa6929190612fc9565b602060405180830381600087803b158015611fc057600080fd5b505af1158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff89190612ac5565b905092915050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219157600080fd5b60008260ff16111561220857600a8260ff1611156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613139565b60405180910390fd5b81600860006101000a81548160ff021916908360ff1602179055506001905061220d565b600090505b919050565b60008282111561222157600080fd5b818361222d91906134e7565b905092915050565b60008183612243919061345a565b90508281101561225257600080fd5b92915050565b61226061271e565b61226861271e565b600080600080600080600080600060088c0101519750600860048c0101519650600c60088c0101519550601460088c0101519450601d60088c0101519350602460018c0101519250602560148c01015191506122c388612645565b896000019067ffffffffffffffff16908167ffffffffffffffff16815250506122eb876126d7565b896020019063ffffffff16908163ffffffff168152505061230b86612645565b896040019067ffffffffffffffff16908167ffffffffffffffff168152505061233385612645565b896060019067ffffffffffffffff16908167ffffffffffffffff168152505061235b84612645565b896080019067ffffffffffffffff16908167ffffffffffffffff1681525050828960a0019060ff16908160ff1681525050818960c0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612457600480546123d490613616565b80601f016020809104026020016040519081016040528092919081815260200182805461240090613616565b801561244d5780601f106124225761010080835404028352916020019161244d565b820191906000526020600020905b81548152906001019060200180831161243057829003601f168201915b5050505050611ea0565b60c01c90508860a0015160ff168461246f919061351b565b67ffffffffffffffff168167ffffffffffffffff16146124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb90613159565b60405180910390fd5b8860a0015160ff16600860019054906101000a900460ff1660ff161461251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690613119565b60405180910390fd5b612536896020015163ffffffff1662278d00612235565b4210612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613219565b60405180910390fd5b600c60008a6000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e790613239565b60405180910390fd5b6001600c60008b6000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550889950505050505050505050919050565b6000819050600866ff00ff00ff00ff821667ffffffffffffffff16901b600867ff00ff00ff00ff00831667ffffffffffffffff16901c179050601065ffff0000ffff821667ffffffffffffffff16901b601067ffff0000ffff0000831667ffffffffffffffff16901c17905060208167ffffffffffffffff16901b60208267ffffffffffffffff16901c179050919050565b6000819050600862ff00ff821663ffffffff16901b600863ff00ff00831663ffffffff16901c17905060108163ffffffff16901b60108263ffffffff16901c179050919050565b6040518060e00160405280600067ffffffffffffffff168152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60006127b56127b0846133c0565b61339b565b9050828152602081018484840111156127d1576127d061377d565b5b6127dc8482856135d4565b509392505050565b60006127f76127f2846133f1565b61339b565b9050828152602081018484840111156128135761281261377d565b5b61281e8482856135d4565b509392505050565b600081359050612835816139ac565b92915050565b60008083601f84011261285157612850613764565b5b8235905067ffffffffffffffff81111561286e5761286d61375f565b5b60208301915083602082028301111561288a57612889613773565b5b9250929050565b6000815190506128a0816139c3565b92915050565b6000813590506128b5816139da565b92915050565b600082601f8301126128d0576128cf613764565b5b81356128e08482602086016127a2565b91505092915050565b600082601f8301126128fe576128fd613764565b5b813561290e8482602086016127e4565b91505092915050565b600081359050612926816139f1565b92915050565b60008135905061293b81613a08565b92915050565b60008135905061295081613a1f565b92915050565b60006020828403121561296c5761296b613787565b5b600061297a84828501612826565b91505092915050565b6000806040838503121561299a57612999613787565b5b60006129a885828601612826565b92505060206129b985828601612826565b9150509250929050565b6000806000606084860312156129dc576129db613787565b5b60006129ea86828701612826565b93505060206129fb86828701612826565b9250506040612a0c86828701612917565b9150509250925092565b60008060408385031215612a2d57612a2c613787565b5b6000612a3b85828601612826565b9250506020612a4c85828601612917565b9150509250929050565b600080600060608486031215612a6f57612a6e613787565b5b6000612a7d86828701612826565b9350506020612a8e86828701612917565b925050604084013567ffffffffffffffff811115612aaf57612aae613782565b5b612abb868287016128bb565b9150509250925092565b600060208284031215612adb57612ada613787565b5b6000612ae984828501612891565b91505092915050565b60008060408385031215612b0957612b08613787565b5b6000612b17858286016128a6565b925050602083013567ffffffffffffffff811115612b3857612b37613782565b5b612b44858286016128bb565b9150509250929050565b600060208284031215612b6457612b63613787565b5b600082013567ffffffffffffffff811115612b8257612b81613782565b5b612b8e848285016128bb565b91505092915050565b600080600060408486031215612bb057612baf613787565b5b600084013567ffffffffffffffff811115612bce57612bcd613782565b5b612bda868287016128bb565b935050602084013567ffffffffffffffff811115612bfb57612bfa613782565b5b612c078682870161283b565b92509250509250925092565b600060208284031215612c2957612c28613787565b5b600082013567ffffffffffffffff811115612c4757612c46613782565b5b612c53848285016128e9565b91505092915050565b600080600060608486031215612c7557612c74613787565b5b600084013567ffffffffffffffff811115612c9357612c92613782565b5b612c9f868287016128e9565b9350506020612cb086828701612917565b9250506040612cc186828701612917565b9150509250925092565b600060208284031215612ce157612ce0613787565b5b6000612cef84828501612917565b91505092915050565b600060208284031215612d0e57612d0d613787565b5b6000612d1c8482850161292c565b91505092915050565b600060208284031215612d3b57612d3a613787565b5b6000612d4984828501612941565b91505092915050565b612d5b8161354f565b82525050565b612d6a81613561565b82525050565b612d798161356d565b82525050565b6000612d8a82613422565b612d948185613438565b9350612da48185602086016135e3565b612dad8161378c565b840191505092915050565b6000612dc38261342d565b612dcd8185613449565b9350612ddd8185602086016135e3565b612de68161378c565b840191505092915050565b6000612dfe601083613449565b9150612e098261379d565b602082019050919050565b6000612e21601b83613449565b9150612e2c826137c6565b602082019050919050565b6000612e44600c83613449565b9150612e4f826137ef565b602082019050919050565b6000612e67602883613449565b9150612e7282613818565b604082019050919050565b6000612e8a601c83613449565b9150612e9582613867565b602082019050919050565b6000612ead602083613449565b9150612eb882613890565b602082019050919050565b6000612ed0601283613449565b9150612edb826138b9565b602082019050919050565b6000612ef3601883613449565b9150612efe826138e2565b602082019050919050565b6000612f16601483613449565b9150612f218261390b565b602082019050919050565b6000612f39600f83613449565b9150612f4482613934565b602082019050919050565b6000612f5c602483613449565b9150612f678261395d565b604082019050919050565b612f7b81613597565b82525050565b612f8a816135c2565b82525050565b612f99816135a1565b82525050565b612fa8816135b5565b82525050565b6000602082019050612fc36000830184612d52565b92915050565b6000604082019050612fde6000830185612d52565b612feb6020830184612f72565b9392505050565b60006080820190506130076000830187612d52565b6130146020830186612f72565b6130216040830185612d52565b81810360608301526130338184612d7f565b905095945050505050565b60006020820190506130536000830184612d61565b92915050565b600060208201905061306e6000830184612d70565b92915050565b60006080820190506130896000830187612d70565b6130966020830186612f9f565b6130a36040830185612d70565b6130b06060830184612d70565b95945050505050565b600060208201905081810360008301526130d38184612db8565b905092915050565b600060608201905081810360008301526130f58186612db8565b90506131046020830185612f72565b6131116040830184612f72565b949350505050565b6000602082019050818103600083015261313281612df1565b9050919050565b6000602082019050818103600083015261315281612e14565b9050919050565b6000602082019050818103600083015261317281612e37565b9050919050565b6000602082019050818103600083015261319281612e5a565b9050919050565b600060208201905081810360008301526131b281612e7d565b9050919050565b600060208201905081810360008301526131d281612ea0565b9050919050565b600060208201905081810360008301526131f281612ec3565b9050919050565b6000602082019050818103600083015261321281612ee6565b9050919050565b6000602082019050818103600083015261323281612f09565b9050919050565b6000602082019050818103600083015261325281612f2c565b9050919050565b6000602082019050818103600083015261327281612f4f565b9050919050565b600060208201905061328e6000830184612f72565b92915050565b60006020820190506132a96000830184612f81565b92915050565b60006060820190506132c46000830186612f90565b6132d16020830185612d52565b6132de6040830184612f81565b949350505050565b60006020820190506132fb6000830184612f9f565b92915050565b60006060820190506133166000830186612f9f565b6133236020830185612d70565b6133306040830184612d70565b949350505050565b600080833560016020038436030381126133555761335461376e565b5b80840192508235915067ffffffffffffffff82111561337757613376613769565b5b60208301925060018202360383131561339357613392613778565b5b509250929050565b60006133a56133b6565b90506133b18282613648565b919050565b6000604051905090565b600067ffffffffffffffff8211156133db576133da613730565b5b6133e48261378c565b9050602081019050919050565b600067ffffffffffffffff82111561340c5761340b613730565b5b6134158261378c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061346582613597565b915061347083613597565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134a5576134a46136a3565b5b828201905092915050565b60006134bb826135b5565b91506134c6836135b5565b92508260ff038211156134dc576134db6136a3565b5b828201905092915050565b60006134f282613597565b91506134fd83613597565b9250828210156135105761350f6136a3565b5b828203905092915050565b6000613526826135a1565b9150613531836135a1565b925082821015613544576135436136a3565b5b828203905092915050565b600061355a82613577565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006135cd826135a1565b9050919050565b82818337600083830152505050565b60005b838110156136015780820151818401526020810190506135e6565b83811115613610576000848401525b50505050565b6000600282049050600182168061362e57607f821691505b60208210811415613642576136416136d2565b5b50919050565b6136518261378c565b810181811067ffffffffffffffff821117156136705761366f613730565b5b80604052505050565b6000613684826135b5565b915060ff821415613698576136976136a3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e76616c696420436861696e20494400000000000000000000000000000000600082015250565b7f5468726573686f6c6420686173206d6178696d756d206f662031300000000000600082015250565b7f57726f6e672073796d626f6c0000000000000000000000000000000000000000600082015250565b7f4d6178696d756d206f66203130207369676e6174757265732063616e2062652060008201527f70726f7669646564000000000000000000000000000000000000000000000000602082015250565b7f4f7261636c6520697320616c7265616479207265676973746572656400000000600082015250565b7f5369676e61747572652064617461206973207468652077726f6e672073697a65600082015250565b7f436861696e494420697320746f6f206269670000000000000000000000000000600082015250565b7f4f7261636c65206973206e6f7420726567697374657265640000000000000000600082015250565b7f54656c65706f7274206861732065787069726564000000000000000000000000600082015250565b7f416c726561647920436c61696d65640000000000000000000000000000000000600082015250565b7f4e6f7420656e6f7567682076616c6964207369676e6174757265732070726f7660008201527f6964656400000000000000000000000000000000000000000000000000000000602082015250565b6139b58161354f565b81146139c057600080fd5b50565b6139cc81613561565b81146139d757600080fd5b50565b6139e38161356d565b81146139ee57600080fd5b50565b6139fa81613597565b8114613a0557600080fd5b50565b613a11816135a1565b8114613a1c57600080fd5b50565b613a28816135b5565b8114613a3357600080fd5b5056fea264697066735822122069b956755970daaa1bf9e91e08f08fe01c23b2cd5d14c61a10d1dd974a8d624c64736f6c6343000806003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000002faf0800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000045a5054430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095a65707461636f696e0000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806395d89b41116100f7578063cae9ca5111610095578063dd62ed3e11610064578063dd62ed3e14610736578063e3d29c5d14610773578063f2fde38b1461079e578063f3df5b69146107c7576101db565b8063cae9ca5114610654578063cfb5192814610691578063d4ee1d90146106ce578063dc39d06d146106f9576101db565b80639ea8a71a116100d15780639ea8a71a1461055e578063a7bb58031461059b578063a9059cbb146105da578063addd509914610617576101db565b806395d89b41146104b957806397aba7f9146104e45780639e8da54314610521576101db565b8063487e83071161016f5780637739acc71161013e5780637739acc71461041157806379ba50971461044e578063825540c7146104655780638da5cb5b1461048e576101db565b8063487e8307146103315780636426d53d1461036e57806370a08231146103ab578063769c8d90146103e8576101db565b806323b872dd116101ab57806323b872dd14610273578063313ce567146102b05780633eaaf86b146102db57806342cde4e814610306576101db565b806306fdde03146101e0578063095ea7b31461020b57806318160ddd14610248576101db565b366101db57600080fd5b600080fd5b3480156101ec57600080fd5b506101f5610804565b60405161020291906130b9565b60405180910390f35b34801561021757600080fd5b50610232600480360381019061022d9190612a16565b610892565b60405161023f919061303e565b60405180910390f35b34801561025457600080fd5b5061025d610984565b60405161026a9190613279565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906129c3565b6109d8565b6040516102a7919061303e565b60405180910390f35b3480156102bc57600080fd5b506102c5610c83565b6040516102d291906132e6565b60405180910390f35b3480156102e757600080fd5b506102f0610c96565b6040516102fd9190613279565b60405180910390f35b34801561031257600080fd5b5061031b610c9c565b60405161032891906132e6565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612ccb565b610caf565b6040516103659190612fae565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612b97565b610cee565b6040516103a29190612fae565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612956565b611221565b6040516103df9190613279565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612956565b61126a565b005b34801561041d57600080fd5b5061043860048036038101906104339190612d25565b6113a7565b604051610445919061303e565b60405180910390f35b34801561045a57600080fd5b50610463611483565b005b34801561047157600080fd5b5061048c60048036038101906104879190612956565b61161f565b005b34801561049a57600080fd5b506104a36117c2565b6040516104b09190612fae565b60405180910390f35b3480156104c557600080fd5b506104ce6117e6565b6040516104db91906130b9565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190612af2565b611874565b6040516105189190612fae565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190612cf8565b611913565b604051610555919061303e565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612c5c565b611933565b604051610592919061303e565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190612b4e565b611b22565b6040516105d193929190613301565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612a16565b611b81565b60405161060e919061303e565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612956565b611d1c565b60405161064b919061303e565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190612a56565b611d3c565b604051610688919061303e565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b39190612c13565b611ea0565b6040516106c59190613059565b60405180910390f35b3480156106da57600080fd5b506106e3611eca565b6040516106f09190612fae565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190612a16565b611ef0565b60405161072d919061303e565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190612983565b612000565b60405161076a9190613279565b60405180910390f35b34801561077f57600080fd5b50610788612087565b60405161079591906132e6565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190612956565b61209a565b005b3480156107d357600080fd5b506107ee60048036038101906107e99190612d25565b612136565b6040516107fb919061303e565b60405180910390f35b6005805461081190613616565b80601f016020809104026020016040519081016040528092919081815260200182805461083d90613616565b801561088a5780601f1061085f5761010080835404028352916020019161088a565b820191906000526020600020905b81548152906001019060200180831161086d57829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109729190613279565b60405180910390a36001905092915050565b6000600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007546109d391906134e7565b905090565b6000610a2c82600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610afe82600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c709190613279565b60405180910390a3600190509392505050565b600660009054906101000a900460ff1681565b60075481565b600860009054906101000a900460ff1681565b60038181548110610cbf57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610cfa85612258565b90506045855114610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906131b9565b60405180910390fd5b600a848490501115610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613179565b60405180910390fd5b6000858051906020012090506000805b868690508160ff161015610fb4576000610e1b8489898560ff16818110610dc157610dc0613701565b5b9050602002810190610dd39190613338565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611874565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610ee95750600b6000866000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610fa0576001600b6000876000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508280610f7a90613679565b935050600860009054906101000a900460ff1660ff168360ff1610610f9f5750610fb4565b5b508080610fac90613679565b915050610d97565b50600860009054906101000a900460ff1660ff168160ff16101561100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100490613259565b60405180910390fd5b61106d836060015167ffffffffffffffff16600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611114836060015167ffffffffffffffff16600960008660c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008560c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507ff20fc6923b8057dd0c3b606483fcaa038229bb36ebc35a0040e3eaa39cf97b1783600001518460c00151856060015160405161119a939291906132af565b60405180910390a18260c0015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85606001516040516112089190613294565b60405180910390a38260c0015193505050509392505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c257600080fd5b60011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906131f9565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461140257600080fd5b60008260ff1611156114795760648260ff161115611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906131d9565b60405180910390fd5b81600860016101000a81548160ff021916908360ff1602179055506001905061147e565b600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114dd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461167757600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613199565b60405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600480546117f390613616565b80601f016020809104026020016040519081016040528092919081815260200182805461181f90613616565b801561186c5780601f106118415761010080835404028352916020019161186c565b820191906000526020600020905b81548152906001019060200180831161184f57829003601f168201915b505050505081565b60008060008061188385611b22565b809350819450829550505050601b8360ff16141580156118a75750601c8360ff1614155b156118b8576000935050505061190d565b600186848484604051600081526020016040526040516118db9493929190613074565b6020604051602081039080840390855afa1580156118fd573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600061198783600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c83600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611abd9190613279565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f622824274e0937ee319b036740cd0887131781bc2032b47eac3e88a1be17f5d5858585604051611b0f939291906130db565b60405180910390a2600190509392505050565b60008060006041845114611b3557600080fd5b60008060006020870151925060408701519150606087015160001a9050601b8160ff161015611b6e57601b81611b6b91906134b0565b90505b8083839550955095505050509193909250565b6000611bd582600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221290919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c6a82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d0a9190613279565b60405180910390a36001905092915050565b60026020528060005260406000206000915054906101000a900460ff1681565b600082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611e1c9190613279565b60405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401611e639493929190612ff2565b600060405180830381600087803b158015611e7d57600080fd5b505af1158015611e91573d6000803e3d6000fd5b50505050600190509392505050565b600080829050600081511415611ebc576000801b915050611ec5565b60208301519150505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f4b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611fa6929190612fc9565b602060405180830381600087803b158015611fc057600080fd5b505af1158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff89190612ac5565b905092915050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219157600080fd5b60008260ff16111561220857600a8260ff1611156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613139565b60405180910390fd5b81600860006101000a81548160ff021916908360ff1602179055506001905061220d565b600090505b919050565b60008282111561222157600080fd5b818361222d91906134e7565b905092915050565b60008183612243919061345a565b90508281101561225257600080fd5b92915050565b61226061271e565b61226861271e565b600080600080600080600080600060088c0101519750600860048c0101519650600c60088c0101519550601460088c0101519450601d60088c0101519350602460018c0101519250602560148c01015191506122c388612645565b896000019067ffffffffffffffff16908167ffffffffffffffff16815250506122eb876126d7565b896020019063ffffffff16908163ffffffff168152505061230b86612645565b896040019067ffffffffffffffff16908167ffffffffffffffff168152505061233385612645565b896060019067ffffffffffffffff16908167ffffffffffffffff168152505061235b84612645565b896080019067ffffffffffffffff16908167ffffffffffffffff1681525050828960a0019060ff16908160ff1681525050818960c0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612457600480546123d490613616565b80601f016020809104026020016040519081016040528092919081815260200182805461240090613616565b801561244d5780601f106124225761010080835404028352916020019161244d565b820191906000526020600020905b81548152906001019060200180831161243057829003601f168201915b5050505050611ea0565b60c01c90508860a0015160ff168461246f919061351b565b67ffffffffffffffff168167ffffffffffffffff16146124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb90613159565b60405180910390fd5b8860a0015160ff16600860019054906101000a900460ff1660ff161461251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690613119565b60405180910390fd5b612536896020015163ffffffff1662278d00612235565b4210612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613219565b60405180910390fd5b600c60008a6000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e790613239565b60405180910390fd5b6001600c60008b6000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550889950505050505050505050919050565b6000819050600866ff00ff00ff00ff821667ffffffffffffffff16901b600867ff00ff00ff00ff00831667ffffffffffffffff16901c179050601065ffff0000ffff821667ffffffffffffffff16901b601067ffff0000ffff0000831667ffffffffffffffff16901c17905060208167ffffffffffffffff16901b60208267ffffffffffffffff16901c179050919050565b6000819050600862ff00ff821663ffffffff16901b600863ff00ff00831663ffffffff16901c17905060108163ffffffff16901b60108263ffffffff16901c179050919050565b6040518060e00160405280600067ffffffffffffffff168152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60006127b56127b0846133c0565b61339b565b9050828152602081018484840111156127d1576127d061377d565b5b6127dc8482856135d4565b509392505050565b60006127f76127f2846133f1565b61339b565b9050828152602081018484840111156128135761281261377d565b5b61281e8482856135d4565b509392505050565b600081359050612835816139ac565b92915050565b60008083601f84011261285157612850613764565b5b8235905067ffffffffffffffff81111561286e5761286d61375f565b5b60208301915083602082028301111561288a57612889613773565b5b9250929050565b6000815190506128a0816139c3565b92915050565b6000813590506128b5816139da565b92915050565b600082601f8301126128d0576128cf613764565b5b81356128e08482602086016127a2565b91505092915050565b600082601f8301126128fe576128fd613764565b5b813561290e8482602086016127e4565b91505092915050565b600081359050612926816139f1565b92915050565b60008135905061293b81613a08565b92915050565b60008135905061295081613a1f565b92915050565b60006020828403121561296c5761296b613787565b5b600061297a84828501612826565b91505092915050565b6000806040838503121561299a57612999613787565b5b60006129a885828601612826565b92505060206129b985828601612826565b9150509250929050565b6000806000606084860312156129dc576129db613787565b5b60006129ea86828701612826565b93505060206129fb86828701612826565b9250506040612a0c86828701612917565b9150509250925092565b60008060408385031215612a2d57612a2c613787565b5b6000612a3b85828601612826565b9250506020612a4c85828601612917565b9150509250929050565b600080600060608486031215612a6f57612a6e613787565b5b6000612a7d86828701612826565b9350506020612a8e86828701612917565b925050604084013567ffffffffffffffff811115612aaf57612aae613782565b5b612abb868287016128bb565b9150509250925092565b600060208284031215612adb57612ada613787565b5b6000612ae984828501612891565b91505092915050565b60008060408385031215612b0957612b08613787565b5b6000612b17858286016128a6565b925050602083013567ffffffffffffffff811115612b3857612b37613782565b5b612b44858286016128bb565b9150509250929050565b600060208284031215612b6457612b63613787565b5b600082013567ffffffffffffffff811115612b8257612b81613782565b5b612b8e848285016128bb565b91505092915050565b600080600060408486031215612bb057612baf613787565b5b600084013567ffffffffffffffff811115612bce57612bcd613782565b5b612bda868287016128bb565b935050602084013567ffffffffffffffff811115612bfb57612bfa613782565b5b612c078682870161283b565b92509250509250925092565b600060208284031215612c2957612c28613787565b5b600082013567ffffffffffffffff811115612c4757612c46613782565b5b612c53848285016128e9565b91505092915050565b600080600060608486031215612c7557612c74613787565b5b600084013567ffffffffffffffff811115612c9357612c92613782565b5b612c9f868287016128e9565b9350506020612cb086828701612917565b9250506040612cc186828701612917565b9150509250925092565b600060208284031215612ce157612ce0613787565b5b6000612cef84828501612917565b91505092915050565b600060208284031215612d0e57612d0d613787565b5b6000612d1c8482850161292c565b91505092915050565b600060208284031215612d3b57612d3a613787565b5b6000612d4984828501612941565b91505092915050565b612d5b8161354f565b82525050565b612d6a81613561565b82525050565b612d798161356d565b82525050565b6000612d8a82613422565b612d948185613438565b9350612da48185602086016135e3565b612dad8161378c565b840191505092915050565b6000612dc38261342d565b612dcd8185613449565b9350612ddd8185602086016135e3565b612de68161378c565b840191505092915050565b6000612dfe601083613449565b9150612e098261379d565b602082019050919050565b6000612e21601b83613449565b9150612e2c826137c6565b602082019050919050565b6000612e44600c83613449565b9150612e4f826137ef565b602082019050919050565b6000612e67602883613449565b9150612e7282613818565b604082019050919050565b6000612e8a601c83613449565b9150612e9582613867565b602082019050919050565b6000612ead602083613449565b9150612eb882613890565b602082019050919050565b6000612ed0601283613449565b9150612edb826138b9565b602082019050919050565b6000612ef3601883613449565b9150612efe826138e2565b602082019050919050565b6000612f16601483613449565b9150612f218261390b565b602082019050919050565b6000612f39600f83613449565b9150612f4482613934565b602082019050919050565b6000612f5c602483613449565b9150612f678261395d565b604082019050919050565b612f7b81613597565b82525050565b612f8a816135c2565b82525050565b612f99816135a1565b82525050565b612fa8816135b5565b82525050565b6000602082019050612fc36000830184612d52565b92915050565b6000604082019050612fde6000830185612d52565b612feb6020830184612f72565b9392505050565b60006080820190506130076000830187612d52565b6130146020830186612f72565b6130216040830185612d52565b81810360608301526130338184612d7f565b905095945050505050565b60006020820190506130536000830184612d61565b92915050565b600060208201905061306e6000830184612d70565b92915050565b60006080820190506130896000830187612d70565b6130966020830186612f9f565b6130a36040830185612d70565b6130b06060830184612d70565b95945050505050565b600060208201905081810360008301526130d38184612db8565b905092915050565b600060608201905081810360008301526130f58186612db8565b90506131046020830185612f72565b6131116040830184612f72565b949350505050565b6000602082019050818103600083015261313281612df1565b9050919050565b6000602082019050818103600083015261315281612e14565b9050919050565b6000602082019050818103600083015261317281612e37565b9050919050565b6000602082019050818103600083015261319281612e5a565b9050919050565b600060208201905081810360008301526131b281612e7d565b9050919050565b600060208201905081810360008301526131d281612ea0565b9050919050565b600060208201905081810360008301526131f281612ec3565b9050919050565b6000602082019050818103600083015261321281612ee6565b9050919050565b6000602082019050818103600083015261323281612f09565b9050919050565b6000602082019050818103600083015261325281612f2c565b9050919050565b6000602082019050818103600083015261327281612f4f565b9050919050565b600060208201905061328e6000830184612f72565b92915050565b60006020820190506132a96000830184612f81565b92915050565b60006060820190506132c46000830186612f90565b6132d16020830185612d52565b6132de6040830184612f81565b949350505050565b60006020820190506132fb6000830184612f9f565b92915050565b60006060820190506133166000830186612f9f565b6133236020830185612d70565b6133306040830184612d70565b949350505050565b600080833560016020038436030381126133555761335461376e565b5b80840192508235915067ffffffffffffffff82111561337757613376613769565b5b60208301925060018202360383131561339357613392613778565b5b509250929050565b60006133a56133b6565b90506133b18282613648565b919050565b6000604051905090565b600067ffffffffffffffff8211156133db576133da613730565b5b6133e48261378c565b9050602081019050919050565b600067ffffffffffffffff82111561340c5761340b613730565b5b6134158261378c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061346582613597565b915061347083613597565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134a5576134a46136a3565b5b828201905092915050565b60006134bb826135b5565b91506134c6836135b5565b92508260ff038211156134dc576134db6136a3565b5b828201905092915050565b60006134f282613597565b91506134fd83613597565b9250828210156135105761350f6136a3565b5b828203905092915050565b6000613526826135a1565b9150613531836135a1565b925082821015613544576135436136a3565b5b828203905092915050565b600061355a82613577565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006135cd826135a1565b9050919050565b82818337600083830152505050565b60005b838110156136015780820151818401526020810190506135e6565b83811115613610576000848401525b50505050565b6000600282049050600182168061362e57607f821691505b60208210811415613642576136416136d2565b5b50919050565b6136518261378c565b810181811067ffffffffffffffff821117156136705761366f613730565b5b80604052505050565b6000613684826135b5565b915060ff821415613698576136976136a3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e76616c696420436861696e20494400000000000000000000000000000000600082015250565b7f5468726573686f6c6420686173206d6178696d756d206f662031300000000000600082015250565b7f57726f6e672073796d626f6c0000000000000000000000000000000000000000600082015250565b7f4d6178696d756d206f66203130207369676e6174757265732063616e2062652060008201527f70726f7669646564000000000000000000000000000000000000000000000000602082015250565b7f4f7261636c6520697320616c7265616479207265676973746572656400000000600082015250565b7f5369676e61747572652064617461206973207468652077726f6e672073697a65600082015250565b7f436861696e494420697320746f6f206269670000000000000000000000000000600082015250565b7f4f7261636c65206973206e6f7420726567697374657265640000000000000000600082015250565b7f54656c65706f7274206861732065787069726564000000000000000000000000600082015250565b7f416c726561647920436c61696d65640000000000000000000000000000000000600082015250565b7f4e6f7420656e6f7567682076616c6964207369676e6174757265732070726f7660008201527f6964656400000000000000000000000000000000000000000000000000000000602082015250565b6139b58161354f565b81146139c057600080fd5b50565b6139cc81613561565b81146139d757600080fd5b50565b6139e38161356d565b81146139ee57600080fd5b50565b6139fa81613597565b8114613a0557600080fd5b50565b613a11816135a1565b8114613a1c57600080fd5b50565b613a28816135b5565b8114613a3357600080fd5b5056fea264697066735822122069b956755970daaa1bf9e91e08f08fe01c23b2cd5d14c61a10d1dd974a8d624c64736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000002faf0800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000045a5054430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095a65707461636f696e0000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _symbol (string): ZPTC
Arg [1] : _name (string): Zeptacoin
Arg [2] : _decimals (uint8): 4
Arg [3] : __totalSupply (uint256): 50000000
Arg [4] : _threshold (uint8): 3
Arg [5] : _thisChainId (uint8): 1
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [3] : 0000000000000000000000000000000000000000000000000000000002faf080
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 5a50544300000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [9] : 5a65707461636f696e0000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
6066:11119:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16744:8;;;6066:11119;;;;6197:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9286:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7667:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10046:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6251:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6282:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5208:27;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14445:1461;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8014:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16225:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4924:196;;;;;;;;;;;;;:::i;:::-;;5379:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4531:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6170;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;165:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6502:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11975:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;589:583;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8494:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5162:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11210:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12590:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4558:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16998:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10686:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15914:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6197:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9286:217::-;9358:12;9414:6;9383:7;:19;9391:10;9383:19;;;;;;;;;;;;;;;:28;9403:7;9383:28;;;;;;;;;;;;;;;:37;;;;9457:7;9436:37;;9445:10;9436:37;;;9466:6;9436:37;;;;;;:::i;:::-;;;;;;;;9491:4;9484:11;;9286:217;;;;:::o;7667:120::-;7720:4;7759:8;:20;7776:1;7759:20;;;;;;;;;;;;;;;;7744:12;;:35;;;;:::i;:::-;7737:42;;7667:120;:::o;10046:352::-;10132:12;10174:26;10193:6;10174:8;:14;10183:4;10174:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;10157:8;:14;10166:4;10157:14;;;;;;;;;;;;;;;:43;;;;10239:37;10269:6;10239:7;:13;10247:4;10239:13;;;;;;;;;;;;;;;:25;10253:10;10239:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;10211:7;:13;10219:4;10211:13;;;;;;;;;;;;;;;:25;10225:10;10211:25;;;;;;;;;;;;;;;:65;;;;10302:24;10319:6;10302:8;:12;10311:2;10302:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;10287:8;:12;10296:2;10287:12;;;;;;;;;;;;;;;:39;;;;10357:2;10342:26;;10351:4;10342:26;;;10361:6;10342:26;;;;;;:::i;:::-;;;;;;;;10386:4;10379:11;;10046:352;;;;;:::o;6223:21::-;;;;;;;;;;;;;:::o;6251:24::-;;;;:::o;6282:22::-;;;;;;;;;;;;;:::o;5208:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14445:1461::-;14527:17;14557:22;14582;14596:7;14582:13;:22::i;:::-;14557:47;;14673:2;14655:7;:14;:20;14647:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14752:2;14731:10;;:17;;:23;;14723:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14812:15;14840:7;14830:18;;;;;;14812:36;;14861:16;14899:7;14894:618;14916:10;;:17;;14912:1;:21;;;14894:618;;;14954:17;14974:44;14995:7;15004:10;;15015:1;15004:13;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;14974:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;:44::i;:::-;14954:64;;15260:7;:18;15268:9;15260:18;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;15283:6;:13;15290:2;:5;;;15283:13;;;;;;;;;;;;;;;:24;15297:9;15283:24;;;;;;;;;;;;;;;;;;;;;;;;;15282:25;15260:47;15256:245;;;15354:4;15327:6;:13;15334:2;:5;;;15327:13;;;;;;;;;;;;;;;:24;15341:9;15327:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15377:12;;;;;:::i;:::-;;;;15428:9;;;;;;;;;;;15414:23;;:10;:23;;;15410:76;;15461:5;;;15410:76;15256:245;14939:573;14935:3;;;;;:::i;:::-;;;;14894:618;;;;15546:9;;;;;;;;;;;15532:23;;:10;:23;;;;15524:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15632:37;15657:2;:11;;;15632:37;;:8;:20;15649:1;15632:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15609:8;:20;15626:1;15609:20;;;;;;;;;;;;;;;:60;;;;15705:39;15732:2;:11;;;15705:39;;:8;:22;15714:2;:12;;;15705:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;15680:8;:22;15689:2;:12;;;15680:22;;;;;;;;;;;;;;;:64;;;;15762:41;15770:2;:5;;;15777:2;:12;;;15791:2;:11;;;15762:41;;;;;;;;:::i;:::-;;;;;;;;15840:2;:12;;;15819:47;;15836:1;15819:47;;;15854:2;:11;;;15819:47;;;;;;:::i;:::-;;;;;;;;15886:2;:12;;;15879:19;;;;;14445:1461;;;;;:::o;8014:129::-;8083:12;8115:8;:20;8124:10;8115:20;;;;;;;;;;;;;;;;8108:27;;8014:129;;;:::o;5598:180::-;4780:5;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;5698:4:::1;5675:27;;:7;:19;5683:10;5675:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5667:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5751:7;:19;5759:10;5751:19;;;;;;;;;;;;;;;;5744:26;;;;;;;;;;;5598:180:::0;:::o;16225:285::-;16292:12;4780:5;;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;16334:1:::1;16321:10;:14;;;16317:161;;;16373:3;16359:10;:17;;;;16351:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16428:10;16414:11;;:24;;;;;;;;;;;;;;;;;;16462:4;16455:11;;;;16317:161;16497:5;16490:12;;4797:1;16225:285:::0;;;:::o;4924:196::-;4991:8;;;;;;;;;;;4977:22;;:10;:22;;;4969:31;;;;;;5044:8;;;;;;;;;;;5016:37;;5037:5;;;;;;;;;;5016:37;;;;;;;;;;;;5072:8;;;;;;;;;;;5064:5;;:16;;;;;;;;;;;;;;;;;;5110:1;5091:8;;:21;;;;;;;;;;;;;;;;;;4924:196::o;5379:211::-;4780:5;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;5455:7:::1;:19;5463:10;5455:19;;;;;;;;;;;;;;;;;;;;;;;;;5454:20;5446:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;5518:10;5534;5518:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5578:4;5556:7;:19;5564:10;5556:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;5379:211:::0;:::o;4531:20::-;;;;;;;;;;;;:::o;6170:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;165:418::-;268:7;292;309:9;328;361:19;376:3;361:14;:19::i;:::-;349:31;;;;;;;;;;;;401:2;396:1;:7;;;;:18;;;;;412:2;407:1;:7;;;;396:18;392:186;;;446:1;430:19;;;;;;;392:186;540:27;550:7;559:1;562;565;540:27;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;533:34;;;;;165:418;;;;;:::o;6502:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11975:372::-;12054:12;12102:32;12127:6;12102:8;:20;12111:10;12102:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12079:8;:20;12088:10;12079:20;;;;;;;;;;;;;;;:55;;;;12168:32;12193:6;12168:8;:20;12185:1;12168:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12145:8;:20;12162:1;12145:20;;;;;;;;;;;;;;;:55;;;;12247:1;12218:40;;12227:10;12218:40;;;12251:6;12218:40;;;;;;:::i;:::-;;;;;;;;12283:10;12274:41;;;12295:2;12299:6;12307:7;12274:41;;;;;;;;:::i;:::-;;;;;;;;12335:4;12328:11;;11975:372;;;;;:::o;589:583::-;676:5;683:7;692;737:2;723:3;:10;:16;715:25;;;;;;752:9;771;790:7;907:2;902:3;898:12;892:19;887:24;;975:2;970:3;966:12;960:19;955:24;;1080:2;1075:3;1071:12;1065:19;1062:1;1057:28;1052:33;;1114:2;1110:1;:6;;;1106:31;;;1135:2;1130:7;;;;;:::i;:::-;;;1106:31;1157:1;1160;1163;1149:16;;;;;;;;;589:583;;;;;:::o;8494:276::-;8562:12;8610:32;8635:6;8610:8;:20;8619:10;8610:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8587:8;:20;8596:10;8587:20;;;;;;;;;;;;;;;:55;;;;8668:24;8685:6;8668:8;:12;8677:2;8668:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;8653:8;:12;8662:2;8653:12;;;;;;;;;;;;;;;:39;;;;8729:2;8708:32;;8717:10;8708:32;;;8733:6;8708:32;;;;;;:::i;:::-;;;;;;;;8758:4;8751:11;;8494:276;;;;:::o;5162:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;11210:333::-;11299:12;11355:6;11324:7;:19;11332:10;11324:19;;;;;;;;;;;;;;;:28;11344:7;11324:28;;;;;;;;;;;;;;;:37;;;;11398:7;11377:37;;11386:10;11377:37;;;11407:6;11377:37;;;;;;:::i;:::-;;;;;;;;11448:7;11425:47;;;11473:10;11485:6;11501:4;11508;11425:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11531:4;11524:11;;11210:333;;;;;:::o;12590:314::-;12658:14;12685:32;12726:6;12685:48;;12778:1;12748:19;:26;:31;12744:74;;;12803:3;12796:10;;;;;;;12744:74;12882:2;12874:6;12870:15;12864:22;12854:32;;12839:58;12590:314;;;;:::o;4558:23::-;;;;;;;;;;;;;:::o;16998:184::-;17090:12;4780:5;;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;17137:12:::1;17122:37;;;17160:5;::::0;::::1;;;;;;;;17167:6;17122:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17115:59;;16998:184:::0;;;;:::o;10686:156::-;10772:14;10806:7;:19;10814:10;10806:19;;;;;;;;;;;;;;;:28;10826:7;10806:28;;;;;;;;;;;;;;;;10799:35;;10686:156;;;;:::o;6311:24::-;;;;;;;;;;;;;:::o;4814:102::-;4780:5;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;4899:9:::1;4888:8;;:20;;;;;;;;;;;;;;;;;;4814:102:::0;:::o;15914:303::-;15985:12;4780:5;;;;;;;;;;;4766:19;;:10;:19;;;4758:28;;;;;;16029:1:::1;16014:12;:16;;;16010:175;;;16070:2;16054:12;:18;;;;16046:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16133:12;16121:9;;:24;;;;;;;;;;;;;;;;;;16169:4;16162:11;;;;16010:175;16204:5;16197:12;;4797:1;15914:303:::0;;;:::o;2492:114::-;2544:6;2576:1;2571;:6;;2563:15;;;;;;2597:1;2593;:5;;;;:::i;:::-;2589:9;;2492:114;;;;:::o;2372:::-;2424:6;2451:1;2447;:5;;;;:::i;:::-;2443:9;;2476:1;2471;:6;;2463:15;;;;;;2372:114;;;;:::o;12912:1525::-;12974:19;;:::i;:::-;13006:22;;:::i;:::-;13041:9;13061;13081:15;13107;13133:16;13160:13;13184:17;13212:24;13316:1;13310:3;13301:7;13297:17;13293:25;13287:32;13281:38;;13368:1;13362:3;13353:7;13349:17;13345:25;13339:32;13333:38;;13426:2;13420:3;13411:7;13407:17;13403:26;13397:33;13385:45;;13485:2;13479:3;13470:7;13466:17;13462:26;13456:33;13444:45;;13545:2;13539:3;13530:7;13526:17;13522:26;13516:33;13503:46;;13603:2;13597:3;13588:7;13584:17;13580:26;13574:33;13563:44;;13664:2;13657:4;13648:7;13644:18;13640:27;13634:34;13621:47;;13709:20;13726:2;13709:16;:20::i;:::-;13701:2;:5;;:28;;;;;;;;;;;13748:20;13765:2;13748:16;:20::i;:::-;13740:2;:5;;:28;;;;;;;;;;;13793:26;13810:8;13793:16;:26::i;:::-;13779:2;:11;;:40;;;;;;;;;;;13844:26;13861:8;13844:16;:26::i;:::-;13830:2;:11;;:40;;;;;;;;;;;13896:27;13913:9;13896:16;:27::i;:::-;13881:2;:12;;:42;;;;;;;;;;;13947:7;13934:2;:10;;:20;;;;;;;;;;;13980:9;13965:2;:12;;:24;;;;;;;;;;;14036:37;14052:20;14036:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:37::i;:::-;14022:53;;14002:73;;14125:2;:10;;;14115:20;;:9;:20;;;;:::i;:::-;14094:41;;:17;:41;;;14086:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14186:2;:10;;;14171:25;;:11;;;;;;;;;;;:25;;;14163:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14254:40;14267:2;:5;;;14254:40;;14275:17;14254:12;:40::i;:::-;14236:15;:58;14228:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14339:7;:14;14347:2;:5;;;14339:14;;;;;;;;;;;;;;;;;;;;;;;;;14338:15;14330:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;14403:4;14386:7;:14;14394:2;:5;;;14386:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14427:2;14420:9;;;;;;;;;;;12912:1525;;;:::o;1313:417::-;1369:8;1394:5;1390:9;;1515:1;1492:18;1488:1;:22;1487:29;;;;1468:1;1445:18;1441:1;:22;1440:29;;;;1439:78;1435:82;;1646:2;1623:18;1619:1;:22;1618:30;;;;1598:2;1575:18;1571:1;:22;1570:30;;;;1569:80;1565:84;;1719:2;1714:1;:7;;;;1707:2;1702:1;:7;;;;1701:21;1697:25;;1313:417;;;:::o;1736:269::-;1792:8;1817:5;1813:9;;1922:1;1907:10;1903:1;:14;1902:21;;;;1883:1;1868:10;1864:1;:14;1863:21;;;;1862:62;1858:66;;1994:2;1989:1;:7;;;;1982:2;1977:1;:7;;;;1976:21;1972:25;;1736:269;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;280:79;;:::i;:::-;249:2;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:2;;;698:79;;:::i;:::-;667:2;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;893:87;;;;:::o;1001:579::-;1085:8;1095:6;1145:3;1138:4;1130:6;1126:17;1122:27;1112:2;;1153:79;;:::i;:::-;1112:2;1266:6;1253:20;1243:30;;1296:18;1288:6;1285:30;1282:2;;;1318:79;;:::i;:::-;1282:2;1432:4;1424:6;1420:17;1408:29;;1486:3;1478:4;1470:6;1466:17;1456:8;1452:32;1449:41;1446:2;;;1493:79;;:::i;:::-;1446:2;1102:478;;;;;:::o;1586:137::-;1640:5;1671:6;1665:13;1656:22;;1687:30;1711:5;1687:30;:::i;:::-;1646:77;;;;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1781:87;;;;:::o;1887:338::-;1942:5;1991:3;1984:4;1976:6;1972:17;1968:27;1958:2;;1999:79;;:::i;:::-;1958:2;2116:6;2103:20;2141:78;2215:3;2207:6;2200:4;2192:6;2188:17;2141:78;:::i;:::-;2132:87;;1948:277;;;;;:::o;2245:340::-;2301:5;2350:3;2343:4;2335:6;2331:17;2327:27;2317:2;;2358:79;;:::i;:::-;2317:2;2475:6;2462:20;2500:79;2575:3;2567:6;2560:4;2552:6;2548:17;2500:79;:::i;:::-;2491:88;;2307:278;;;;;:::o;2591:139::-;2637:5;2675:6;2662:20;2653:29;;2691:33;2718:5;2691:33;:::i;:::-;2643:87;;;;:::o;2736:137::-;2781:5;2819:6;2806:20;2797:29;;2835:32;2861:5;2835:32;:::i;:::-;2787:86;;;;:::o;2879:135::-;2923:5;2961:6;2948:20;2939:29;;2977:31;3002:5;2977:31;:::i;:::-;2929:85;;;;:::o;3020:329::-;3079:6;3128:2;3116:9;3107:7;3103:23;3099:32;3096:2;;;3134:79;;:::i;:::-;3096:2;3254:1;3279:53;3324:7;3315:6;3304:9;3300:22;3279:53;:::i;:::-;3269:63;;3225:117;3086:263;;;;:::o;3355:474::-;3423:6;3431;3480:2;3468:9;3459:7;3455:23;3451:32;3448:2;;;3486:79;;:::i;:::-;3448:2;3606:1;3631:53;3676:7;3667:6;3656:9;3652:22;3631:53;:::i;:::-;3621:63;;3577:117;3733:2;3759:53;3804:7;3795:6;3784:9;3780:22;3759:53;:::i;:::-;3749:63;;3704:118;3438:391;;;;;:::o;3835:619::-;3912:6;3920;3928;3977:2;3965:9;3956:7;3952:23;3948:32;3945:2;;;3983:79;;:::i;:::-;3945:2;4103:1;4128:53;4173:7;4164:6;4153:9;4149:22;4128:53;:::i;:::-;4118:63;;4074:117;4230:2;4256:53;4301:7;4292:6;4281:9;4277:22;4256:53;:::i;:::-;4246:63;;4201:118;4358:2;4384:53;4429:7;4420:6;4409:9;4405:22;4384:53;:::i;:::-;4374:63;;4329:118;3935:519;;;;;:::o;4460:474::-;4528:6;4536;4585:2;4573:9;4564:7;4560:23;4556:32;4553:2;;;4591:79;;:::i;:::-;4553:2;4711:1;4736:53;4781:7;4772:6;4761:9;4757:22;4736:53;:::i;:::-;4726:63;;4682:117;4838:2;4864:53;4909:7;4900:6;4889:9;4885:22;4864:53;:::i;:::-;4854:63;;4809:118;4543:391;;;;;:::o;4940:797::-;5026:6;5034;5042;5091:2;5079:9;5070:7;5066:23;5062:32;5059:2;;;5097:79;;:::i;:::-;5059:2;5217:1;5242:53;5287:7;5278:6;5267:9;5263:22;5242:53;:::i;:::-;5232:63;;5188:117;5344:2;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5315:118;5500:2;5489:9;5485:18;5472:32;5531:18;5523:6;5520:30;5517:2;;;5553:79;;:::i;:::-;5517:2;5658:62;5712:7;5703:6;5692:9;5688:22;5658:62;:::i;:::-;5648:72;;5443:287;5049:688;;;;;:::o;5743:345::-;5810:6;5859:2;5847:9;5838:7;5834:23;5830:32;5827:2;;;5865:79;;:::i;:::-;5827:2;5985:1;6010:61;6063:7;6054:6;6043:9;6039:22;6010:61;:::i;:::-;6000:71;;5956:125;5817:271;;;;:::o;6094:652::-;6171:6;6179;6228:2;6216:9;6207:7;6203:23;6199:32;6196:2;;;6234:79;;:::i;:::-;6196:2;6354:1;6379:53;6424:7;6415:6;6404:9;6400:22;6379:53;:::i;:::-;6369:63;;6325:117;6509:2;6498:9;6494:18;6481:32;6540:18;6532:6;6529:30;6526:2;;;6562:79;;:::i;:::-;6526:2;6667:62;6721:7;6712:6;6701:9;6697:22;6667:62;:::i;:::-;6657:72;;6452:287;6186:560;;;;;:::o;6752:507::-;6820:6;6869:2;6857:9;6848:7;6844:23;6840:32;6837:2;;;6875:79;;:::i;:::-;6837:2;7023:1;7012:9;7008:17;6995:31;7053:18;7045:6;7042:30;7039:2;;;7075:79;;:::i;:::-;7039:2;7180:62;7234:7;7225:6;7214:9;7210:22;7180:62;:::i;:::-;7170:72;;6966:286;6827:432;;;;:::o;7265:904::-;7380:6;7388;7396;7445:2;7433:9;7424:7;7420:23;7416:32;7413:2;;;7451:79;;:::i;:::-;7413:2;7599:1;7588:9;7584:17;7571:31;7629:18;7621:6;7618:30;7615:2;;;7651:79;;:::i;:::-;7615:2;7756:62;7810:7;7801:6;7790:9;7786:22;7756:62;:::i;:::-;7746:72;;7542:286;7895:2;7884:9;7880:18;7867:32;7926:18;7918:6;7915:30;7912:2;;;7948:79;;:::i;:::-;7912:2;8061:91;8144:7;8135:6;8124:9;8120:22;8061:91;:::i;:::-;8043:109;;;;7838:324;7403:766;;;;;:::o;8175:509::-;8244:6;8293:2;8281:9;8272:7;8268:23;8264:32;8261:2;;;8299:79;;:::i;:::-;8261:2;8447:1;8436:9;8432:17;8419:31;8477:18;8469:6;8466:30;8463:2;;;8499:79;;:::i;:::-;8463:2;8604:63;8659:7;8650:6;8639:9;8635:22;8604:63;:::i;:::-;8594:73;;8390:287;8251:433;;;;:::o;8690:799::-;8777:6;8785;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:2;;;8848:79;;:::i;:::-;8810:2;8996:1;8985:9;8981:17;8968:31;9026:18;9018:6;9015:30;9012:2;;;9048:79;;:::i;:::-;9012:2;9153:63;9208:7;9199:6;9188:9;9184:22;9153:63;:::i;:::-;9143:73;;8939:287;9265:2;9291:53;9336:7;9327:6;9316:9;9312:22;9291:53;:::i;:::-;9281:63;;9236:118;9393:2;9419:53;9464:7;9455:6;9444:9;9440:22;9419:53;:::i;:::-;9409:63;;9364:118;8800:689;;;;;:::o;9495:329::-;9554:6;9603:2;9591:9;9582:7;9578:23;9574:32;9571:2;;;9609:79;;:::i;:::-;9571:2;9729:1;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9700:117;9561:263;;;;:::o;9830:327::-;9888:6;9937:2;9925:9;9916:7;9912:23;9908:32;9905:2;;;9943:79;;:::i;:::-;9905:2;10063:1;10088:52;10132:7;10123:6;10112:9;10108:22;10088:52;:::i;:::-;10078:62;;10034:116;9895:262;;;;:::o;10163:325::-;10220:6;10269:2;10257:9;10248:7;10244:23;10240:32;10237:2;;;10275:79;;:::i;:::-;10237:2;10395:1;10420:51;10463:7;10454:6;10443:9;10439:22;10420:51;:::i;:::-;10410:61;;10366:115;10227:261;;;;:::o;10494:118::-;10581:24;10599:5;10581:24;:::i;:::-;10576:3;10569:37;10559:53;;:::o;10618:109::-;10699:21;10714:5;10699:21;:::i;:::-;10694:3;10687:34;10677:50;;:::o;10733:118::-;10820:24;10838:5;10820:24;:::i;:::-;10815:3;10808:37;10798:53;;:::o;10857:360::-;10943:3;10971:38;11003:5;10971:38;:::i;:::-;11025:70;11088:6;11083:3;11025:70;:::i;:::-;11018:77;;11104:52;11149:6;11144:3;11137:4;11130:5;11126:16;11104:52;:::i;:::-;11181:29;11203:6;11181:29;:::i;:::-;11176:3;11172:39;11165:46;;10947:270;;;;;:::o;11223:364::-;11311:3;11339:39;11372:5;11339:39;:::i;:::-;11394:71;11458:6;11453:3;11394:71;:::i;:::-;11387:78;;11474:52;11519:6;11514:3;11507:4;11500:5;11496:16;11474:52;:::i;:::-;11551:29;11573:6;11551:29;:::i;:::-;11546:3;11542:39;11535:46;;11315:272;;;;;:::o;11593:366::-;11735:3;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11832:93;11921:3;11832:93;:::i;:::-;11950:2;11945:3;11941:12;11934:19;;11739:220;;;:::o;11965:366::-;12107:3;12128:67;12192:2;12187:3;12128:67;:::i;:::-;12121:74;;12204:93;12293:3;12204:93;:::i;:::-;12322:2;12317:3;12313:12;12306:19;;12111:220;;;:::o;12337:366::-;12479:3;12500:67;12564:2;12559:3;12500:67;:::i;:::-;12493:74;;12576:93;12665:3;12576:93;:::i;:::-;12694:2;12689:3;12685:12;12678:19;;12483:220;;;:::o;12709:366::-;12851:3;12872:67;12936:2;12931:3;12872:67;:::i;:::-;12865:74;;12948:93;13037:3;12948:93;:::i;:::-;13066:2;13061:3;13057:12;13050:19;;12855:220;;;:::o;13081:366::-;13223:3;13244:67;13308:2;13303:3;13244:67;:::i;:::-;13237:74;;13320:93;13409:3;13320:93;:::i;:::-;13438:2;13433:3;13429:12;13422:19;;13227:220;;;:::o;13453:366::-;13595:3;13616:67;13680:2;13675:3;13616:67;:::i;:::-;13609:74;;13692:93;13781:3;13692:93;:::i;:::-;13810:2;13805:3;13801:12;13794:19;;13599:220;;;:::o;13825:366::-;13967:3;13988:67;14052:2;14047:3;13988:67;:::i;:::-;13981:74;;14064:93;14153:3;14064:93;:::i;:::-;14182:2;14177:3;14173:12;14166:19;;13971:220;;;:::o;14197:366::-;14339:3;14360:67;14424:2;14419:3;14360:67;:::i;:::-;14353:74;;14436:93;14525:3;14436:93;:::i;:::-;14554:2;14549:3;14545:12;14538:19;;14343:220;;;:::o;14569:366::-;14711:3;14732:67;14796:2;14791:3;14732:67;:::i;:::-;14725:74;;14808:93;14897:3;14808:93;:::i;:::-;14926:2;14921:3;14917:12;14910:19;;14715:220;;;:::o;14941:366::-;15083:3;15104:67;15168:2;15163:3;15104:67;:::i;:::-;15097:74;;15180:93;15269:3;15180:93;:::i;:::-;15298:2;15293:3;15289:12;15282:19;;15087:220;;;:::o;15313:366::-;15455:3;15476:67;15540:2;15535:3;15476:67;:::i;:::-;15469:74;;15552:93;15641:3;15552:93;:::i;:::-;15670:2;15665:3;15661:12;15654:19;;15459:220;;;:::o;15685:118::-;15772:24;15790:5;15772:24;:::i;:::-;15767:3;15760:37;15750:53;;:::o;15809:129::-;15895:36;15925:5;15895:36;:::i;:::-;15890:3;15883:49;15873:65;;:::o;15944:115::-;16029:23;16046:5;16029:23;:::i;:::-;16024:3;16017:36;16007:52;;:::o;16065:112::-;16148:22;16164:5;16148:22;:::i;:::-;16143:3;16136:35;16126:51;;:::o;16183:222::-;16276:4;16314:2;16303:9;16299:18;16291:26;;16327:71;16395:1;16384:9;16380:17;16371:6;16327:71;:::i;:::-;16281:124;;;;:::o;16411:332::-;16532:4;16570:2;16559:9;16555:18;16547:26;;16583:71;16651:1;16640:9;16636:17;16627:6;16583:71;:::i;:::-;16664:72;16732:2;16721:9;16717:18;16708:6;16664:72;:::i;:::-;16537:206;;;;;:::o;16749:640::-;16944:4;16982:3;16971:9;16967:19;16959:27;;16996:71;17064:1;17053:9;17049:17;17040:6;16996:71;:::i;:::-;17077:72;17145:2;17134:9;17130:18;17121:6;17077:72;:::i;:::-;17159;17227:2;17216:9;17212:18;17203:6;17159:72;:::i;:::-;17278:9;17272:4;17268:20;17263:2;17252:9;17248:18;17241:48;17306:76;17377:4;17368:6;17306:76;:::i;:::-;17298:84;;16949:440;;;;;;;:::o;17395:210::-;17482:4;17520:2;17509:9;17505:18;17497:26;;17533:65;17595:1;17584:9;17580:17;17571:6;17533:65;:::i;:::-;17487:118;;;;:::o;17611:222::-;17704:4;17742:2;17731:9;17727:18;17719:26;;17755:71;17823:1;17812:9;17808:17;17799:6;17755:71;:::i;:::-;17709:124;;;;:::o;17839:545::-;18012:4;18050:3;18039:9;18035:19;18027:27;;18064:71;18132:1;18121:9;18117:17;18108:6;18064:71;:::i;:::-;18145:68;18209:2;18198:9;18194:18;18185:6;18145:68;:::i;:::-;18223:72;18291:2;18280:9;18276:18;18267:6;18223:72;:::i;:::-;18305;18373:2;18362:9;18358:18;18349:6;18305:72;:::i;:::-;18017:367;;;;;;;:::o;18390:313::-;18503:4;18541:2;18530:9;18526:18;18518:26;;18590:9;18584:4;18580:20;18576:1;18565:9;18561:17;18554:47;18618:78;18691:4;18682:6;18618:78;:::i;:::-;18610:86;;18508:195;;;;:::o;18709:533::-;18878:4;18916:2;18905:9;18901:18;18893:26;;18965:9;18959:4;18955:20;18951:1;18940:9;18936:17;18929:47;18993:78;19066:4;19057:6;18993:78;:::i;:::-;18985:86;;19081:72;19149:2;19138:9;19134:18;19125:6;19081:72;:::i;:::-;19163;19231:2;19220:9;19216:18;19207:6;19163:72;:::i;:::-;18883:359;;;;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:419::-;23239:4;23277:2;23266:9;23262:18;23254:26;;23326:9;23320:4;23316:20;23312:1;23301:9;23297:17;23290:47;23354:131;23480:4;23354:131;:::i;:::-;23346:139;;23244:248;;;:::o;23498:419::-;23664:4;23702:2;23691:9;23687:18;23679:26;;23751:9;23745:4;23741:20;23737:1;23726:9;23722:17;23715:47;23779:131;23905:4;23779:131;:::i;:::-;23771:139;;23669:248;;;:::o;23923:222::-;24016:4;24054:2;24043:9;24039:18;24031:26;;24067:71;24135:1;24124:9;24120:17;24111:6;24067:71;:::i;:::-;24021:124;;;;:::o;24151:220::-;24243:4;24281:2;24270:9;24266:18;24258:26;;24294:70;24361:1;24350:9;24346:17;24337:6;24294:70;:::i;:::-;24248:123;;;;:::o;24377:436::-;24523:4;24561:2;24550:9;24546:18;24538:26;;24574:69;24640:1;24629:9;24625:17;24616:6;24574:69;:::i;:::-;24653:72;24721:2;24710:9;24706:18;24697:6;24653:72;:::i;:::-;24735:71;24802:2;24791:9;24787:18;24778:6;24735:71;:::i;:::-;24528:285;;;;;;:::o;24819:214::-;24908:4;24946:2;24935:9;24931:18;24923:26;;24959:67;25023:1;25012:9;25008:17;24999:6;24959:67;:::i;:::-;24913:120;;;;:::o;25039:434::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25235:67;25299:1;25288:9;25284:17;25275:6;25235:67;:::i;:::-;25312:72;25380:2;25369:9;25365:18;25356:6;25312:72;:::i;:::-;25394;25462:2;25451:9;25447:18;25438:6;25394:72;:::i;:::-;25189:284;;;;;;:::o;25479:724::-;25556:4;25562:6;25618:11;25605:25;25718:1;25712:4;25708:12;25697:8;25681:14;25677:29;25673:48;25653:18;25649:73;25639:2;;25726:79;;:::i;:::-;25639:2;25838:18;25828:8;25824:33;25816:41;;25890:4;25877:18;25867:28;;25918:18;25910:6;25907:30;25904:2;;;25940:79;;:::i;:::-;25904:2;26048;26042:4;26038:13;26030:21;;26105:4;26097:6;26093:17;26077:14;26073:38;26067:4;26063:49;26060:2;;;26115:79;;:::i;:::-;26060:2;25569:634;;;;;;:::o;26209:129::-;26243:6;26270:20;;:::i;:::-;26260:30;;26299:33;26327:4;26319:6;26299:33;:::i;:::-;26250:88;;;:::o;26344:75::-;26377:6;26410:2;26404:9;26394:19;;26384:35;:::o;26425:307::-;26486:4;26576:18;26568:6;26565:30;26562:2;;;26598:18;;:::i;:::-;26562:2;26636:29;26658:6;26636:29;:::i;:::-;26628:37;;26720:4;26714;26710:15;26702:23;;26491:241;;;:::o;26738:308::-;26800:4;26890:18;26882:6;26879:30;26876:2;;;26912:18;;:::i;:::-;26876:2;26950:29;26972:6;26950:29;:::i;:::-;26942:37;;27034:4;27028;27024:15;27016:23;;26805:241;;;:::o;27052:98::-;27103:6;27137:5;27131:12;27121:22;;27110:40;;;:::o;27156:99::-;27208:6;27242:5;27236:12;27226:22;;27215:40;;;:::o;27261:168::-;27344:11;27378:6;27373:3;27366:19;27418:4;27413:3;27409:14;27394:29;;27356:73;;;;:::o;27435:169::-;27519:11;27553:6;27548:3;27541:19;27593:4;27588:3;27584:14;27569:29;;27531:73;;;;:::o;27610:305::-;27650:3;27669:20;27687:1;27669:20;:::i;:::-;27664:25;;27703:20;27721:1;27703:20;:::i;:::-;27698:25;;27857:1;27789:66;27785:74;27782:1;27779:81;27776:2;;;27863:18;;:::i;:::-;27776:2;27907:1;27904;27900:9;27893:16;;27654:261;;;;:::o;27921:237::-;27959:3;27978:18;27994:1;27978:18;:::i;:::-;27973:23;;28010:18;28026:1;28010:18;:::i;:::-;28005:23;;28100:1;28094:4;28090:12;28087:1;28084:19;28081:2;;;28106:18;;:::i;:::-;28081:2;28150:1;28147;28143:9;28136:16;;27963:195;;;;:::o;28164:191::-;28204:4;28224:20;28242:1;28224:20;:::i;:::-;28219:25;;28258:20;28276:1;28258:20;:::i;:::-;28253:25;;28297:1;28294;28291:8;28288:2;;;28302:18;;:::i;:::-;28288:2;28347:1;28344;28340:9;28332:17;;28209:146;;;;:::o;28361:188::-;28400:4;28420:19;28437:1;28420:19;:::i;:::-;28415:24;;28453:19;28470:1;28453:19;:::i;:::-;28448:24;;28491:1;28488;28485:8;28482:2;;;28496:18;;:::i;:::-;28482:2;28541:1;28538;28534:9;28526:17;;28405:144;;;;:::o;28555:96::-;28592:7;28621:24;28639:5;28621:24;:::i;:::-;28610:35;;28600:51;;;:::o;28657:90::-;28691:7;28734:5;28727:13;28720:21;28709:32;;28699:48;;;:::o;28753:77::-;28790:7;28819:5;28808:16;;28798:32;;;:::o;28836:126::-;28873:7;28913:42;28906:5;28902:54;28891:65;;28881:81;;;:::o;28968:77::-;29005:7;29034:5;29023:16;;29013:32;;;:::o;29051:101::-;29087:7;29127:18;29120:5;29116:30;29105:41;;29095:57;;;:::o;29158:86::-;29193:7;29233:4;29226:5;29222:16;29211:27;;29201:43;;;:::o;29250:111::-;29299:9;29332:23;29349:5;29332:23;:::i;:::-;29319:36;;29309:52;;;:::o;29367:154::-;29451:6;29446:3;29441;29428:30;29513:1;29504:6;29499:3;29495:16;29488:27;29418:103;;;:::o;29527:307::-;29595:1;29605:113;29619:6;29616:1;29613:13;29605:113;;;29704:1;29699:3;29695:11;29689:18;29685:1;29680:3;29676:11;29669:39;29641:2;29638:1;29634:10;29629:15;;29605:113;;;29736:6;29733:1;29730:13;29727:2;;;29816:1;29807:6;29802:3;29798:16;29791:27;29727:2;29576:258;;;;:::o;29840:320::-;29884:6;29921:1;29915:4;29911:12;29901:22;;29968:1;29962:4;29958:12;29989:18;29979:2;;30045:4;30037:6;30033:17;30023:27;;29979:2;30107;30099:6;30096:14;30076:18;30073:38;30070:2;;;30126:18;;:::i;:::-;30070:2;29891:269;;;;:::o;30166:281::-;30249:27;30271:4;30249:27;:::i;:::-;30241:6;30237:40;30379:6;30367:10;30364:22;30343:18;30331:10;30328:34;30325:62;30322:2;;;30390:18;;:::i;:::-;30322:2;30430:10;30426:2;30419:22;30209:238;;;:::o;30453:167::-;30490:3;30513:22;30529:5;30513:22;:::i;:::-;30504:31;;30557:4;30550:5;30547:15;30544:2;;;30565:18;;:::i;:::-;30544:2;30612:1;30605:5;30601:13;30594:20;;30494:126;;;:::o;30626:180::-;30674:77;30671:1;30664:88;30771:4;30768:1;30761:15;30795:4;30792:1;30785:15;30812:180;30860:77;30857:1;30850:88;30957:4;30954:1;30947:15;30981:4;30978:1;30971:15;30998:180;31046:77;31043:1;31036:88;31143:4;31140:1;31133:15;31167:4;31164:1;31157:15;31184:180;31232:77;31229:1;31222:88;31329:4;31326:1;31319:15;31353:4;31350:1;31343:15;31370:117;31479:1;31476;31469:12;31493:117;31602:1;31599;31592:12;31616:117;31725:1;31722;31715:12;31739:117;31848:1;31845;31838:12;31862:117;31971:1;31968;31961:12;31985:117;32094:1;32091;32084:12;32108:117;32217:1;32214;32207:12;32231:117;32340:1;32337;32330:12;32354:117;32463:1;32460;32453:12;32477:102;32518:6;32569:2;32565:7;32560:2;32553:5;32549:14;32545:28;32535:38;;32525:54;;;:::o;32585:166::-;32725:18;32721:1;32713:6;32709:14;32702:42;32691:60;:::o;32757:177::-;32897:29;32893:1;32885:6;32881:14;32874:53;32863:71;:::o;32940:162::-;33080:14;33076:1;33068:6;33064:14;33057:38;33046:56;:::o;33108:227::-;33248:34;33244:1;33236:6;33232:14;33225:58;33317:10;33312:2;33304:6;33300:15;33293:35;33214:121;:::o;33341:178::-;33481:30;33477:1;33469:6;33465:14;33458:54;33447:72;:::o;33525:182::-;33665:34;33661:1;33653:6;33649:14;33642:58;33631:76;:::o;33713:168::-;33853:20;33849:1;33841:6;33837:14;33830:44;33819:62;:::o;33887:174::-;34027:26;34023:1;34015:6;34011:14;34004:50;33993:68;:::o;34067:170::-;34207:22;34203:1;34195:6;34191:14;34184:46;34173:64;:::o;34243:165::-;34383:17;34379:1;34371:6;34367:14;34360:41;34349:59;:::o;34414:223::-;34554:34;34550:1;34542:6;34538:14;34531:58;34623:6;34618:2;34610:6;34606:15;34599:31;34520:117;:::o;34643:122::-;34716:24;34734:5;34716:24;:::i;:::-;34709:5;34706:35;34696:2;;34755:1;34752;34745:12;34696:2;34686:79;:::o;34771:116::-;34841:21;34856:5;34841:21;:::i;:::-;34834:5;34831:32;34821:2;;34877:1;34874;34867:12;34821:2;34811:76;:::o;34893:122::-;34966:24;34984:5;34966:24;:::i;:::-;34959:5;34956:35;34946:2;;35005:1;35002;34995:12;34946:2;34936:79;:::o;35021:122::-;35094:24;35112:5;35094:24;:::i;:::-;35087:5;35084:35;35074:2;;35133:1;35130;35123:12;35074:2;35064:79;:::o;35149:120::-;35221:23;35238:5;35221:23;:::i;:::-;35214:5;35211:34;35201:2;;35259:1;35256;35249:12;35201:2;35191:78;:::o;35275:118::-;35346:22;35362:5;35346:22;:::i;:::-;35339:5;35336:33;35326:2;;35383:1;35380;35373:12;35326:2;35316:77;:::o
Swarm Source
ipfs://69b956755970daaa1bf9e91e08f08fe01c23b2cd5d14c61a10d1dd974a8d624c
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.