Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- Config
- Optimization enabled
- true
- Compiler version
- v0.4.24+commit.e67f0147
- Optimization runs
- 200
- EVM Version
- byzantium
- Verified at
- 2026-04-18T17:26:10.996768Z
Config.sol
pragma solidity 0.4.24;
contract DSNote {
event LogNote(
bytes4 indexed sig,
address indexed guy,
bytes32 indexed foo,
bytes32 indexed bar,
uint wad,
bytes fax
) anonymous;
modifier note {
bytes32 foo;
bytes32 bar;
assembly {
foo := calldataload(4)
bar := calldataload(36)
}
emit LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);
_;
}
}
contract DSAuthority {
function canCall(address src, address dst, bytes4 sig) public view returns (bool);
}
contract DSAuthEvents {
event LogSetAuthority (address indexed authority);
event LogSetOwner (address indexed owner);
}
contract DSAuth is DSAuthEvents {
DSAuthority public authority;
address public owner;
constructor() public {
owner = msg.sender;
emit LogSetOwner(msg.sender);
}
function setOwner(address owner_)
public
auth
{
owner = owner_;
emit LogSetOwner(owner);
}
function setAuthority(DSAuthority authority_)
public
auth
{
authority = authority_;
emit LogSetAuthority(authority);
}
modifier auth {
require(isAuthorized(msg.sender, msg.sig), "DSAuth::_ SENDER_NOT_AUTHORIZED");
_;
}
function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
if (src == address(this)) {
return true;
} else if (src == owner) {
return true;
} else if (authority == DSAuthority(0)) {
return false;
} else {
return authority.canCall(src, this, sig);
}
}
}
contract WETH9 {
string public name = "Wrapped Ether";
string public symbol = "WETH";
uint8 public decimals = 18;
event Approval(address indexed _owner, address indexed _spender, uint _value);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Deposit(address indexed _owner, uint _value);
event Withdrawal(address indexed _owner, uint _value);
mapping (address => uint) public balanceOf;
mapping (address => mapping (address => uint)) public allowance;
function() public payable {
deposit();
}
function deposit() public payable {
balanceOf[msg.sender] += msg.value;
Deposit(msg.sender, msg.value);
}
function withdraw(uint wad) public {
require(balanceOf[msg.sender] >= wad);
balanceOf[msg.sender] -= wad;
msg.sender.transfer(wad);
Withdrawal(msg.sender, wad);
}
function totalSupply() public view returns (uint) {
return this.balance;
}
function approve(address guy, uint wad) public returns (bool) {
allowance[msg.sender][guy] = wad;
Approval(msg.sender, guy, wad);
return true;
}
function transfer(address dst, uint wad) public returns (bool) {
return transferFrom(msg.sender, dst, wad);
}
function transferFrom(address src, address dst, uint wad)
public
returns (bool)
{
require(balanceOf[src] >= wad);
if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
require(allowance[src][msg.sender] >= wad);
allowance[src][msg.sender] -= wad;
}
balanceOf[src] -= wad;
balanceOf[dst] += wad;
Transfer(src, dst, wad);
return true;
}
}
contract Utils {
modifier addressValid(address _address) {
require(_address != address(0), "Utils::_ INVALID_ADDRESS");
_;
}
}
contract Config is DSNote, DSAuth, Utils {
WETH9 public weth9;
mapping (address => bool) public isAccountHandler;
mapping (address => bool) public isAdmin;
address[] public admins;
bool public disableAdminControl = false;
event LogAdminAdded(address indexed _admin, address _by);
event LogAdminRemoved(address indexed _admin, address _by);
constructor() public {
admins.push(msg.sender);
isAdmin[msg.sender] = true;
}
modifier onlyAdmin(){
require(isAdmin[msg.sender], "Config::_ SENDER_NOT_AUTHORIZED");
_;
}
function setWETH9
(
address _weth9
)
public
auth
note
addressValid(_weth9)
{
weth9 = WETH9(_weth9);
}
function setAccountHandler
(
address _accountHandler,
bool _isAccountHandler
)
public
auth
note
addressValid(_accountHandler)
{
isAccountHandler[_accountHandler] = _isAccountHandler;
}
function toggleAdminsControl()
public
auth
note
{
disableAdminControl = !disableAdminControl;
}
function isAdminValid(address _admin)
public
view
returns (bool)
{
if(disableAdminControl) {
return true;
} else {
return isAdmin[_admin];
}
}
function getAllAdmins()
public
view
returns(address[])
{
return admins;
}
function addAdmin
(
address _admin
)
external
note
onlyAdmin
addressValid(_admin)
{
require(!isAdmin[_admin], "Config::addAdmin ADMIN_ALREADY_EXISTS");
admins.push(_admin);
isAdmin[_admin] = true;
emit LogAdminAdded(_admin, msg.sender);
}
function removeAdmin
(
address _admin
)
external
note
onlyAdmin
addressValid(_admin)
{
require(isAdmin[_admin], "Config::removeAdmin ADMIN_DOES_NOT_EXIST");
require(msg.sender != _admin, "Config::removeAdmin ADMIN_NOT_AUTHORIZED");
isAdmin[_admin] = false;
for (uint i = 0; i < admins.length - 1; i++) {
if (admins[i] == _admin) {
admins[i] = admins[admins.length - 1];
admins.length -= 1;
break;
}
}
emit LogAdminRemoved(_admin, msg.sender);
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"byzantium","compilationTarget":{"Config.sol":"Config"}}
Contract ABI
[{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setOwner","inputs":[{"type":"address","name":"owner_"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"admins","inputs":[{"type":"uint256","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"removeAdmin","inputs":[{"type":"address","name":"_admin"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isAdmin","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"weth9","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"disableAdminControl","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isAccountHandler","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addAdmin","inputs":[{"type":"address","name":"_admin"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setAuthority","inputs":[{"type":"address","name":"authority_"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"toggleAdminsControl","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isAdminValid","inputs":[{"type":"address","name":"_admin"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"authority","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setAccountHandler","inputs":[{"type":"address","name":"_accountHandler"},{"type":"bool","name":"_isAccountHandler"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setWETH9","inputs":[{"type":"address","name":"_weth9"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address[]","name":""}],"name":"getAllAdmins","inputs":[],"constant":true},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"LogAdminAdded","inputs":[{"type":"address","name":"_admin","indexed":true},{"type":"address","name":"_by","indexed":false}],"anonymous":false},{"type":"event","name":"LogAdminRemoved","inputs":[{"type":"address","name":"_admin","indexed":true},{"type":"address","name":"_by","indexed":false}],"anonymous":false},{"type":"event","name":"LogSetAuthority","inputs":[{"type":"address","name":"authority","indexed":true}],"anonymous":false},{"type":"event","name":"LogSetOwner","inputs":[{"type":"address","name":"owner","indexed":true}],"anonymous":false},{"type":"event","name":"LogNote","inputs":[{"type":"bytes4","name":"sig","indexed":true},{"type":"address","name":"guy","indexed":true},{"type":"bytes32","name":"foo","indexed":true},{"type":"bytes32","name":"bar","indexed":true},{"type":"uint256","name":"wad","indexed":false},{"type":"bytes","name":"fax","indexed":false}],"anonymous":true}]
Contract Creation Code
0x60806040526006805460ff1916905534801561001a57600080fd5b5060018054600160a060020a031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a031916339081179091556000908152600460205260409020805460ff19169091179055611046806100c26000396000f3006080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146100ea57806314bfd6d01461010d5780631785f53c1461014157806324d7806c1461016257806350879c1c146101975780635eafe8d8146101ac5780636147f6d2146101c157806370480275146101e25780637a9e5e4b146102035780637f01720d146102245780638da5cb5b146102395780639c14ee291461024e578063bf7e214f1461026f578063c7276e9214610284578063ca91e18c146102aa578063e9523c97146102cb575b600080fd5b3480156100f657600080fd5b5061010b600160a060020a0360043516610330565b005b34801561011957600080fd5b506101256004356103e7565b60408051600160a060020a039092168252519081900360200190f35b34801561014d57600080fd5b5061010b600160a060020a036004351661040f565b34801561016e57600080fd5b50610183600160a060020a0360043516610778565b604080519115158252519081900360200190f35b3480156101a357600080fd5b5061012561078d565b3480156101b857600080fd5b5061018361079c565b3480156101cd57600080fd5b50610183600160a060020a03600435166107a5565b3480156101ee57600080fd5b5061010b600160a060020a03600435166107ba565b34801561020f57600080fd5b5061010b600160a060020a0360043516610a07565b34801561023057600080fd5b5061010b610aba565b34801561024557600080fd5b50610125610b7b565b34801561025a57600080fd5b50610183600160a060020a0360043516610b8a565b34801561027b57600080fd5b50610125610bc3565b34801561029057600080fd5b5061010b600160a060020a03600435166024351515610bd2565b3480156102b657600080fd5b5061010b600160a060020a0360043516610cfa565b3480156102d757600080fd5b506102e0610e27565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561031c578181015183820152602001610304565b505050509050019250505060405180910390f35b61034633600035600160e060020a031916610e8a565b151561038a576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60058054829081106103f557fe5b600091825260209091200154600160a060020a0316905081565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a43360009081526004602052604090205460ff1615156104cd576040805160e560020a62461bcd02815260206004820152601f60248201527f436f6e6669673a3a5f2053454e4445525f4e4f545f415554484f52495a454400604482015290519081900360640190fd5b83600160a060020a038116151561051c576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b600160a060020a03851660009081526004602052604090205460ff1615156105b4576040805160e560020a62461bcd02815260206004820152602860248201527f436f6e6669673a3a72656d6f766541646d696e2041444d494e5f444f45535f4e60448201527f4f545f4558495354000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600160a060020a038616141561063b576040805160e560020a62461bcd02815260206004820152602860248201527f436f6e6669673a3a72656d6f766541646d696e2041444d494e5f4e4f545f415560448201527f54484f52495a4544000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0385166000908152600460205260408120805460ff1916905593505b600554600019018410156107325784600160a060020a031660058581548110151561068557fe5b600091825260209091200154600160a060020a03161415610727576005805460001981019081106106b257fe5b60009182526020909120015460058054600160a060020a0390921691869081106106d857fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805460001901906107219082610f93565b50610732565b60019093019261065e565b604080513381529051600160a060020a038716917f0e9c3d5158f2afec017f5bfea4499c194908991c19a404c674869e25947fd891919081900360200190a25050505050565b60046020526000908152604090205460ff1681565b600254600160a060020a031681565b60065460ff1681565b60036020526000908152604090205460ff1681565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a43360009081526004602052604090205460ff161515610874576040805160e560020a62461bcd02815260206004820152601f60248201527f436f6e6669673a3a5f2053454e4445525f4e4f545f415554484f52495a454400604482015290519081900360640190fd5b82600160a060020a03811615156108c3576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b600160a060020a03841660009081526004602052604090205460ff161561095a576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e6669673a3a61646441646d696e2041444d494e5f414c52454144595f4560448201527f5849535453000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005805460018082019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716908117909155600081815260046020908152604091829020805460ff19169094179093558051338152905191927ffaee0269330752c7a43c8c1bfb334358e99a8ba5efb07a56b419ae8bdd279fa992918290030190a250505050565b610a1d33600035600160e060020a031916610e8a565b1515610a61576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b610ad033600035600160e060020a031916610e8a565b1515610b14576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506006805460ff19811660ff90911615179055565b600154600160a060020a031681565b60065460009060ff1615610ba057506001610bbe565b50600160a060020a03811660009081526004602052604090205460ff165b919050565b600054600160a060020a031681565b610be833600035600160e060020a031916610e8a565b1515610c2c576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a483600160a060020a0381161515610ccc576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b505050600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b610d1033600035600160e060020a031916610e8a565b1515610d54576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a482600160a060020a0381161515610df4576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60606005805480602002602001604051908101604052809291908181526020018280548015610e7f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e61575b505050505090505b90565b6000600160a060020a038316301415610ea557506001610f8d565b600154600160a060020a0384811691161415610ec357506001610f8d565b600054600160a060020a03161515610edd57506000610f8d565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b505050506040513d6020811015610f8857600080fd5b505190505b92915050565b815481835581811115610fb757600083815260209020610fb7918101908301610fbc565b505050565b610e8791905b80821115610fd65760008155600101610fc2565b509056004453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a7230582068b9c288f5dbff6d646552d0b0ac1b96309f0117cfd568ff04bc701d622800b80029
Deployed ByteCode
0x6080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146100ea57806314bfd6d01461010d5780631785f53c1461014157806324d7806c1461016257806350879c1c146101975780635eafe8d8146101ac5780636147f6d2146101c157806370480275146101e25780637a9e5e4b146102035780637f01720d146102245780638da5cb5b146102395780639c14ee291461024e578063bf7e214f1461026f578063c7276e9214610284578063ca91e18c146102aa578063e9523c97146102cb575b600080fd5b3480156100f657600080fd5b5061010b600160a060020a0360043516610330565b005b34801561011957600080fd5b506101256004356103e7565b60408051600160a060020a039092168252519081900360200190f35b34801561014d57600080fd5b5061010b600160a060020a036004351661040f565b34801561016e57600080fd5b50610183600160a060020a0360043516610778565b604080519115158252519081900360200190f35b3480156101a357600080fd5b5061012561078d565b3480156101b857600080fd5b5061018361079c565b3480156101cd57600080fd5b50610183600160a060020a03600435166107a5565b3480156101ee57600080fd5b5061010b600160a060020a03600435166107ba565b34801561020f57600080fd5b5061010b600160a060020a0360043516610a07565b34801561023057600080fd5b5061010b610aba565b34801561024557600080fd5b50610125610b7b565b34801561025a57600080fd5b50610183600160a060020a0360043516610b8a565b34801561027b57600080fd5b50610125610bc3565b34801561029057600080fd5b5061010b600160a060020a03600435166024351515610bd2565b3480156102b657600080fd5b5061010b600160a060020a0360043516610cfa565b3480156102d757600080fd5b506102e0610e27565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561031c578181015183820152602001610304565b505050509050019250505060405180910390f35b61034633600035600160e060020a031916610e8a565b151561038a576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60058054829081106103f557fe5b600091825260209091200154600160a060020a0316905081565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a43360009081526004602052604090205460ff1615156104cd576040805160e560020a62461bcd02815260206004820152601f60248201527f436f6e6669673a3a5f2053454e4445525f4e4f545f415554484f52495a454400604482015290519081900360640190fd5b83600160a060020a038116151561051c576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b600160a060020a03851660009081526004602052604090205460ff1615156105b4576040805160e560020a62461bcd02815260206004820152602860248201527f436f6e6669673a3a72656d6f766541646d696e2041444d494e5f444f45535f4e60448201527f4f545f4558495354000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600160a060020a038616141561063b576040805160e560020a62461bcd02815260206004820152602860248201527f436f6e6669673a3a72656d6f766541646d696e2041444d494e5f4e4f545f415560448201527f54484f52495a4544000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0385166000908152600460205260408120805460ff1916905593505b600554600019018410156107325784600160a060020a031660058581548110151561068557fe5b600091825260209091200154600160a060020a03161415610727576005805460001981019081106106b257fe5b60009182526020909120015460058054600160a060020a0390921691869081106106d857fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805460001901906107219082610f93565b50610732565b60019093019261065e565b604080513381529051600160a060020a038716917f0e9c3d5158f2afec017f5bfea4499c194908991c19a404c674869e25947fd891919081900360200190a25050505050565b60046020526000908152604090205460ff1681565b600254600160a060020a031681565b60065460ff1681565b60036020526000908152604090205460ff1681565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a43360009081526004602052604090205460ff161515610874576040805160e560020a62461bcd02815260206004820152601f60248201527f436f6e6669673a3a5f2053454e4445525f4e4f545f415554484f52495a454400604482015290519081900360640190fd5b82600160a060020a03811615156108c3576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b600160a060020a03841660009081526004602052604090205460ff161561095a576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e6669673a3a61646441646d696e2041444d494e5f414c52454144595f4560448201527f5849535453000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005805460018082019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716908117909155600081815260046020908152604091829020805460ff19169094179093558051338152905191927ffaee0269330752c7a43c8c1bfb334358e99a8ba5efb07a56b419ae8bdd279fa992918290030190a250505050565b610a1d33600035600160e060020a031916610e8a565b1515610a61576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b610ad033600035600160e060020a031916610e8a565b1515610b14576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506006805460ff19811660ff90911615179055565b600154600160a060020a031681565b60065460009060ff1615610ba057506001610bbe565b50600160a060020a03811660009081526004602052604090205460ff165b919050565b600054600160a060020a031681565b610be833600035600160e060020a031916610e8a565b1515610c2c576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a483600160a060020a0381161515610ccc576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b505050600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b610d1033600035600160e060020a031916610e8a565b1515610d54576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020610fdb833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a482600160a060020a0381161515610df4576040805160e560020a62461bcd0281526020600482015260186024820152600080516020610ffb833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60606005805480602002602001604051908101604052809291908181526020018280548015610e7f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e61575b505050505090505b90565b6000600160a060020a038316301415610ea557506001610f8d565b600154600160a060020a0384811691161415610ec357506001610f8d565b600054600160a060020a03161515610edd57506000610f8d565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b505050506040513d6020811015610f8857600080fd5b505190505b92915050565b815481835581811115610fb757600083815260209020610fb7918101908301610fbc565b505050565b610e8791905b80821115610fd65760008155600101610fc2565b509056004453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a7230582068b9c288f5dbff6d646552d0b0ac1b96309f0117cfd568ff04bc701d622800b80029