Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60606040 | 5253009 | 2318 days ago | IN | Create: Kernel | 0 ETH | 0.00877982 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Kernel
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-14 */ //File: contracts/acl/IACL.sol pragma solidity ^0.4.18; interface IACL { function initialize(address permissionsCreator) public; function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); } //File: contracts/kernel/IKernel.sol pragma solidity ^0.4.18; interface IKernel { event SetApp(bytes32 indexed namespace, bytes32 indexed name, bytes32 indexed id, address app); function acl() public view returns (IACL); function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); function setApp(bytes32 namespace, bytes32 name, address app) public returns (bytes32 id); function getApp(bytes32 id) public view returns (address); } //File: contracts/kernel/KernelStorage.sol pragma solidity 0.4.18; contract KernelConstants { bytes32 constant public CORE_NAMESPACE = keccak256("core"); bytes32 constant public APP_BASES_NAMESPACE = keccak256("base"); bytes32 constant public APP_ADDR_NAMESPACE = keccak256("app"); bytes32 constant public KERNEL_APP_ID = keccak256("kernel.aragonpm.eth"); bytes32 constant public KERNEL_APP = keccak256(CORE_NAMESPACE, KERNEL_APP_ID); bytes32 constant public ACL_APP_ID = keccak256("acl.aragonpm.eth"); bytes32 constant public ACL_APP = keccak256(APP_ADDR_NAMESPACE, ACL_APP_ID); } contract KernelStorage is KernelConstants { mapping (bytes32 => address) public apps; } //File: contracts/acl/ACLSyntaxSugar.sol pragma solidity 0.4.18; contract ACLSyntaxSugar { function arr() internal pure returns (uint256[] r) {} function arr(bytes32 _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(bytes32 _a, bytes32 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(address _a, address _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), _b, _c); } function arr(address _a, uint256 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, address _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), _c, _d, _e); } function arr(address _a, address _b, address _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(address _a, address _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(uint256 _a) internal pure returns (uint256[] r) { r = new uint256[](1); r[0] = _a; } function arr(uint256 _a, uint256 _b) internal pure returns (uint256[] r) { r = new uint256[](2); r[0] = _a; r[1] = _b; } function arr(uint256 _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { r = new uint256[](3); r[0] = _a; r[1] = _b; r[2] = _c; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d) internal pure returns (uint256[] r) { r = new uint256[](4); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { r = new uint256[](5); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; r[4] = _e; } } contract ACLHelpers { function decodeParamOp(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 30)); } function decodeParamId(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 31)); } function decodeParamsList(uint256 _x) internal pure returns (uint32 a, uint32 b, uint32 c) { a = uint32(_x); b = uint32(_x >> (8 * 4)); c = uint32(_x >> (8 * 8)); } } //File: contracts/apps/IAppProxy.sol pragma solidity 0.4.18; interface IAppProxy { function isUpgradeable() public pure returns (bool); function getCode() public view returns (address); } //File: contracts/apps/AppStorage.sol pragma solidity ^0.4.18; contract AppStorage { IKernel public kernel; bytes32 public appId; address internal pinnedCode; // used by Proxy Pinned uint256 internal initializationBlock; // used by Initializable uint256[95] private storageOffset; // forces App storage to start at after 100 slots uint256 private offset; } //File: contracts/common/Initializable.sol pragma solidity ^0.4.18; contract Initializable is AppStorage { modifier onlyInit { require(initializationBlock == 0); _; } /** * @return Block number in which the contract was initialized */ function getInitializationBlock() public view returns (uint256) { return initializationBlock; } /** * @dev Function to be called by top level contract after initialization has finished. */ function initialized() internal onlyInit { initializationBlock = getBlockNumber(); } /** * @dev Returns the current block number. * Using a function rather than `block.number` allows us to easily mock the block number in * tests. */ function getBlockNumber() internal view returns (uint256) { return block.number; } } //File: contracts/common/DelegateProxy.sol pragma solidity 0.4.18; contract DelegateProxy { /** * @dev Performs a delegatecall and returns whatever the delegatecall returned (entire context execution will return!) * @param _dst Destination address to perform the delegatecall * @param _calldata Calldata for the delegatecall */ function delegatedFwd(address _dst, bytes _calldata) internal { require(isContract(_dst)); assembly { let result := delegatecall(sub(gas, 10000), _dst, add(_calldata, 0x20), mload(_calldata), 0, 0) let size := returndatasize let ptr := mload(0x40) returndatacopy(ptr, 0, size) // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas. // if the call returned error data, forward it switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } function isContract(address _target) internal view returns (bool) { uint256 size; assembly { size := extcodesize(_target) } return size > 0; } } //File: contracts/apps/AppProxyBase.sol pragma solidity 0.4.18; contract AppProxyBase is IAppProxy, AppStorage, DelegateProxy, KernelConstants { /** * @dev Initialize AppProxy * @param _kernel Reference to organization kernel for the app * @param _appId Identifier for app * @param _initializePayload Payload for call to be made after setup to initialize */ function AppProxyBase(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public { kernel = _kernel; appId = _appId; // Implicit check that kernel is actually a Kernel // The EVM doesn't actually provide a way for us to make sure, but we can force a revert to // occur if the kernel is set to 0x0 or a non-code address when we try to call a method on // it. address appCode = getAppBase(appId); // If initialize payload is provided, it will be executed if (_initializePayload.length > 0) { require(isContract(appCode)); // Cannot make delegatecall as a delegateproxy.delegatedFwd as it // returns ending execution context and halts contract deployment require(appCode.delegatecall(_initializePayload)); } } function getAppBase(bytes32 _appId) internal view returns (address) { return kernel.getApp(keccak256(APP_BASES_NAMESPACE, _appId)); } function () payable public { address target = getCode(); require(target != 0); // if app code hasn't been set yet, don't call delegatedFwd(target, msg.data); } } //File: contracts/apps/AppProxyUpgradeable.sol pragma solidity 0.4.18; contract AppProxyUpgradeable is AppProxyBase { address public pinnedCode; /** * @dev Initialize AppProxyUpgradeable (makes it an upgradeable Aragon app) * @param _kernel Reference to organization kernel for the app * @param _appId Identifier for app * @param _initializePayload Payload for call to be made after setup to initialize */ function AppProxyUpgradeable(IKernel _kernel, bytes32 _appId, bytes _initializePayload) AppProxyBase(_kernel, _appId, _initializePayload) public { } function getCode() public view returns (address) { return getAppBase(appId); } function isUpgradeable() public pure returns (bool) { return true; } } //File: contracts/apps/AppProxyPinned.sol pragma solidity 0.4.18; contract AppProxyPinned is AppProxyBase { /** * @dev Initialize AppProxyPinned (makes it an un-upgradeable Aragon app) * @param _kernel Reference to organization kernel for the app * @param _appId Identifier for app * @param _initializePayload Payload for call to be made after setup to initialize */ function AppProxyPinned(IKernel _kernel, bytes32 _appId, bytes _initializePayload) AppProxyBase(_kernel, _appId, _initializePayload) public { pinnedCode = getAppBase(appId); require(pinnedCode != address(0)); } function getCode() public view returns (address) { return pinnedCode; } function isUpgradeable() public pure returns (bool) { return false; } function () payable public { delegatedFwd(getCode(), msg.data); } } //File: contracts/factory/AppProxyFactory.sol pragma solidity 0.4.18; contract AppProxyFactory { event NewAppProxy(address proxy); function newAppProxy(IKernel _kernel, bytes32 _appId) public returns (AppProxyUpgradeable) { return newAppProxy(_kernel, _appId, new bytes(0)); } function newAppProxy(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public returns (AppProxyUpgradeable) { AppProxyUpgradeable proxy = new AppProxyUpgradeable(_kernel, _appId, _initializePayload); NewAppProxy(address(proxy)); return proxy; } function newAppProxyPinned(IKernel _kernel, bytes32 _appId) public returns (AppProxyPinned) { return newAppProxyPinned(_kernel, _appId, new bytes(0)); } function newAppProxyPinned(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public returns (AppProxyPinned) { AppProxyPinned proxy = new AppProxyPinned(_kernel, _appId, _initializePayload); NewAppProxy(address(proxy)); return proxy; } } //File: contracts/kernel/Kernel.sol pragma solidity 0.4.18; contract Kernel is IKernel, KernelStorage, Initializable, AppProxyFactory, ACLSyntaxSugar { bytes32 constant public APP_MANAGER_ROLE = keccak256("APP_MANAGER_ROLE"); /** * @dev Initialize can only be called once. It saves the block number in which it was initialized. * @notice Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions * @param _baseAcl Address of base ACL app * @param _permissionsCreator Entity that will be given permission over createPermission */ function initialize(address _baseAcl, address _permissionsCreator) onlyInit public { initialized(); IACL acl = IACL(newAppProxy(this, ACL_APP_ID)); _setApp(APP_BASES_NAMESPACE, ACL_APP_ID, _baseAcl); _setApp(APP_ADDR_NAMESPACE, ACL_APP_ID, acl); acl.initialize(_permissionsCreator); } /** * @dev Create a new instance of an app linked to this kernel and set its base * implementation if it was not already set * @param _name Name of the app * @param _appBase Address of the app's base implementation * @return AppProxy instance */ function newAppInstance(bytes32 _name, address _appBase) auth(APP_MANAGER_ROLE, arr(APP_BASES_NAMESPACE, _name)) public returns (IAppProxy appProxy) { _setAppIfNew(APP_BASES_NAMESPACE, _name, _appBase); appProxy = newAppProxy(this, _name); } /** * @dev Create a new pinned instance of an app linked to this kernel and set * its base implementation if it was not already set * @param _name Name of the app * @param _appBase Address of the app's base implementation * @return AppProxy instance */ function newPinnedAppInstance(bytes32 _name, address _appBase) auth(APP_MANAGER_ROLE, arr(APP_BASES_NAMESPACE, _name)) public returns (IAppProxy appProxy) { _setAppIfNew(APP_BASES_NAMESPACE, _name, _appBase); appProxy = newAppProxyPinned(this, _name); } /** * @dev Set the resolving address of an app instance or base implementation * @param _namespace App namespace to use * @param _name Name of the app * @param _app Address of the app * @return ID of app */ function setApp(bytes32 _namespace, bytes32 _name, address _app) auth(APP_MANAGER_ROLE, arr(_namespace, _name)) kernelIntegrity public returns (bytes32 id) { return _setApp(_namespace, _name, _app); } /** * @dev Get the address of an app instance or base implementation * @param _id App identifier * @return Address of the app */ function getApp(bytes32 _id) public view returns (address) { return apps[_id]; } /** * @dev Get the installed ACL app * @return ACL app */ function acl() public view returns (IACL) { return IACL(getApp(ACL_APP)); } /** * @dev Function called by apps to check ACL on kernel or to check permission status * @param _who Sender of the original call * @param _where Address of the app * @param _what Identifier for a group of actions in app * @param _how Extra data for ACL auth * @return boolean indicating whether the ACL allows the role or not */ function hasPermission(address _who, address _where, bytes32 _what, bytes _how) public view returns (bool) { return acl().hasPermission(_who, _where, _what, _how); } function _setApp(bytes32 _namespace, bytes32 _name, address _app) internal returns (bytes32 id) { id = keccak256(_namespace, _name); apps[id] = _app; SetApp(_namespace, _name, id, _app); } function _setAppIfNew(bytes32 _namespace, bytes32 _name, address _app) internal returns (bytes32 id) { id = keccak256(_namespace, _name); if (_app != address(0)) { address app = getApp(id); if (app != address(0)) { require(app == _app); } else { apps[id] = _app; SetApp(_namespace, _name, id, _app); } } } modifier auth(bytes32 _role, uint256[] memory params) { bytes memory how; uint256 byteLength = params.length * 32; assembly { how := params // forced casting mstore(how, byteLength) } // Params is invalid from this point fwd require(hasPermission(msg.sender, address(this), _role, how)); _; } modifier kernelIntegrity { _; // After execution check integrity address kernel = getApp(KERNEL_APP); uint256 size; assembly { size := extcodesize(kernel) } require(size > 0); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"KERNEL_APP_ID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"APP_ADDR_NAMESPACE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KERNEL_APP","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"apps","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"bytes32"}],"name":"getApp","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_baseAcl","type":"address"},{"name":"_permissionsCreator","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CORE_NAMESPACE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"appId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_appBase","type":"address"}],"name":"newAppInstance","outputs":[{"name":"appProxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInitializationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"APP_MANAGER_ROLE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_appBase","type":"address"}],"name":"newPinnedAppInstance","outputs":[{"name":"appProxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ACL_APP","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_namespace","type":"bytes32"},{"name":"_name","type":"bytes32"},{"name":"_app","type":"address"}],"name":"setApp","outputs":[{"name":"id","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ACL_APP_ID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"},{"name":"_initializePayload","type":"bytes"}],"name":"newAppProxyPinned","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kernel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"APP_BASES_NAMESPACE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"acl","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"}],"name":"newAppProxy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"},{"name":"_initializePayload","type":"bytes"}],"name":"newAppProxy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_where","type":"address"},{"name":"_what","type":"bytes32"},{"name":"_how","type":"bytes"}],"name":"hasPermission","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"}],"name":"newAppProxyPinned","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proxy","type":"address"}],"name":"NewAppProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"namespace","type":"bytes32"},{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"id","type":"bytes32"},{"indexed":false,"name":"app","type":"address"}],"name":"SetApp","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b6120568061001e6000396000f300606060405260043610620001315763ffffffff60e060020a6000350416631113ed0d811462000136578063178e6079146200015e57806325012699146200017457806338bb6def146200018a57806342c71f1d14620001bf578063485cc95514620001d8578063756f6049146200020257806380afdea8146200021857806380cd5ac3146200022e5780638b3dd74914620002535780638ea8dc9d1462000269578063958fde82146200027f578063a3b4b07f14620002a4578063ae5b254014620002ba578063cbcc65eb14620002e2578063d162f8b014620002f8578063d4aae0c41462000360578063db8a61d41462000376578063de287359146200038c578063e156a8f314620003a2578063ede658b014620003c7578063fdef9106146200042f578063ff289fc514620004b2575b600080fd5b34156200014257600080fd5b6200014c620004d7565b60405190815260200160405180910390f35b34156200016a57600080fd5b6200014c6200050b565b34156200018057600080fd5b6200014c62000528565b34156200019657600080fd5b620001a3600435620005a4565b604051600160a060020a03909116815260200160405180910390f35b3415620001cb57600080fd5b620001a3600435620005bf565b3415620001e457600080fd5b62000200600160a060020a0360043581169060243516620005da565b005b34156200020e57600080fd5b6200014c62000718565b34156200022457600080fd5b6200014c6200074c565b34156200023a57600080fd5b620001a3600435600160a060020a036024351662000752565b34156200025f57600080fd5b6200014c6200080c565b34156200027557600080fd5b6200014c62000812565b34156200028b57600080fd5b620001a3600435600160a060020a036024351662000835565b3415620002b057600080fd5b6200014c620008e4565b3415620002c657600080fd5b6200014c600435602435600160a060020a036044351662000938565b3415620002ee57600080fd5b6200014c62000a4e565b34156200030457600080fd5b620001a360048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000a7195505050505050565b34156200036c57600080fd5b620001a362000b69565b34156200038257600080fd5b6200014c62000b78565b34156200039857600080fd5b620001a362000b96565b3415620003ae57600080fd5b620001a3600160a060020a036004351660243562000bf8565b3415620003d357600080fd5b620001a360048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000c3295505050505050565b34156200043b57600080fd5b6200049e600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000c4295505050505050565b604051901515815260200160405180910390f35b3415620004be57600080fd5b620001a3600160a060020a036004351660243562000d50565b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b60405160ec60020a62061707028152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b600060208190529081526040902054600160a060020a031681565b600090815260208190526040902054600160a060020a031690565b60045460009015620005eb57600080fd5b620005f562000d83565b620006203060405160008051602062001feb8339815191528152601001604051809103902062000bf8565b90506200066860405160e060020a6362617365028152600401604051809103902060405160008051602062001feb833981519152815260100160405180910390208562000da0565b50620006ae60405160ec60020a62061707028152600301604051809103902060405160008051602062001feb833981519152815260100160405180910390208362000da0565b5080600160a060020a031663c4d66de88360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515620006fe57600080fd5b6102c65a03f115156200071057600080fd5b505050505050565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60025481565b60006040516000805160206200200b833981519152815260100160405180910390206200079a60405160e060020a636261736502815260040160405180910390208562000e3f565b620007a462000faa565b600082516020029050829150808252620007c13330868562000c42565b1515620007cd57600080fd5b620007f460405160e060020a63626173650281526004016040518091039020888862000e55565b5062000801308862000bf8565b979650505050505050565b60045490565b6040516000805160206200200b8339815191528152601001604051809103902081565b60006040516000805160206200200b833981519152815260100160405180910390206200087d60405160e060020a636261736502815260040160405180910390208562000e3f565b6200088762000faa565b600082516020029050829150808252620008a43330868562000c42565b1515620008b057600080fd5b620008d760405160e060020a63626173650281526004016040518091039020888862000e55565b5062000801308862000d50565b60405160ec60020a62061707028152600301604051809103902060405160008051602062001feb83398151915281526010016040518091039020604051918252602082015260409081019051809103902081565b60006040516000805160206200200b8339815191528152601001604051809103902062000966858562000e3f565b6200097062000faa565b6000825160200290508291508082526200098d3330868562000c42565b15156200099957600080fd5b600080620009a98a8a8a62000da0565b965062000a2e6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e65746800000000000000000000000000815260130160405180910390206040519182526020820152604090810190518091039020620005bf565b915050803b6000811162000a4157600080fd5b5050505050509392505050565b60405160008051602062001feb8339815191528152601001604051809103902081565b60008084848462000a8162000fbc565b600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b8381101562000ad257808201518382015260200162000ab8565b50505050905090810190601f16801562000b005780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562000b1e57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051600160a060020a03909116815260200160405180910390a18091505b509392505050565b600154600160a060020a031681565b60405160e060020a6362617365028152600401604051809103902081565b600062000bf360405160ec60020a62061707028152600301604051809103902060405160008051602062001feb833981519152815260100160405180910390206040519182526020820152604090810190518091039020620005bf565b905090565b600062000c2b8383600060405180591062000c105750595b818152601f19601f8301168101602001604052905062000c32565b9392505050565b60008084848462000a8162000fcd565b600062000c4e62000b96565b600160a060020a031663fdef91068686868660006040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b8381101562000cdc57808201518382015260200162000cc2565b50505050905090810190601f16801562000d0a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151562000d2c57600080fd5b6102c65a03f1151562000d3e57600080fd5b50505060405180519695505050505050565b600062000c2b8383600060405180591062000d685750595b818152601f19601f8301168101602001604052905062000a71565b6004541562000d9157600080fd5b62000d9b62000f41565b600455565b6000838360405191825260208201526040908101905190819003902060008181526020819052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790559091508190849086907fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52290869051600160a060020a03909116815260200160405180910390a49392505050565b62000e4962000faa565b62000c2b838362000f45565b60008084846040519182526020820152604090810190519081900390209150600160a060020a0383161562000b615762000e8f82620005bf565b9050600160a060020a0381161562000ec057600160a060020a038181169084161462000eba57600080fd5b62000b61565b60008281526020819052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558290859087907fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52290879051600160a060020a03909116815260200160405180910390a4509392505050565b4390565b62000f4f62000faa565b600260405180591062000f5f5750595b90808252806020026020018201604052509050828160008151811062000f8157fe5b60209081029091010152818160018151811062000f9a57fe5b6020908102909101015292915050565b60206040519081016040526000815290565b6040516107fe8062000fdf83390190565b60405161080e80620017dd8339019056006060604052341561000f57600080fd5b6040516107fe3803806107fe83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a0387161781556001859055920191849150839083906100738364010000000061017881026104901704565b9050600082511115610124576100958164010000000061048861024b82021704565b15156100a057600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100d55780820151838201526020016100bd565b50505050905090810190601f1680156101025780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561012457600080fd5b5050505061014660015461017864010000000002610490176401000000009004565b60028054600160a060020a031916600160a060020a03928316179081905516151561017057600080fd5b505050610253565b60008054600160a060020a03166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b151561022b57600080fd5b6102c65a03f1151561023c57600080fd5b50505060405180519392505050565b6000903b1190565b61059c806102626000396000f3006060604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631113ed0d81146100f1578063178e6079146101165780632501269914610129578063756f60491461013c57806380afdea81461014f578063a3b4b07f14610162578063cbcc65eb14610175578063d4aae0c414610188578063daa3a163146101c4578063db8a61d4146101eb578063ea879634146101fe575b6100ef6100b961020d565b6000368080601f016020809104026020016040519081016040528181529291906020840183838082843750610229945050505050565b005b34156100fc57600080fd5b610104610265565b60405190815260200160405180910390f35b341561012157600080fd5b610104610299565b341561013457600080fd5b6101046102cd565b341561014757600080fd5b610104610349565b341561015a57600080fd5b61010461037d565b341561016d57600080fd5b610104610383565b341561018057600080fd5b6101046103ff565b341561019357600080fd5b61019b610433565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156101cf57600080fd5b6101d761044f565b604051901515815260200160405180910390f35b34156101f657600080fd5b610104610454565b341561020957600080fd5b61019b5b60025473ffffffffffffffffffffffffffffffffffffffff1690565b61023282610488565b151561023d57600080fd5b600080825160208401856127105a03f43d604051816000823e828015610261578282f35b8282fd5b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6040517f61707000000000000000000000000000000000000000000000000000000000008152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60015481565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081526010016040518091039020604051918252602082015260409081019051809103902081565b6040517f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152601001604051809103902081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600090565b6040517f62617365000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b6000903b1190565b6000805473ffffffffffffffffffffffffffffffffffffffff166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b151561055057600080fd5b6102c65a03f1151561056157600080fd5b505050604051805193925050505600a165627a7a72305820a0536f883c1ae9b78054e0524dc54ee8dd5c1c4c821ea2234ac247266340e88800296060604052341561000f57600080fd5b60405161080e38038061080e83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a0387161781556001859055920191849150839083906100738364010000000061013081026104e01704565b905060008251111561012457610095816401000000006105c061020382021704565b15156100a057600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100d55780820151838201526020016100bd565b50505050905090810190601f1680156101025780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561012457600080fd5b5050505050505061020b565b60008054600160a060020a03166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156101e357600080fd5b6102c65a03f115156101f457600080fd5b50505060405180519392505050565b6000903b1190565b6105f48061021a6000396000f3006060604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631113ed0d8114610124578063178e607914610149578063250126991461015c5780633bc7ebac1461016f578063756f6049146101ab57806380afdea8146101be578063a3b4b07f146101d1578063cbcc65eb146101e4578063d4aae0c4146101f7578063daa3a1631461020a578063db8a61d414610231578063ea87963414610244575b60006100c3610253565b905073ffffffffffffffffffffffffffffffffffffffff811615156100e757600080fd5b610121816000368080601f016020809104026020016040519081016040528181529291906020840183838082843750610265945050505050565b50005b341561012f57600080fd5b6101376102a1565b60405190815260200160405180910390f35b341561015457600080fd5b6101376102d5565b341561016757600080fd5b610137610309565b341561017a57600080fd5b610182610385565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156101b657600080fd5b6101376103a1565b34156101c957600080fd5b6101376103d5565b34156101dc57600080fd5b6101376103db565b34156101ef57600080fd5b610137610457565b341561020257600080fd5b61018261048b565b341561021557600080fd5b61021d6104a7565b604051901515815260200160405180910390f35b341561023c57600080fd5b6101376104ac565b341561024f57600080fd5b6101825b60006102606001546104e0565b905090565b61026e826105c0565b151561027957600080fd5b600080825160208401856127105a03f43d604051816000823e82801561029d578282f35b8282fd5b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6040517f61707000000000000000000000000000000000000000000000000000000000008152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60645473ffffffffffffffffffffffffffffffffffffffff1681565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60015481565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081526010016040518091039020604051918252602082015260409081019051809103902081565b6040517f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152601001604051809103902081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600190565b6040517f62617365000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b6000805473ffffffffffffffffffffffffffffffffffffffff166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156105a057600080fd5b6102c65a03f115156105b157600080fd5b50505060405180519392505050565b6000903b11905600a165627a7a723058202b969e041cba9a819bb1feb58ebb8e31cb47eeb07b69105f272f8a98e475526c002961636c2e617261676f6e706d2e657468000000000000000000000000000000004150505f4d414e414745525f524f4c4500000000000000000000000000000000a165627a7a7230582099b362aedaa258d311c36caf494b0d0daf00333ca8cd976c3041285e378b582c0029
Deployed Bytecode
0x606060405260043610620001315763ffffffff60e060020a6000350416631113ed0d811462000136578063178e6079146200015e57806325012699146200017457806338bb6def146200018a57806342c71f1d14620001bf578063485cc95514620001d8578063756f6049146200020257806380afdea8146200021857806380cd5ac3146200022e5780638b3dd74914620002535780638ea8dc9d1462000269578063958fde82146200027f578063a3b4b07f14620002a4578063ae5b254014620002ba578063cbcc65eb14620002e2578063d162f8b014620002f8578063d4aae0c41462000360578063db8a61d41462000376578063de287359146200038c578063e156a8f314620003a2578063ede658b014620003c7578063fdef9106146200042f578063ff289fc514620004b2575b600080fd5b34156200014257600080fd5b6200014c620004d7565b60405190815260200160405180910390f35b34156200016a57600080fd5b6200014c6200050b565b34156200018057600080fd5b6200014c62000528565b34156200019657600080fd5b620001a3600435620005a4565b604051600160a060020a03909116815260200160405180910390f35b3415620001cb57600080fd5b620001a3600435620005bf565b3415620001e457600080fd5b62000200600160a060020a0360043581169060243516620005da565b005b34156200020e57600080fd5b6200014c62000718565b34156200022457600080fd5b6200014c6200074c565b34156200023a57600080fd5b620001a3600435600160a060020a036024351662000752565b34156200025f57600080fd5b6200014c6200080c565b34156200027557600080fd5b6200014c62000812565b34156200028b57600080fd5b620001a3600435600160a060020a036024351662000835565b3415620002b057600080fd5b6200014c620008e4565b3415620002c657600080fd5b6200014c600435602435600160a060020a036044351662000938565b3415620002ee57600080fd5b6200014c62000a4e565b34156200030457600080fd5b620001a360048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000a7195505050505050565b34156200036c57600080fd5b620001a362000b69565b34156200038257600080fd5b6200014c62000b78565b34156200039857600080fd5b620001a362000b96565b3415620003ae57600080fd5b620001a3600160a060020a036004351660243562000bf8565b3415620003d357600080fd5b620001a360048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000c3295505050505050565b34156200043b57600080fd5b6200049e600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965062000c4295505050505050565b604051901515815260200160405180910390f35b3415620004be57600080fd5b620001a3600160a060020a036004351660243562000d50565b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b60405160ec60020a62061707028152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b600060208190529081526040902054600160a060020a031681565b600090815260208190526040902054600160a060020a031690565b60045460009015620005eb57600080fd5b620005f562000d83565b620006203060405160008051602062001feb8339815191528152601001604051809103902062000bf8565b90506200066860405160e060020a6362617365028152600401604051809103902060405160008051602062001feb833981519152815260100160405180910390208562000da0565b50620006ae60405160ec60020a62061707028152600301604051809103902060405160008051602062001feb833981519152815260100160405180910390208362000da0565b5080600160a060020a031663c4d66de88360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515620006fe57600080fd5b6102c65a03f115156200071057600080fd5b505050505050565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60025481565b60006040516000805160206200200b833981519152815260100160405180910390206200079a60405160e060020a636261736502815260040160405180910390208562000e3f565b620007a462000faa565b600082516020029050829150808252620007c13330868562000c42565b1515620007cd57600080fd5b620007f460405160e060020a63626173650281526004016040518091039020888862000e55565b5062000801308862000bf8565b979650505050505050565b60045490565b6040516000805160206200200b8339815191528152601001604051809103902081565b60006040516000805160206200200b833981519152815260100160405180910390206200087d60405160e060020a636261736502815260040160405180910390208562000e3f565b6200088762000faa565b600082516020029050829150808252620008a43330868562000c42565b1515620008b057600080fd5b620008d760405160e060020a63626173650281526004016040518091039020888862000e55565b5062000801308862000d50565b60405160ec60020a62061707028152600301604051809103902060405160008051602062001feb83398151915281526010016040518091039020604051918252602082015260409081019051809103902081565b60006040516000805160206200200b8339815191528152601001604051809103902062000966858562000e3f565b6200097062000faa565b6000825160200290508291508082526200098d3330868562000c42565b15156200099957600080fd5b600080620009a98a8a8a62000da0565b965062000a2e6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e65746800000000000000000000000000815260130160405180910390206040519182526020820152604090810190518091039020620005bf565b915050803b6000811162000a4157600080fd5b5050505050509392505050565b60405160008051602062001feb8339815191528152601001604051809103902081565b60008084848462000a8162000fbc565b600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b8381101562000ad257808201518382015260200162000ab8565b50505050905090810190601f16801562000b005780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562000b1e57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051600160a060020a03909116815260200160405180910390a18091505b509392505050565b600154600160a060020a031681565b60405160e060020a6362617365028152600401604051809103902081565b600062000bf360405160ec60020a62061707028152600301604051809103902060405160008051602062001feb833981519152815260100160405180910390206040519182526020820152604090810190518091039020620005bf565b905090565b600062000c2b8383600060405180591062000c105750595b818152601f19601f8301168101602001604052905062000c32565b9392505050565b60008084848462000a8162000fcd565b600062000c4e62000b96565b600160a060020a031663fdef91068686868660006040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b8381101562000cdc57808201518382015260200162000cc2565b50505050905090810190601f16801562000d0a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151562000d2c57600080fd5b6102c65a03f1151562000d3e57600080fd5b50505060405180519695505050505050565b600062000c2b8383600060405180591062000d685750595b818152601f19601f8301168101602001604052905062000a71565b6004541562000d9157600080fd5b62000d9b62000f41565b600455565b6000838360405191825260208201526040908101905190819003902060008181526020819052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790559091508190849086907fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52290869051600160a060020a03909116815260200160405180910390a49392505050565b62000e4962000faa565b62000c2b838362000f45565b60008084846040519182526020820152604090810190519081900390209150600160a060020a0383161562000b615762000e8f82620005bf565b9050600160a060020a0381161562000ec057600160a060020a038181169084161462000eba57600080fd5b62000b61565b60008281526020819052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558290859087907fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52290879051600160a060020a03909116815260200160405180910390a4509392505050565b4390565b62000f4f62000faa565b600260405180591062000f5f5750595b90808252806020026020018201604052509050828160008151811062000f8157fe5b60209081029091010152818160018151811062000f9a57fe5b6020908102909101015292915050565b60206040519081016040526000815290565b6040516107fe8062000fdf83390190565b60405161080e80620017dd8339019056006060604052341561000f57600080fd5b6040516107fe3803806107fe83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a0387161781556001859055920191849150839083906100738364010000000061017881026104901704565b9050600082511115610124576100958164010000000061048861024b82021704565b15156100a057600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100d55780820151838201526020016100bd565b50505050905090810190601f1680156101025780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561012457600080fd5b5050505061014660015461017864010000000002610490176401000000009004565b60028054600160a060020a031916600160a060020a03928316179081905516151561017057600080fd5b505050610253565b60008054600160a060020a03166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b151561022b57600080fd5b6102c65a03f1151561023c57600080fd5b50505060405180519392505050565b6000903b1190565b61059c806102626000396000f3006060604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631113ed0d81146100f1578063178e6079146101165780632501269914610129578063756f60491461013c57806380afdea81461014f578063a3b4b07f14610162578063cbcc65eb14610175578063d4aae0c414610188578063daa3a163146101c4578063db8a61d4146101eb578063ea879634146101fe575b6100ef6100b961020d565b6000368080601f016020809104026020016040519081016040528181529291906020840183838082843750610229945050505050565b005b34156100fc57600080fd5b610104610265565b60405190815260200160405180910390f35b341561012157600080fd5b610104610299565b341561013457600080fd5b6101046102cd565b341561014757600080fd5b610104610349565b341561015a57600080fd5b61010461037d565b341561016d57600080fd5b610104610383565b341561018057600080fd5b6101046103ff565b341561019357600080fd5b61019b610433565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156101cf57600080fd5b6101d761044f565b604051901515815260200160405180910390f35b34156101f657600080fd5b610104610454565b341561020957600080fd5b61019b5b60025473ffffffffffffffffffffffffffffffffffffffff1690565b61023282610488565b151561023d57600080fd5b600080825160208401856127105a03f43d604051816000823e828015610261578282f35b8282fd5b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6040517f61707000000000000000000000000000000000000000000000000000000000008152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60015481565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081526010016040518091039020604051918252602082015260409081019051809103902081565b6040517f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152601001604051809103902081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600090565b6040517f62617365000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b6000903b1190565b6000805473ffffffffffffffffffffffffffffffffffffffff166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b151561055057600080fd5b6102c65a03f1151561056157600080fd5b505050604051805193925050505600a165627a7a72305820a0536f883c1ae9b78054e0524dc54ee8dd5c1c4c821ea2234ac247266340e88800296060604052341561000f57600080fd5b60405161080e38038061080e83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a0387161781556001859055920191849150839083906100738364010000000061013081026104e01704565b905060008251111561012457610095816401000000006105c061020382021704565b15156100a057600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100d55780820151838201526020016100bd565b50505050905090810190601f1680156101025780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561012457600080fd5b5050505050505061020b565b60008054600160a060020a03166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156101e357600080fd5b6102c65a03f115156101f457600080fd5b50505060405180519392505050565b6000903b1190565b6105f48061021a6000396000f3006060604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631113ed0d8114610124578063178e607914610149578063250126991461015c5780633bc7ebac1461016f578063756f6049146101ab57806380afdea8146101be578063a3b4b07f146101d1578063cbcc65eb146101e4578063d4aae0c4146101f7578063daa3a1631461020a578063db8a61d414610231578063ea87963414610244575b60006100c3610253565b905073ffffffffffffffffffffffffffffffffffffffff811615156100e757600080fd5b610121816000368080601f016020809104026020016040519081016040528181529291906020840183838082843750610265945050505050565b50005b341561012f57600080fd5b6101376102a1565b60405190815260200160405180910390f35b341561015457600080fd5b6101376102d5565b341561016757600080fd5b610137610309565b341561017a57600080fd5b610182610385565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156101b657600080fd5b6101376103a1565b34156101c957600080fd5b6101376103d5565b34156101dc57600080fd5b6101376103db565b34156101ef57600080fd5b610137610457565b341561020257600080fd5b61018261048b565b341561021557600080fd5b61021d6104a7565b604051901515815260200160405180910390f35b341561023c57600080fd5b6101376104ac565b341561024f57600080fd5b6101825b60006102606001546104e0565b905090565b61026e826105c0565b151561027957600080fd5b600080825160208401856127105a03f43d604051816000823e82801561029d578282f35b8282fd5b6040517f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6040517f61707000000000000000000000000000000000000000000000000000000000008152600301604051809103902081565b6040517f636f726500000000000000000000000000000000000000000000000000000000815260040160405180910390206040517f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60645473ffffffffffffffffffffffffffffffffffffffff1681565b6040517f636f7265000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b60015481565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081526010016040518091039020604051918252602082015260409081019051809103902081565b6040517f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152601001604051809103902081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600190565b6040517f62617365000000000000000000000000000000000000000000000000000000008152600401604051809103902081565b6000805473ffffffffffffffffffffffffffffffffffffffff166342c71f1d6040517f6261736500000000000000000000000000000000000000000000000000000000815260040160405180910390208460405191825260208201526040908101905180910390206000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156105a057600080fd5b6102c65a03f115156105b157600080fd5b50505060405180519392505050565b6000903b11905600a165627a7a723058202b969e041cba9a819bb1feb58ebb8e31cb47eeb07b69105f272f8a98e475526c002961636c2e617261676f6e706d2e657468000000000000000000000000000000004150505f4d414e414745525f524f4c4500000000000000000000000000000000a165627a7a7230582099b362aedaa258d311c36caf494b0d0daf00333ca8cd976c3041285e378b582c0029
Swarm Source
bzzr://99b362aedaa258d311c36caf494b0d0daf00333ca8cd976c3041285e378b582c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.