Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LockstakeClipper
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: © 2021 Dai Foundation <www.daifoundation.org>
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
pragma solidity ^0.8.21;
interface VatLike {
function suck(address, address, uint256) external;
function move(address, address, uint256) external;
function flux(bytes32, address, address, uint256) external;
function slip(bytes32, address, int256) external;
function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256);
}
interface PipLike {
function peek() external returns (bytes32, bool);
}
interface SpotterLike {
function par() external returns (uint256);
function ilks(bytes32) external returns (PipLike, uint256);
}
interface DogLike {
function chop(bytes32) external returns (uint256);
function digs(bytes32, uint256) external;
}
interface ClipperCallee {
function clipperCall(address, uint256, uint256, bytes calldata) external;
}
interface AbacusLike {
function price(uint256, uint256) external view returns (uint256);
}
interface LockstakeEngineLike {
function ilk() external view returns (bytes32);
function onKick(address, uint256) external;
function onTake(address, address, uint256) external;
function onRemove(address, uint256, uint256) external;
}
// Clipper for use with the Lockstake Engine
contract LockstakeClipper {
// --- Auth ---
mapping (address => uint256) public wards;
function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); }
function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); }
modifier auth {
require(wards[msg.sender] == 1, "LockstakeClipper/not-authorized");
_;
}
// --- Data ---
bytes32 immutable public ilk; // Collateral type of this LockstakeClipper
VatLike immutable public vat; // Core CDP Engine
LockstakeEngineLike immutable public engine; // Lockstake Engine
DogLike public dog; // Liquidation module
address public vow; // Recipient of dai raised in auctions
SpotterLike public spotter; // Collateral price module
AbacusLike public calc; // Current price calculator
uint256 public buf; // Multiplicative factor to increase starting price [ray]
uint256 public tail; // Time elapsed before auction reset [seconds]
uint256 public cusp; // Percentage drop before auction reset [ray]
uint64 public chip; // Percentage of tab to suck from vow to incentivize keepers [wad]
uint192 public tip; // Flat fee to suck from vow to incentivize keepers [rad]
uint256 public chost; // Cache the ilk dust times the ilk chop to prevent excessive SLOADs [rad]
uint256 public kicks; // Total auctions
uint256[] public active; // Array of active auction ids
struct Sale {
uint256 pos; // Index in active array
uint256 tab; // Dai to raise [rad]
uint256 lot; // collateral to sell [wad]
uint256 tot; // static registry of total collateral to sell [wad]
address usr; // Liquidated CDP
uint96 tic; // Auction start time
uint256 top; // Starting price [ray]
}
mapping(uint256 => Sale) public sales;
uint256 internal locked;
// Levels for circuit breaker
// 0: no breaker
// 1: no new kick()
// 2: no new kick() or redo()
// 3: no new kick(), redo(), or take()
uint256 public stopped = 0;
// --- Events ---
event Rely(address indexed usr);
event Deny(address indexed usr);
event File(bytes32 indexed what, uint256 data);
event File(bytes32 indexed what, address data);
event Kick(
uint256 indexed id,
uint256 top,
uint256 tab,
uint256 lot,
address indexed usr,
address indexed kpr,
uint256 coin
);
event Take(
uint256 indexed id,
uint256 max,
uint256 price,
uint256 owe,
uint256 tab,
uint256 lot,
address indexed usr
);
event Redo(
uint256 indexed id,
uint256 top,
uint256 tab,
uint256 lot,
address indexed usr,
address indexed kpr,
uint256 coin
);
event Yank(uint256 id);
// --- Init ---
constructor(address vat_, address spotter_, address dog_, address engine_) {
vat = VatLike(vat_);
spotter = SpotterLike(spotter_);
dog = DogLike(dog_);
engine = LockstakeEngineLike(engine_);
ilk = engine.ilk();
buf = RAY;
wards[msg.sender] = 1;
emit Rely(msg.sender);
}
// --- Synchronization ---
modifier lock {
require(locked == 0, "LockstakeClipper/system-locked");
locked = 1;
_;
locked = 0;
}
modifier isStopped(uint256 level) {
require(stopped < level, "LockstakeClipper/stopped-incorrect");
_;
}
// --- Administration ---
function file(bytes32 what, uint256 data) external auth lock {
if (what == "buf") buf = data;
else if (what == "tail") tail = data; // Time elapsed before auction reset
else if (what == "cusp") cusp = data; // Percentage drop before auction reset
else if (what == "chip") chip = uint64(data); // Percentage of tab to incentivize (max: 2^64 - 1 => 18.xxx WAD = 18xx%)
else if (what == "tip") tip = uint192(data); // Flat fee to incentivize keepers (max: 2^192 - 1 => 6.277T RAD)
else if (what == "stopped") stopped = data; // Set breaker (0, 1, 2, or 3)
else revert("LockstakeClipper/file-unrecognized-param");
emit File(what, data);
}
function file(bytes32 what, address data) external auth lock {
if (what == "spotter") spotter = SpotterLike(data);
else if (what == "dog") dog = DogLike(data);
else if (what == "vow") vow = data;
else if (what == "calc") calc = AbacusLike(data);
else revert("LockstakeClipper/file-unrecognized-param");
emit File(what, data);
}
// --- Math ---
uint256 constant BLN = 10 ** 9;
uint256 constant WAD = 10 ** 18;
uint256 constant RAY = 10 ** 27;
function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = x <= y ? x : y;
}
function wmul(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = x * y / WAD;
}
function rmul(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = x * y / RAY;
}
function rdiv(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = x * RAY / y;
}
// --- Auction ---
// get the price directly from the pip
// Could get this from rmul(Vat.ilks(ilk).spot, Spotter.mat()) instead, but
// if mat has changed since the last poke, the resulting value will be
// incorrect.
function getFeedPrice() internal returns (uint256 feedPrice) {
(PipLike pip, ) = spotter.ilks(ilk);
(bytes32 val, bool has) = pip.peek();
require(has, "LockstakeClipper/invalid-price");
feedPrice = rdiv(uint256(val) * BLN, spotter.par());
}
// start an auction
// note: trusts the caller to transfer collateral to the contract
// The starting price `top` is obtained as follows:
//
// top = val * buf / par
//
// Where `val` is the collateral's unitary value in USD, `buf` is a
// multiplicative factor to increase the starting price, and `par` is a
// reference per DAI.
function kick(
uint256 tab, // Debt [rad]
uint256 lot, // Collateral [wad]
address usr, // Address that will receive any leftover collateral; additionally assumed here to be the liquidated Vault.
address kpr // Address that will receive incentives
) external auth lock isStopped(1) returns (uint256 id) {
// Input validation
require(tab > 0, "LockstakeClipper/zero-tab");
require(lot > 0, "LockstakeClipper/zero-lot");
require(lot <= uint256(type(int256).max), "LockstakeClipper/over-maxint-lot"); // This is ensured by the dog but we still prefer to be explicit
require(usr != address(0), "LockstakeClipper/zero-usr");
unchecked { id = ++kicks; }
require(id > 0, "LockstakeClipper/overflow");
active.push(id);
sales[id].pos = active.length - 1;
sales[id].tab = tab;
sales[id].lot = lot;
sales[id].tot = lot;
sales[id].usr = usr;
sales[id].tic = uint96(block.timestamp);
uint256 top;
top = rmul(getFeedPrice(), buf);
require(top > 0, "LockstakeClipper/zero-top-price");
sales[id].top = top;
// incentive to kick auction
uint256 _tip = tip;
uint256 _chip = chip;
uint256 coin;
if (_tip > 0 || _chip > 0) {
coin = _tip + wmul(tab, _chip);
vat.suck(vow, kpr, coin);
}
// Trigger engine liquidation call-back
engine.onKick(usr, lot);
emit Kick(id, top, tab, lot, usr, kpr, coin);
}
// Reset an auction
// See `kick` above for an explanation of the computation of `top`.
function redo(
uint256 id, // id of the auction to reset
address kpr // Address that will receive incentives
) external lock isStopped(2) {
// Read auction data
address usr = sales[id].usr;
uint96 tic = sales[id].tic;
uint256 top = sales[id].top;
require(usr != address(0), "LockstakeClipper/not-running-auction");
// Check that auction needs reset
// and compute current price [ray]
(bool done,) = status(tic, top);
require(done, "LockstakeClipper/cannot-reset");
uint256 tab = sales[id].tab;
uint256 lot = sales[id].lot;
sales[id].tic = uint96(block.timestamp);
uint256 feedPrice = getFeedPrice();
top = rmul(feedPrice, buf);
require(top > 0, "LockstakeClipper/zero-top-price");
sales[id].top = top;
// incentive to redo auction
uint256 _tip = tip;
uint256 _chip = chip;
uint256 coin;
if (_tip > 0 || _chip > 0) {
uint256 _chost = chost;
if (tab >= _chost && lot * feedPrice >= _chost) {
coin = _tip + wmul(tab, _chip);
vat.suck(vow, kpr, coin);
}
}
emit Redo(id, top, tab, lot, usr, kpr, coin);
}
// Buy up to `amt` of collateral from the auction indexed by `id`.
//
// Auctions will not collect more DAI than their assigned DAI target,`tab`;
// thus, if `amt` would cost more DAI than `tab` at the current price, the
// amount of collateral purchased will instead be just enough to collect `tab` DAI.
//
// To avoid partial purchases resulting in very small leftover auctions that will
// never be cleared, any partial purchase must leave at least `LockstakeClipper.chost`
// remaining DAI target. `chost` is an asynchronously updated value equal to
// (Vat.dust * Dog.chop(ilk) / WAD) where the values are understood to be determined
// by whatever they were when LockstakeClipper.upchost() was last called. Purchase amounts
// will be minimally decreased when necessary to respect this limit; i.e., if the
// specified `amt` would leave `tab < chost` but `tab > 0`, the amount actually
// purchased will be such that `tab == chost`.
//
// If `tab <= chost`, partial purchases are no longer possible; that is, the remaining
// collateral can only be purchased entirely, or not at all.
function take(
uint256 id, // Auction id
uint256 amt, // Upper limit on amount of collateral to buy [wad]
uint256 max, // Maximum acceptable price (DAI / collateral) [ray]
address who, // Receiver of collateral and external call address
bytes calldata data // Data to pass in external call; if length 0, no call is done
) external lock isStopped(3) {
address usr = sales[id].usr;
uint96 tic = sales[id].tic;
require(usr != address(0), "LockstakeClipper/not-running-auction");
uint256 price;
{
bool done;
(done, price) = status(tic, sales[id].top);
// Check that auction doesn't need reset
require(!done, "LockstakeClipper/needs-reset");
}
// Ensure price is acceptable to buyer
require(max >= price, "LockstakeClipper/too-expensive");
uint256 lot = sales[id].lot;
uint256 tab = sales[id].tab;
uint256 owe;
{
// Purchase as much as possible, up to amt
uint256 slice = min(lot, amt); // slice <= lot
// DAI needed to buy a slice of this sale
owe = slice * price;
// Don't collect more than tab of DAI
if (owe > tab) {
// Total debt will be paid
owe = tab; // owe' <= owe
// Adjust slice
slice = owe / price; // slice' = owe' / price <= owe / price == slice <= lot
} else if (owe < tab && slice < lot) {
// If slice == lot => auction completed => dust doesn't matter
uint256 _chost = chost;
if (tab - owe < _chost) { // safe as owe < tab
// If tab <= chost, buyers have to take the entire lot.
require(tab > _chost, "LockstakeClipper/no-partial-purchase");
// Adjust amount to pay
owe = tab - _chost; // owe' <= owe
// Adjust slice
slice = owe / price; // slice' = owe' / price < owe / price == slice < lot
}
}
// Calculate remaining tab after operation
tab = tab - owe; // safe since owe <= tab
// Calculate remaining lot after operation
lot = lot - slice;
// Send collateral to who
vat.slip(ilk, address(this), -int256(slice));
engine.onTake(usr, who, slice);
// Do external call (if data is defined) but to be
// extremely careful we don't allow to do it to the three
// contracts which the LockstakeClipper needs to be authorized
DogLike dog_ = dog;
if (data.length > 0 && who != address(vat) && who != address(dog_) && who != address(engine)) {
ClipperCallee(who).clipperCall(msg.sender, owe, slice, data);
}
// Get DAI from caller
vat.move(msg.sender, vow, owe);
// Removes Dai out for liquidation from accumulator
dog_.digs(ilk, lot == 0 ? tab + owe : owe);
}
if (lot == 0) {
uint256 tot = sales[id].tot;
engine.onRemove(usr, tot, 0);
_remove(id);
} else if (tab == 0) {
uint256 tot = sales[id].tot;
vat.slip(ilk, address(this), -int256(lot));
engine.onRemove(usr, tot - lot, lot);
_remove(id);
} else {
sales[id].tab = tab;
sales[id].lot = lot;
}
emit Take(id, max, price, owe, tab, lot, usr);
}
function _remove(uint256 id) internal {
uint256 _move = active[active.length - 1];
if (id != _move) {
uint256 _index = sales[id].pos;
active[_index] = _move;
sales[_move].pos = _index;
}
active.pop();
delete sales[id];
}
// The number of active auctions
function count() external view returns (uint256) {
return active.length;
}
// Return the entire array of active auctions
function list() external view returns (uint256[] memory) {
return active;
}
// Externally returns boolean for if an auction needs a redo and also the current price
function getStatus(uint256 id) external view returns (bool needsRedo, uint256 price, uint256 lot, uint256 tab) {
// Read auction data
address usr = sales[id].usr;
uint96 tic = sales[id].tic;
bool done;
(done, price) = status(tic, sales[id].top);
needsRedo = usr != address(0) && done;
lot = sales[id].lot;
tab = sales[id].tab;
}
// Internally returns boolean for if an auction needs a redo
function status(uint96 tic, uint256 top) internal view returns (bool done, uint256 price) {
price = calc.price(top, block.timestamp - tic);
done = (block.timestamp - tic > tail || rdiv(price, top) < cusp);
}
// Public function to update the cached dust*chop value.
function upchost() external {
(,,,, uint256 _dust) = VatLike(vat).ilks(ilk);
chost = wmul(_dust, dog.chop(ilk));
}
// Cancel an auction during End.cage or via other governance action.
function yank(uint256 id) external auth lock {
require(sales[id].usr != address(0), "LockstakeClipper/not-running-auction");
dog.digs(ilk, sales[id].tab);
uint256 lot = sales[id].lot;
vat.flux(ilk, address(this), msg.sender, lot);
engine.onRemove(sales[id].usr, 0, 0);
_remove(id);
emit Yank(id);
}
}{
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"spotter_","type":"address"},{"internalType":"address","name":"dog_","type":"address"},{"internalType":"address","name":"engine_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"top","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"kpr","type":"address"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"Kick","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"top","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"kpr","type":"address"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"Redo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"owe","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Take","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Yank","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"active","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calc","outputs":[{"internalType":"contract AbacusLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chip","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cusp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dog","outputs":[{"internalType":"contract DogLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"engine","outputs":[{"internalType":"contract LockstakeEngineLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getStatus","outputs":[{"internalType":"bool","name":"needsRedo","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"tab","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tab","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"address","name":"kpr","type":"address"}],"name":"kick","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"list","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"kpr","type":"address"}],"name":"redo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sales","outputs":[{"internalType":"uint256","name":"pos","type":"uint256"},{"internalType":"uint256","name":"tab","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"tot","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint96","name":"tic","type":"uint96"},{"internalType":"uint256","name":"top","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spotter","outputs":[{"internalType":"contract SpotterLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tail","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"take","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tip","outputs":[{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upchost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60e06040525f600e5534801562000014575f80fd5b506040516200292038038062002920833981016040819052620000379162000141565b6001600160a01b0384811660a052600380546001600160a01b03199081168684161790915560018054909116848316179055811660c0819052604080516362e7140f60e11b8152905163c5ce281e916004808201926020929091908290030181865afa158015620000aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000d091906200019b565b6080526b033b2e3c9fd0803ce8000000600555335f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250505050620001b3565b80516001600160a01b03811681146200013c575f80fd5b919050565b5f805f806080858703121562000155575f80fd5b620001608562000125565b9350620001706020860162000125565b9250620001806040860162000125565b9150620001906060860162000125565b905092959194509250565b5f60208284031215620001ac575f80fd5b5051919050565b60805160a05160c0516126a8620002785f395f81816104cc015281816108dc01528181610f6e0152818161104b0152818161124a01528181611386015261189101525f81816102a5015281816105540152818161083b01528181610ea801528181610fef01528181611101015281816112d3015281816118030152611d1e01525f81816104a50152818161052c015281816105d701528181610773015281816107ff01528181610ecf01528181611179015281816112fa015261200201526126a85ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80638033d581116100fe578063ba2cdc751161009e578063c9d4623f1161006e578063c9d4623f146104c7578063cfdd3302146104ee578063d4e8be83146104f7578063d843416d1461050a575f80fd5b8063ba2cdc7514610465578063bf353dbb1461046e578063c3b3ad7f1461048d578063c5ce281e146104a0575f80fd5b806396f1b6be116100d957806396f1b6be1461036d5780639c52a7f114610380578063b5f522f714610393578063b61500e414610438575f80fd5b80638033d5811461033457806381a794cb14610347578063898eb2671461035a575f80fd5b806329ae8114116101745780635c622a0e116101445780635c622a0e146102d0578063626cb3c51461030557806365fae35e1461031857806375f12b211461032b575f80fd5b806329ae8114146102625780632e77468d1461027557806336569e77146102a057806349ed5931146102c7575f80fd5b806313d8c840116101af57806313d8c8401461020b578063152325151461021457806326e027f11461021d5780632755cd2d14610230575f80fd5b806306661abd146101d55780630cbb5862146101ec5780630f560cd7146101f6575b5f80fd5b600b545b6040519081526020015b60405180910390f35b6101f461051d565b005b6101fe610666565b6040516101e391906121f7565b6101d960065481565b6101d960055481565b6101f461022b36600461223a565b6106bc565b60085461024a90600160401b90046001600160c01b031681565b6040516001600160c01b0390911681526020016101e3565b6101f4610270366004612251565b610978565b600354610288906001600160a01b031681565b6040516001600160a01b0390911681526020016101e3565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101d960075481565b6102e36102de36600461223a565b610b2c565b60408051941515855260208501939093529183015260608201526080016101e3565b600254610288906001600160a01b031681565b6101f4610326366004612288565b610bb6565b6101d9600e5481565b6101d961034236600461223a565b610c28565b6101f46103553660046122a3565b610c47565b6101d961036836600461233c565b611482565b600454610288906001600160a01b031681565b6101f461038e366004612288565b611953565b6103f16103a136600461223a565b600c6020525f908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03821691600160a01b90046001600160601b03169087565b6040805197885260208801969096529486019390935260608501919091526001600160a01b031660808401526001600160601b031660a083015260c082015260e0016101e3565b60085461044c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101e3565b6101d960095481565b6101d961047c366004612288565b5f6020819052908152604090205481565b600154610288906001600160a01b031681565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101d9600a5481565b6101f4610505366004612383565b6119c4565b6101f4610518366004612383565b611b08565b604051636cb1c69b60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d9638d369060240160a060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c591906123b1565b600154604051631af24ca760e31b81527f0000000000000000000000000000000000000000000000000000000000000000600482015291965061066095508694506001600160a01b0316925063d792653891506024016020604051808303815f875af1158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b91906123ed565b611e1d565b60095550565b6060600b8054806020026020016040519081016040528092919081815260200182805480156106b257602002820191905f5260205f20905b81548152602001906001019080831161069e575b5050505050905090565b335f908152602081905260409020546001146106f35760405162461bcd60e51b81526004016106ea90612404565b60405180910390fd5b600d54156107135760405162461bcd60e51b81526004016106ea9061243b565b6001600d555f818152600c60205260409020600401546001600160a01b031661074e5760405162461bcd60e51b81526004016106ea90612472565b600180545f838152600c60205260409081902090920154915163321c64fd60e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260248101929092526001600160a01b03169063c87193f4906044015f604051808303815f87803b1580156107c9575f80fd5b505af11580156107db573d5f803e3d5ffd5b5050505f828152600c602052604090819020600201549051633088df1760e11b81527f00000000000000000000000000000000000000000000000000000000000000006004820152306024820152336044820152606481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636111be2e906084015f604051808303815f87803b158015610884575f80fd5b505af1158015610896573d5f803e3d5ffd5b5050505f838152600c60205260408082206004908101549151632d074bbd60e01b81526001600160a01b03928316918101919091526024810183905260448101929092527f0000000000000000000000000000000000000000000000000000000000000000169150632d074bbd906064015f604051808303815f87803b15801561091e575f80fd5b505af1158015610930573d5f803e3d5ffd5b5050505061093d82611e42565b6040518281527f2c5d2826eb5903b8fc201cf48094b858f42f61c7eaac9aaf43ebed490138144e9060200160405180910390a150505f600d55565b335f908152602081905260409020546001146109a65760405162461bcd60e51b81526004016106ea90612404565b600d54156109c65760405162461bcd60e51b81526004016106ea9061243b565b6001600d5562313ab360e91b8290036109e3576005819055610aea565b81631d185a5b60e21b036109fb576006819055610aea565b81630637573760e41b03610a13576007819055610aea565b81630636869760e41b03610a43576008805467ffffffffffffffff191667ffffffffffffffff8316179055610aea565b816207469760ec1b03610a76576008805467ffffffffffffffff16600160401b6001600160c01b03841602179055610aea565b81661cdd1bdc1c195960ca1b03610a9157600e819055610aea565b60405162461bcd60e51b815260206004820152602860248201527f4c6f636b7374616b65436c69707065722f66696c652d756e7265636f676e697a60448201526765642d706172616d60c01b60648201526084016106ea565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c782604051610b1c91815260200190565b60405180910390a250505f600d55565b5f818152600c6020526040812060048101546005909101548291829182916001600160a01b03811691600160a01b9091046001600160601b0316908390610b74908390611f16565b965090506001600160a01b03831615801590610b8d5750805b5f988952600c602052604090982060028101546001909101549899969890975095945050505050565b335f90815260208190526040902054600114610be45760405162461bcd60e51b81526004016106ea90612404565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b600b8181548110610c37575f80fd5b5f91825260209091200154905081565b600d5415610c675760405162461bcd60e51b81526004016106ea9061243b565b6001600d55600e546003908111610c905760405162461bcd60e51b81526004016106ea906124b6565b5f878152600c60205260409020600401546001600160a01b03811690600160a01b90046001600160601b031681610cd95760405162461bcd60e51b81526004016106ea90612472565b5f898152600c60205260408120600501548190610cf7908490611f16565b925090508015610d495760405162461bcd60e51b815260206004820152601c60248201527f4c6f636b7374616b65436c69707065722f6e656564732d72657365740000000060448201526064016106ea565b5080881015610d9a5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b7374616b65436c69707065722f746f6f2d657870656e73697665000060448201526064016106ea565b5f8a8152600c602052604081206002810154600190910154909180610dbf848e611fda565b9050610dcb858261250c565b915082821115610de957829150610de28583612529565b9050610e86565b8282108015610df757508381105b15610e865760095480610e0a8486612548565b1015610e8457808411610e6b5760405162461bcd60e51b8152602060048201526024808201527f4c6f636b7374616b65436c69707065722f6e6f2d7061727469616c2d707572636044820152636861736560e01b60648201526084016106ea565b610e758185612548565b9250610e818684612529565b91505b505b610e908284612548565b9250610e9c8185612548565b93506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016637cdd3fde7f000000000000000000000000000000000000000000000000000000000000000030610ef88561255b565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b03909116602483015260448201526064015f604051808303815f87803b158015610f43575f80fd5b505af1158015610f55573d5f803e3d5ffd5b505060405163d0294ea560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063d0294ea59150610fa9908a908f908690600401612575565b5f604051808303815f87803b158015610fc0575f80fd5b505af1158015610fd2573d5f803e3d5ffd5b50506001546001600160a01b0316915050891580159061102457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168c6001600160a01b031614155b80156110425750806001600160a01b03168c6001600160a01b031614155b801561108057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168c6001600160a01b031614155b156110e7578b6001600160a01b0316638452c10e3385858f8f6040518663ffffffff1660e01b81526004016110b9959493929190612599565b5f604051808303815f87803b1580156110d0575f80fd5b505af11580156110e2573d5f803e3d5ffd5b505050505b60025460405163bb35783b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263bb35783b9261113b92339216908890600401612575565b5f604051808303815f87803b158015611152575f80fd5b505af1158015611164573d5f803e3d5ffd5b50505050806001600160a01b031663c87193f47f0000000000000000000000000000000000000000000000000000000000000000875f146111a557856111af565b6111af86886125e4565b6040516001600160e01b031960e085901b168152600481019290925260248201526044015f604051808303815f87803b1580156111ea575f80fd5b505af11580156111fc573d5f803e3d5ffd5b505050505050825f036112b1575f8d8152600c6020526040808220600301549051632d074bbd60e01b81526001600160a01b03898116600483015260248201839052604482019390935290917f00000000000000000000000000000000000000000000000000000000000000001690632d074bbd906064015b5f604051808303815f87803b15801561128c575f80fd5b505af115801561129e573d5f803e3d5ffd5b505050506112ab8e611e42565b50611413565b815f036113f8575f8d8152600c60205260409020600301546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016637cdd3fde7f0000000000000000000000000000000000000000000000000000000000000000306113238861255b565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b03909116602483015260448201526064015f604051808303815f87803b15801561136e575f80fd5b505af1158015611380573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d074bbd8886846113c09190612548565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101879052606401611275565b5f8d8152600c60205260409020600181018390556002018390555b604080518c81526020810186905290810182905260608101839052608081018490526001600160a01b038716908e907f05e309fd6ce72f2ab888a20056bb4210df08daed86f21f95053deb19964d86b19060a00160405180910390a350505f600d555050505050505050505050565b335f908152602081905260408120546001146114b05760405162461bcd60e51b81526004016106ea90612404565b600d54156114d05760405162461bcd60e51b81526004016106ea9061243b565b6001600d819055600e5481116114f85760405162461bcd60e51b81526004016106ea906124b6565b5f86116115475760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d7461620000000000000060448201526064016106ea565b5f85116115965760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d6c6f740000000000000060448201526064016106ea565b6001600160ff1b038511156115ed5760405162461bcd60e51b815260206004820181905260248201527f4c6f636b7374616b65436c69707065722f6f7665722d6d6178696e742d6c6f7460448201526064016106ea565b6001600160a01b0384166116435760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d7573720000000000000060448201526064016106ea565b600a80546001019081905591508161169d5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f6f766572666c6f770000000000000060448201526064016106ea565b600b8054600181810183555f8390527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910184905590546116df9190612548565b5f838152600c602052604081209182556001820188905560028201879055600382018790556001600160601b034216600160a01b026001600160a01b0387161760049092019190915561173b611733611ff0565b6005546121c7565b90505f811161178c5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b7374616b65436c69707065722f7a65726f2d746f702d70726963650060448201526064016106ea565b5f838152600c602052604081206005018290556008546001600160c01b03600160401b8204169167ffffffffffffffff90911690821515806117cd57505f82115b1561186b576117dc8a83611e1d565b6117e690846125e4565b60025460405163f24e23eb60e01b81529192506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f24e23eb9261183d9216908b908690600401612575565b5f604051808303815f87803b158015611854575f80fd5b505af1158015611866573d5f803e3d5ffd5b505050505b604051635c2e41c160e01b81526001600160a01b038981166004830152602482018b90527f00000000000000000000000000000000000000000000000000000000000000001690635c2e41c1906044015f604051808303815f87803b1580156118d2575f80fd5b505af11580156118e4573d5f803e3d5ffd5b505060408051878152602081018e90529081018c9052606081018490526001600160a01b03808b1693508b16915088907f7c5bfdc0a5e8192f6cd4972f382cec69116862fb62e6abff8003874c58e064b89060800160405180910390a450505f600d5550919695505050505050565b335f908152602081905260409020546001146119815760405162461bcd60e51b81526004016106ea90612404565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b335f908152602081905260409020546001146119f25760405162461bcd60e51b81526004016106ea90612404565b600d5415611a125760405162461bcd60e51b81526004016106ea9061243b565b6001600d556639b837ba3a32b960c91b829003611a4957600380546001600160a01b0319166001600160a01b038316179055611acd565b8162646f6760e81b03611a7657600180546001600160a01b0319166001600160a01b038316179055611acd565b8162766f7760e81b03611aa357600280546001600160a01b0319166001600160a01b038316179055611acd565b816363616c6360e01b03610a9157600480546001600160a01b0319166001600160a01b0383161790555b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba90602001610b1c565b600d5415611b285760405162461bcd60e51b81526004016106ea9061243b565b6001600d55600e546002908111611b515760405162461bcd60e51b81526004016106ea906124b6565b5f838152600c6020526040902060048101546005909101546001600160a01b03821691600160a01b90046001600160601b03169082611ba25760405162461bcd60e51b81526004016106ea90612472565b5f611bad8383611f16565b50905080611bfd5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b7374616b65436c69707065722f63616e6e6f742d726573657400000060448201526064016106ea565b5f878152600c6020526040812060018101546002820154600490920180546001600160a01b0316600160a01b426001600160601b03160217905591611c40611ff0565b9050611c4e816005546121c7565b94505f8511611c9f5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b7374616b65436c69707065722f7a65726f2d746f702d70726963650060448201526064016106ea565b5f8a8152600c602052604081206005018690556008546001600160c01b03600160401b8204169167ffffffffffffffff9091169082151580611ce057505f82115b15611db057600954808710801590611d01575080611cfe868861250c565b10155b15611dae57611d108784611e1d565b611d1a90856125e4565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f24e23eb60025f9054906101000a90046001600160a01b03168f856040518463ffffffff1660e01b8152600401611d8093929190612575565b5f604051808303815f87803b158015611d97575f80fd5b505af1158015611da9573d5f803e3d5ffd5b505050505b505b6040805189815260208101889052908101869052606081018290526001600160a01b03808e1691908c16908f907f275de7ecdd375b5e8049319f8b350686131c219dd4dc450a08e9cf83b03c865f9060800160405180910390a450505f600d555050505050505050505050565b5f670de0b6b3a7640000611e31838561250c565b611e3b9190612529565b9392505050565b600b80545f9190611e5590600190612548565b81548110611e6557611e656125f7565b905f5260205f2001549050808214611eba575f828152600c6020526040902054600b805483919083908110611e9c57611e9c6125f7565b5f918252602080832090910192909255838152600c90915260409020555b600b805480611ecb57611ecb61260b565b5f828152602080822083015f19908101839055909201909255928152600c90925250604081208181556001810182905560028101829055600381018290556004810182905560050155565b6004545f9081906001600160a01b031663487a239584611f3f6001600160601b03881642612548565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015611f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa291906123ed565b600654909150611fbb6001600160601b03861642612548565b1180611fd15750600754611fcf82856121df565b105b91509250929050565b5f81831115611fe95781611e3b565b5090919050565b600354604051636cb1c69b60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f9182916001600160a01b039091169063d9638d369060240160408051808303815f875af115801561205a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207e919061261f565b5090505f80826001600160a01b03166359e02dd76040518163ffffffff1660e01b815260040160408051808303815f875af11580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e3919061264b565b91509150806121345760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b7374616b65436c69707065722f696e76616c69642d7072696365000060448201526064016106ea565b6121bf612145633b9aca008461250c565b60035f9054906101000a90046001600160a01b03166001600160a01b031663495d32cb6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015612196573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ba91906123ed565b6121df565b935050505090565b5f6b033b2e3c9fd0803ce8000000611e31838561250c565b5f81611e316b033b2e3c9fd0803ce80000008561250c565b602080825282518282018190525f9190848201906040850190845b8181101561222e57835183529284019291840191600101612212565b50909695505050505050565b5f6020828403121561224a575f80fd5b5035919050565b5f8060408385031215612262575f80fd5b50508035926020909101359150565b6001600160a01b0381168114612285575f80fd5b50565b5f60208284031215612298575f80fd5b8135611e3b81612271565b5f805f805f8060a087890312156122b8575f80fd5b86359550602087013594506040870135935060608701356122d881612271565b9250608087013567ffffffffffffffff808211156122f4575f80fd5b818901915089601f830112612307575f80fd5b813581811115612315575f80fd5b8a6020828501011115612326575f80fd5b6020830194508093505050509295509295509295565b5f805f806080858703121561234f575f80fd5b8435935060208501359250604085013561236881612271565b9150606085013561237881612271565b939692955090935050565b5f8060408385031215612394575f80fd5b8235915060208301356123a681612271565b809150509250929050565b5f805f805f60a086880312156123c5575f80fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b5f602082840312156123fd575f80fd5b5051919050565b6020808252601f908201527f4c6f636b7374616b65436c69707065722f6e6f742d617574686f72697a656400604082015260600190565b6020808252601e908201527f4c6f636b7374616b65436c69707065722f73797374656d2d6c6f636b65640000604082015260600190565b60208082526024908201527f4c6f636b7374616b65436c69707065722f6e6f742d72756e6e696e672d6175636040820152633a34b7b760e11b606082015260800190565b60208082526022908201527f4c6f636b7374616b65436c69707065722f73746f707065642d696e636f72726560408201526118dd60f21b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612523576125236124f8565b92915050565b5f8261254357634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612523576125236124f8565b5f600160ff1b820161256f5761256f6124f8565b505f0390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b80820180821115612523576125236124f8565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8060408385031215612630575f80fd5b825161263b81612271565b6020939093015192949293505050565b5f806040838503121561265c575f80fd5b82519150602083015180151581146123a6575f80fdfea2646970667358221220f0c77d7f2164e9f7ea93e72aeaac06f71a6de490facd0f1234e9bb5b49f4c1f964736f6c6343000815003300000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b00000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a3000000000000000000000000135954d155898d42c90d2a57824c690e0c7bef1b0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae7795
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80638033d581116100fe578063ba2cdc751161009e578063c9d4623f1161006e578063c9d4623f146104c7578063cfdd3302146104ee578063d4e8be83146104f7578063d843416d1461050a575f80fd5b8063ba2cdc7514610465578063bf353dbb1461046e578063c3b3ad7f1461048d578063c5ce281e146104a0575f80fd5b806396f1b6be116100d957806396f1b6be1461036d5780639c52a7f114610380578063b5f522f714610393578063b61500e414610438575f80fd5b80638033d5811461033457806381a794cb14610347578063898eb2671461035a575f80fd5b806329ae8114116101745780635c622a0e116101445780635c622a0e146102d0578063626cb3c51461030557806365fae35e1461031857806375f12b211461032b575f80fd5b806329ae8114146102625780632e77468d1461027557806336569e77146102a057806349ed5931146102c7575f80fd5b806313d8c840116101af57806313d8c8401461020b578063152325151461021457806326e027f11461021d5780632755cd2d14610230575f80fd5b806306661abd146101d55780630cbb5862146101ec5780630f560cd7146101f6575b5f80fd5b600b545b6040519081526020015b60405180910390f35b6101f461051d565b005b6101fe610666565b6040516101e391906121f7565b6101d960065481565b6101d960055481565b6101f461022b36600461223a565b6106bc565b60085461024a90600160401b90046001600160c01b031681565b6040516001600160c01b0390911681526020016101e3565b6101f4610270366004612251565b610978565b600354610288906001600160a01b031681565b6040516001600160a01b0390911681526020016101e3565b6102887f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81565b6101d960075481565b6102e36102de36600461223a565b610b2c565b60408051941515855260208501939093529183015260608201526080016101e3565b600254610288906001600160a01b031681565b6101f4610326366004612288565b610bb6565b6101d9600e5481565b6101d961034236600461223a565b610c28565b6101f46103553660046122a3565b610c47565b6101d961036836600461233c565b611482565b600454610288906001600160a01b031681565b6101f461038e366004612288565b611953565b6103f16103a136600461223a565b600c6020525f908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03821691600160a01b90046001600160601b03169087565b6040805197885260208801969096529486019390935260608501919091526001600160a01b031660808401526001600160601b031660a083015260c082015260e0016101e3565b60085461044c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101e3565b6101d960095481565b6101d961047c366004612288565b5f6020819052908152604090205481565b600154610288906001600160a01b031681565b6101d97f4c534556322d410000000000000000000000000000000000000000000000000081565b6102887f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae779581565b6101d9600a5481565b6101f4610505366004612383565b6119c4565b6101f4610518366004612383565b611b08565b604051636cb1c69b60e11b81527f4c534556322d410000000000000000000000000000000000000000000000000060048201525f907f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b03169063d9638d369060240160a060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c591906123b1565b600154604051631af24ca760e31b81527f4c534556322d4100000000000000000000000000000000000000000000000000600482015291965061066095508694506001600160a01b0316925063d792653891506024016020604051808303815f875af1158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b91906123ed565b611e1d565b60095550565b6060600b8054806020026020016040519081016040528092919081815260200182805480156106b257602002820191905f5260205f20905b81548152602001906001019080831161069e575b5050505050905090565b335f908152602081905260409020546001146106f35760405162461bcd60e51b81526004016106ea90612404565b60405180910390fd5b600d54156107135760405162461bcd60e51b81526004016106ea9061243b565b6001600d555f818152600c60205260409020600401546001600160a01b031661074e5760405162461bcd60e51b81526004016106ea90612472565b600180545f838152600c60205260409081902090920154915163321c64fd60e21b81527f4c534556322d4100000000000000000000000000000000000000000000000000600482015260248101929092526001600160a01b03169063c87193f4906044015f604051808303815f87803b1580156107c9575f80fd5b505af11580156107db573d5f803e3d5ffd5b5050505f828152600c602052604090819020600201549051633088df1760e11b81527f4c534556322d41000000000000000000000000000000000000000000000000006004820152306024820152336044820152606481018290529091507f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031690636111be2e906084015f604051808303815f87803b158015610884575f80fd5b505af1158015610896573d5f803e3d5ffd5b5050505f838152600c60205260408082206004908101549151632d074bbd60e01b81526001600160a01b03928316918101919091526024810183905260448101929092527f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae7795169150632d074bbd906064015f604051808303815f87803b15801561091e575f80fd5b505af1158015610930573d5f803e3d5ffd5b5050505061093d82611e42565b6040518281527f2c5d2826eb5903b8fc201cf48094b858f42f61c7eaac9aaf43ebed490138144e9060200160405180910390a150505f600d55565b335f908152602081905260409020546001146109a65760405162461bcd60e51b81526004016106ea90612404565b600d54156109c65760405162461bcd60e51b81526004016106ea9061243b565b6001600d5562313ab360e91b8290036109e3576005819055610aea565b81631d185a5b60e21b036109fb576006819055610aea565b81630637573760e41b03610a13576007819055610aea565b81630636869760e41b03610a43576008805467ffffffffffffffff191667ffffffffffffffff8316179055610aea565b816207469760ec1b03610a76576008805467ffffffffffffffff16600160401b6001600160c01b03841602179055610aea565b81661cdd1bdc1c195960ca1b03610a9157600e819055610aea565b60405162461bcd60e51b815260206004820152602860248201527f4c6f636b7374616b65436c69707065722f66696c652d756e7265636f676e697a60448201526765642d706172616d60c01b60648201526084016106ea565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c782604051610b1c91815260200190565b60405180910390a250505f600d55565b5f818152600c6020526040812060048101546005909101548291829182916001600160a01b03811691600160a01b9091046001600160601b0316908390610b74908390611f16565b965090506001600160a01b03831615801590610b8d5750805b5f988952600c602052604090982060028101546001909101549899969890975095945050505050565b335f90815260208190526040902054600114610be45760405162461bcd60e51b81526004016106ea90612404565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b600b8181548110610c37575f80fd5b5f91825260209091200154905081565b600d5415610c675760405162461bcd60e51b81526004016106ea9061243b565b6001600d55600e546003908111610c905760405162461bcd60e51b81526004016106ea906124b6565b5f878152600c60205260409020600401546001600160a01b03811690600160a01b90046001600160601b031681610cd95760405162461bcd60e51b81526004016106ea90612472565b5f898152600c60205260408120600501548190610cf7908490611f16565b925090508015610d495760405162461bcd60e51b815260206004820152601c60248201527f4c6f636b7374616b65436c69707065722f6e656564732d72657365740000000060448201526064016106ea565b5080881015610d9a5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b7374616b65436c69707065722f746f6f2d657870656e73697665000060448201526064016106ea565b5f8a8152600c602052604081206002810154600190910154909180610dbf848e611fda565b9050610dcb858261250c565b915082821115610de957829150610de28583612529565b9050610e86565b8282108015610df757508381105b15610e865760095480610e0a8486612548565b1015610e8457808411610e6b5760405162461bcd60e51b8152602060048201526024808201527f4c6f636b7374616b65436c69707065722f6e6f2d7061727469616c2d707572636044820152636861736560e01b60648201526084016106ea565b610e758185612548565b9250610e818684612529565b91505b505b610e908284612548565b9250610e9c8185612548565b93506001600160a01b037f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b16637cdd3fde7f4c534556322d410000000000000000000000000000000000000000000000000030610ef88561255b565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b03909116602483015260448201526064015f604051808303815f87803b158015610f43575f80fd5b505af1158015610f55573d5f803e3d5ffd5b505060405163d0294ea560e01b81526001600160a01b037f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae779516925063d0294ea59150610fa9908a908f908690600401612575565b5f604051808303815f87803b158015610fc0575f80fd5b505af1158015610fd2573d5f803e3d5ffd5b50506001546001600160a01b0316915050891580159061102457507f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b03168c6001600160a01b031614155b80156110425750806001600160a01b03168c6001600160a01b031614155b801561108057507f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae77956001600160a01b03168c6001600160a01b031614155b156110e7578b6001600160a01b0316638452c10e3385858f8f6040518663ffffffff1660e01b81526004016110b9959493929190612599565b5f604051808303815f87803b1580156110d0575f80fd5b505af11580156110e2573d5f803e3d5ffd5b505050505b60025460405163bb35783b60e01b81526001600160a01b037f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81169263bb35783b9261113b92339216908890600401612575565b5f604051808303815f87803b158015611152575f80fd5b505af1158015611164573d5f803e3d5ffd5b50505050806001600160a01b031663c87193f47f4c534556322d4100000000000000000000000000000000000000000000000000875f146111a557856111af565b6111af86886125e4565b6040516001600160e01b031960e085901b168152600481019290925260248201526044015f604051808303815f87803b1580156111ea575f80fd5b505af11580156111fc573d5f803e3d5ffd5b505050505050825f036112b1575f8d8152600c6020526040808220600301549051632d074bbd60e01b81526001600160a01b03898116600483015260248201839052604482019390935290917f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae77951690632d074bbd906064015b5f604051808303815f87803b15801561128c575f80fd5b505af115801561129e573d5f803e3d5ffd5b505050506112ab8e611e42565b50611413565b815f036113f8575f8d8152600c60205260409020600301546001600160a01b037f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b16637cdd3fde7f4c534556322d4100000000000000000000000000000000000000000000000000306113238861255b565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b03909116602483015260448201526064015f604051808303815f87803b15801561136e575f80fd5b505af1158015611380573d5f803e3d5ffd5b505050507f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae77956001600160a01b0316632d074bbd8886846113c09190612548565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101879052606401611275565b5f8d8152600c60205260409020600181018390556002018390555b604080518c81526020810186905290810182905260608101839052608081018490526001600160a01b038716908e907f05e309fd6ce72f2ab888a20056bb4210df08daed86f21f95053deb19964d86b19060a00160405180910390a350505f600d555050505050505050505050565b335f908152602081905260408120546001146114b05760405162461bcd60e51b81526004016106ea90612404565b600d54156114d05760405162461bcd60e51b81526004016106ea9061243b565b6001600d819055600e5481116114f85760405162461bcd60e51b81526004016106ea906124b6565b5f86116115475760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d7461620000000000000060448201526064016106ea565b5f85116115965760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d6c6f740000000000000060448201526064016106ea565b6001600160ff1b038511156115ed5760405162461bcd60e51b815260206004820181905260248201527f4c6f636b7374616b65436c69707065722f6f7665722d6d6178696e742d6c6f7460448201526064016106ea565b6001600160a01b0384166116435760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f7a65726f2d7573720000000000000060448201526064016106ea565b600a80546001019081905591508161169d5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b7374616b65436c69707065722f6f766572666c6f770000000000000060448201526064016106ea565b600b8054600181810183555f8390527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910184905590546116df9190612548565b5f838152600c602052604081209182556001820188905560028201879055600382018790556001600160601b034216600160a01b026001600160a01b0387161760049092019190915561173b611733611ff0565b6005546121c7565b90505f811161178c5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b7374616b65436c69707065722f7a65726f2d746f702d70726963650060448201526064016106ea565b5f838152600c602052604081206005018290556008546001600160c01b03600160401b8204169167ffffffffffffffff90911690821515806117cd57505f82115b1561186b576117dc8a83611e1d565b6117e690846125e4565b60025460405163f24e23eb60e01b81529192506001600160a01b037f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81169263f24e23eb9261183d9216908b908690600401612575565b5f604051808303815f87803b158015611854575f80fd5b505af1158015611866573d5f803e3d5ffd5b505050505b604051635c2e41c160e01b81526001600160a01b038981166004830152602482018b90527f0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae77951690635c2e41c1906044015f604051808303815f87803b1580156118d2575f80fd5b505af11580156118e4573d5f803e3d5ffd5b505060408051878152602081018e90529081018c9052606081018490526001600160a01b03808b1693508b16915088907f7c5bfdc0a5e8192f6cd4972f382cec69116862fb62e6abff8003874c58e064b89060800160405180910390a450505f600d5550919695505050505050565b335f908152602081905260409020546001146119815760405162461bcd60e51b81526004016106ea90612404565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b335f908152602081905260409020546001146119f25760405162461bcd60e51b81526004016106ea90612404565b600d5415611a125760405162461bcd60e51b81526004016106ea9061243b565b6001600d556639b837ba3a32b960c91b829003611a4957600380546001600160a01b0319166001600160a01b038316179055611acd565b8162646f6760e81b03611a7657600180546001600160a01b0319166001600160a01b038316179055611acd565b8162766f7760e81b03611aa357600280546001600160a01b0319166001600160a01b038316179055611acd565b816363616c6360e01b03610a9157600480546001600160a01b0319166001600160a01b0383161790555b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba90602001610b1c565b600d5415611b285760405162461bcd60e51b81526004016106ea9061243b565b6001600d55600e546002908111611b515760405162461bcd60e51b81526004016106ea906124b6565b5f838152600c6020526040902060048101546005909101546001600160a01b03821691600160a01b90046001600160601b03169082611ba25760405162461bcd60e51b81526004016106ea90612472565b5f611bad8383611f16565b50905080611bfd5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b7374616b65436c69707065722f63616e6e6f742d726573657400000060448201526064016106ea565b5f878152600c6020526040812060018101546002820154600490920180546001600160a01b0316600160a01b426001600160601b03160217905591611c40611ff0565b9050611c4e816005546121c7565b94505f8511611c9f5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b7374616b65436c69707065722f7a65726f2d746f702d70726963650060448201526064016106ea565b5f8a8152600c602052604081206005018690556008546001600160c01b03600160401b8204169167ffffffffffffffff9091169082151580611ce057505f82115b15611db057600954808710801590611d01575080611cfe868861250c565b10155b15611dae57611d108784611e1d565b611d1a90856125e4565b91507f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663f24e23eb60025f9054906101000a90046001600160a01b03168f856040518463ffffffff1660e01b8152600401611d8093929190612575565b5f604051808303815f87803b158015611d97575f80fd5b505af1158015611da9573d5f803e3d5ffd5b505050505b505b6040805189815260208101889052908101869052606081018290526001600160a01b03808e1691908c16908f907f275de7ecdd375b5e8049319f8b350686131c219dd4dc450a08e9cf83b03c865f9060800160405180910390a450505f600d555050505050505050505050565b5f670de0b6b3a7640000611e31838561250c565b611e3b9190612529565b9392505050565b600b80545f9190611e5590600190612548565b81548110611e6557611e656125f7565b905f5260205f2001549050808214611eba575f828152600c6020526040902054600b805483919083908110611e9c57611e9c6125f7565b5f918252602080832090910192909255838152600c90915260409020555b600b805480611ecb57611ecb61260b565b5f828152602080822083015f19908101839055909201909255928152600c90925250604081208181556001810182905560028101829055600381018290556004810182905560050155565b6004545f9081906001600160a01b031663487a239584611f3f6001600160601b03881642612548565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015611f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa291906123ed565b600654909150611fbb6001600160601b03861642612548565b1180611fd15750600754611fcf82856121df565b105b91509250929050565b5f81831115611fe95781611e3b565b5090919050565b600354604051636cb1c69b60e11b81527f4c534556322d410000000000000000000000000000000000000000000000000060048201525f9182916001600160a01b039091169063d9638d369060240160408051808303815f875af115801561205a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207e919061261f565b5090505f80826001600160a01b03166359e02dd76040518163ffffffff1660e01b815260040160408051808303815f875af11580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e3919061264b565b91509150806121345760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b7374616b65436c69707065722f696e76616c69642d7072696365000060448201526064016106ea565b6121bf612145633b9aca008461250c565b60035f9054906101000a90046001600160a01b03166001600160a01b031663495d32cb6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015612196573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ba91906123ed565b6121df565b935050505090565b5f6b033b2e3c9fd0803ce8000000611e31838561250c565b5f81611e316b033b2e3c9fd0803ce80000008561250c565b602080825282518282018190525f9190848201906040850190845b8181101561222e57835183529284019291840191600101612212565b50909695505050505050565b5f6020828403121561224a575f80fd5b5035919050565b5f8060408385031215612262575f80fd5b50508035926020909101359150565b6001600160a01b0381168114612285575f80fd5b50565b5f60208284031215612298575f80fd5b8135611e3b81612271565b5f805f805f8060a087890312156122b8575f80fd5b86359550602087013594506040870135935060608701356122d881612271565b9250608087013567ffffffffffffffff808211156122f4575f80fd5b818901915089601f830112612307575f80fd5b813581811115612315575f80fd5b8a6020828501011115612326575f80fd5b6020830194508093505050509295509295509295565b5f805f806080858703121561234f575f80fd5b8435935060208501359250604085013561236881612271565b9150606085013561237881612271565b939692955090935050565b5f8060408385031215612394575f80fd5b8235915060208301356123a681612271565b809150509250929050565b5f805f805f60a086880312156123c5575f80fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b5f602082840312156123fd575f80fd5b5051919050565b6020808252601f908201527f4c6f636b7374616b65436c69707065722f6e6f742d617574686f72697a656400604082015260600190565b6020808252601e908201527f4c6f636b7374616b65436c69707065722f73797374656d2d6c6f636b65640000604082015260600190565b60208082526024908201527f4c6f636b7374616b65436c69707065722f6e6f742d72756e6e696e672d6175636040820152633a34b7b760e11b606082015260800190565b60208082526022908201527f4c6f636b7374616b65436c69707065722f73746f707065642d696e636f72726560408201526118dd60f21b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612523576125236124f8565b92915050565b5f8261254357634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612523576125236124f8565b5f600160ff1b820161256f5761256f6124f8565b505f0390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b80820180821115612523576125236124f8565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8060408385031215612630575f80fd5b825161263b81612271565b6020939093015192949293505050565b5f806040838503121561265c575f80fd5b82519150602083015180151581146123a6575f80fdfea2646970667358221220f0c77d7f2164e9f7ea93e72aeaac06f71a6de490facd0f1234e9bb5b49f4c1f964736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b00000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a3000000000000000000000000135954d155898d42c90d2a57824c690e0c7bef1b0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae7795
-----Decoded View---------------
Arg [0] : vat_ (address): 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B
Arg [1] : spotter_ (address): 0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3
Arg [2] : dog_ (address): 0x135954d155898D42C90D2a57824C690e0c7BEf1B
Arg [3] : engine_ (address): 0x6E7BfAEBd173dC08466B21e61FBc09106eAe7795
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b
Arg [1] : 00000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a3
Arg [2] : 000000000000000000000000135954d155898d42c90d2a57824c690e0c7bef1b
Arg [3] : 0000000000000000000000006e7bfaebd173dc08466b21e61fbc09106eae7795
Deployed Bytecode Sourcemap
2003:16376:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16714:86;16780:6;:13;16714:86;;;160:25:1;;;148:2;133:18;16714:86:0;;;;;;;;17806:134;;;:::i;:::-;;16856:87;;;:::i;:::-;;;;;;;:::i;2980:19::-;;;;;;2878:18;;;;;;18019:358;;;;;;:::i;:::-;;:::i;3290:18::-;;;;;-1:-1:-1;;;3290:18:0;;-1:-1:-1;;;;;3290:18:0;;;;;;-1:-1:-1;;;;;1182:32:1;;;1164:51;;1152:2;1137:18;3290::0;1018:203:1;5777:774:0;;;;;;:::i;:::-;;:::i;2756:26::-;;;;;-1:-1:-1;;;;;2756:26:0;;;;;;-1:-1:-1;;;;;1661:32:1;;;1643:51;;1631:2;1616:18;2756:26:0;1479:221:1;2491:40:0;;;;;3086:19;;;;;;17041:399;;;;;;:::i;:::-;;:::i;:::-;;;;2177:14:1;;2170:22;2152:41;;2224:2;2209:18;;2202:34;;;;2252:18;;;2245:34;2310:2;2295:18;;2288:34;2139:3;2124:19;17041:399:0;1927:401:1;2684:22:0;;;;;-1:-1:-1;;;;;2684:22:0;;;2102:76;;;;;;:::i;:::-;;:::i;4215:26::-;;;;;;3543:23;;;;;;:::i;:::-;;:::i;12651:3707::-;;;;;;:::i;:::-;;:::i;8404:1691::-;;;;;;:::i;:::-;;:::i;2816:23::-;;;;;-1:-1:-1;;;;;2816:23:0;;;2183:76;;;;;;:::i;:::-;;:::i;3985:37::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3985:37:0;;;-1:-1:-1;;;3985:37:0;;-1:-1:-1;;;;;3985:37:0;;;;;;;;4935:25:1;;;4991:2;4976:18;;4969:34;;;;5019:18;;;5012:34;;;;5077:2;5062:18;;5055:34;;;;-1:-1:-1;;;;;5126:32:1;5120:3;5105:19;;5098:61;-1:-1:-1;;;;;5196:39:1;5146:3;5175:19;;5168:68;5267:3;5252:19;;5245:35;4922:3;4907:19;3985:37:0;4622:664:1;3188:19:0;;;;;;;;;;;;5465:18:1;5453:31;;;5435:50;;5423:2;5408:18;3188:19:0;5291:200:1;3392:20:0;;;;;;2055:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;2629:22;;;;;-1:-1:-1;;;;;2629:22:0;;;2398:40;;;;;2559:43;;;;;3495:22;;;;;;6556:386;;;;;;:::i;:::-;;:::i;10197:1289::-;;;;;;:::i;:::-;;:::i;17806:134::-;17867:22;;-1:-1:-1;;;17867:22:0;;17885:3;17867:22;;;160:25:1;17850:13:0;;17875:3;-1:-1:-1;;;;;17867:17:0;;;;133:18:1;;17867:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17919:3;;:13;;-1:-1:-1;;;17919:13:0;;17928:3;17919:13;;;160:25:1;17844:45:0;;-1:-1:-1;17907:26:0;;-1:-1:-1;17844:45:0;;-1:-1:-1;;;;;;17919:3:0;;-1:-1:-1;17919:8:0;;-1:-1:-1;133:18:1;;17919:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17907:4;:26::i;:::-;17899:5;:34;-1:-1:-1;17806:134:0:o;16856:87::-;16895:16;16930:6;16923:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16856:87;:::o;18019:358::-;2302:10;2296:5;:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;;;;;;;;;5507:6:::1;::::0;:11;5499:54:::1;;;;-1:-1:-1::0;;;5499:54:0::1;;;;;;;:::i;:::-;5572:1;5563:6;:10:::0;18107:1:::2;18082:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;;::::0;-1:-1:-1;;;;;18082:13:0::2;18074:76;;;;-1:-1:-1::0;;;18074:76:0::2;;;;;;;:::i;:::-;18160:3;::::0;;::::2;18174:9:::0;;;:5:::2;:9;::::0;;;;;;:13;;::::2;::::0;18160:28;;-1:-1:-1;;;18160:28:0;;18169:3:::2;18160:28;::::0;::::2;8697:25:1::0;8738:18;;;8731:34;;;;-1:-1:-1;;;;;18160:3:0::2;::::0;:8:::2;::::0;8670:18:1;;18160:28:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;18198:11:0::2;18212:9:::0;;;:5:::2;:9;::::0;;;;;;:13:::2;;::::0;18235:45;;-1:-1:-1;;;18235:45:0;;18244:3:::2;18235:45;::::0;::::2;9007:25:1::0;18257:4:0::2;9086:18:1::0;;;9079:43;18264:10:0::2;9138:18:1::0;;;9131:43;9190:18;;;9183:34;;;18212:13:0;;-1:-1:-1;18235:3:0::2;-1:-1:-1::0;;;;;18235:8:0::2;::::0;::::2;::::0;8979:19:1;;18235:45:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;18306:9:0::2;::::0;;;:5:::2;:9;::::0;;;;;:13:::2;::::0;;::::2;::::0;18290:36;;-1:-1:-1;;;18290:36:0;;-1:-1:-1;;;;;18306:13:0;;::::2;18290:36:::0;;::::2;9446:51:1::0;;;;9513:18;;;9506:34;;;9556:18;;;9549:34;;;;18290:6:0::2;:15;::::0;-1:-1:-1;18290:15:0::2;::::0;9419:18:1;;18290:36:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;18336:11;18344:2;18336:7;:11::i;:::-;18362:8;::::0;160:25:1;;;18362:8:0::2;::::0;148:2:1;133:18;18362:8:0::2;;;;;;;-1:-1:-1::0;;5603:1:0::1;5594:6;:10:::0;18019:358::o;5777:774::-;2302:10;2296:5;:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;5507:6:::1;::::0;:11;5499:54:::1;;;;-1:-1:-1::0;;;5499:54:0::1;;;;;;;:::i;:::-;5572:1;5563:6;:10:::0;-1:-1:-1;;;5857:13:0;;;5848:665:::2;;5880:3;:10:::0;;;5848:665:::2;;;5909:4;-1:-1:-1::0;;;5909:14:0;5905:608:::2;;5931:4;:11:::0;;;5905:608:::2;;;6008:4;-1:-1:-1::0;;;6008:14:0;6004:509:::2;;6030:4;:11:::0;;;6004:509:::2;;;6110:4;-1:-1:-1::0;;;6110:14:0;6106:407:::2;;6132:4;:19:::0;;-1:-1:-1;;6132:19:0::2;;::::0;::::2;;::::0;;6106:407:::2;;;6246:4;-1:-1:-1::0;;;6246:13:0;6242:271:::2;;6269:3;:19:::0;;;::::2;-1:-1:-1::0;;;;;;;;6269:19:0;::::2;;;::::0;;6242:271:::2;;;6374:4;-1:-1:-1::0;;;6374:17:0;6370:143:::2;;6393:7;:14:::0;;;6370:143:::2;;;6463:50;::::0;-1:-1:-1;;;6463:50:0;;9796:2:1;6463:50:0::2;::::0;::::2;9778:21:1::0;9835:2;9815:18;;;9808:30;9874:34;9854:18;;;9847:62;-1:-1:-1;;;9925:18:1;;;9918:38;9973:19;;6463:50:0::2;9594:404:1::0;6370:143:0::2;6533:4;6528:16;6539:4;6528:16;;;;160:25:1::0;;148:2;133:18;;14:177;6528:16:0::2;;;;;;;;-1:-1:-1::0;;5603:1:0::1;5594:6;:10:::0;5777:774::o;17041:399::-;17095:14;17205:9;;;:5;:9;;;;;:13;;;;17313;;;;;17095:14;;;;;;-1:-1:-1;;;;;17205:13:0;;;-1:-1:-1;;;17242:13:0;;;-1:-1:-1;;;;;17242:13:0;;17095:14;;17301:26;;17242:13;;17301:6;:26::i;:::-;17285:42;-1:-1:-1;17285:42:0;-1:-1:-1;;;;;;17350:17:0;;;;;;:25;;;17371:4;17350:25;17391:9;;;;:5;:9;;;;;;:13;;;;17420;;;;;17338:37;;17041:399;;17391:13;;-1:-1:-1;17420:13:0;17041:399;-1:-1:-1;;;;;17041:399:0:o;2102:76::-;2302:10;2296:5;:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2145:10:0;::::1;:5;:10:::0;;;::::1;::::0;;;;;;;2158:1:::1;2145:14:::0;;2166:9;::::1;::::0;2145:5;2166:9:::1;2102:76:::0;:::o;3543:23::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3543:23:0;:::o;12651:3707::-;5507:6;;:11;5499:54;;;;-1:-1:-1;;;5499:54:0;;;;;;;:::i;:::-;5572:1;5563:6;:10;5669:7:::1;::::0;13081:1:::1;::::0;5669:15;-1:-1:-1;5661:62:0::1;;;;-1:-1:-1::0;;;5661:62:0::1;;;;;;;:::i;:::-;13095:11:::2;13109:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;;::::0;-1:-1:-1;;;;;13109:13:0;::::2;::::0;-1:-1:-1;;;13146:13:0;::::2;-1:-1:-1::0;;;;;13146:13:0::2;13109::::0;13170:66:::2;;;;-1:-1:-1::0;;;13170:66:0::2;;;;;;;:::i;:::-;13247:13;13335:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;;::::0;13247;;13323:26:::2;::::0;13330:3;;13323:6:::2;:26::i;:::-;13307:42:::0;-1:-1:-1;13307:42:0;-1:-1:-1;13425:5:0;::::2;13417:46;;;::::0;-1:-1:-1;;;13417:46:0;;10608:2:1;13417:46:0::2;::::0;::::2;10590:21:1::0;10647:2;10627:18;;;10620:30;10686;10666:18;;;10659:58;10734:18;;13417:46:0::2;10406:352:1::0;13417:46:0::2;13270:204;13546:5;13539:3;:12;;13531:55;;;::::0;-1:-1:-1;;;13531:55:0;;10965:2:1;13531:55:0::2;::::0;::::2;10947:21:1::0;11004:2;10984:18;;;10977:30;11043:32;11023:18;;;11016:60;11093:18;;13531:55:0::2;10763:354:1::0;13531:55:0::2;13597:11;13611:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;::::0;::::2;::::0;13648::::2;::::0;;::::2;::::0;13611;;13597:11;13778:13:::2;13611::::0;13787:3;13778::::2;:13::i;:::-;13762:29:::0;-1:-1:-1;13883:13:0::2;13891:5:::0;13762:29;13883:13:::2;:::i;:::-;13877:19;;13971:3;13965;:9;13961:916;;;14043:3:::0;;-1:-1:-1;14136:11:0::2;14142:5:::0;14043:3;14136:11:::2;:::i;:::-;14128:19;;13961:916;;;14241:3;14235;:9;:24;;;;;14256:3;14248:5;:11;14235:24;14231:646;;;14375:5;::::0;;14402:9:::2;14408:3:::0;14402;:9:::2;:::i;:::-;:18;14398:465;;;14558:6;14552:3;:12;14544:61;;;::::0;-1:-1:-1;;;14544:61:0;;11984:2:1;14544:61:0::2;::::0;::::2;11966:21:1::0;12023:2;12003:18;;;11996:30;12062:34;12042:18;;;12035:62;-1:-1:-1;;;12113:18:1;;;12106:34;12157:19;;14544:61:0::2;11782:400:1::0;14544:61:0::2;14677:12;14683:6:::0;14677:3;:12:::2;:::i;:::-;14671:18:::0;-1:-1:-1;14775:11:0::2;14781:5:::0;14671:18;14775:11:::2;:::i;:::-;14767:19;;14398:465;14261:616;14231:646;14952:9;14958:3:::0;14952;:9:::2;:::i;:::-;14946:15:::0;-1:-1:-1;15062:11:0::2;15068:5:::0;15062:3;:11:::2;:::i;:::-;15056:17:::0;-1:-1:-1;;;;;;15126:3:0::2;:8;;15135:3;15148:4;15155:14;15163:5:::0;15155:14:::2;:::i;:::-;15126:44;::::0;-1:-1:-1;;;;;;15126:44:0::2;::::0;;;;;;::::2;::::0;::::2;12528:25:1::0;;;;-1:-1:-1;;;;;12589:32:1;;;12569:18;;;12562:60;12638:18;;;12631:34;12501:18;;15126:44:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15184:30:0::2;::::0;-1:-1:-1;;;15184:30:0;;-1:-1:-1;;;;;15184:6:0::2;:13;::::0;-1:-1:-1;15184:13:0::2;::::0;-1:-1:-1;15184:30:0::2;::::0;15198:3;;15203;;15208:5;;15184:30:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15452:3:0::2;::::0;-1:-1:-1;;;;;15452:3:0::2;::::0;-1:-1:-1;;15473:15:0;;;;;:38:::2;;;15507:3;-1:-1:-1::0;;;;;15492:19:0::2;:3;-1:-1:-1::0;;;;;15492:19:0::2;;;15473:38;:62;;;;;15530:4;-1:-1:-1::0;;;;;15515:20:0::2;:3;-1:-1:-1::0;;;;;15515:20:0::2;;;15473:62;:88;;;;;15554:6;-1:-1:-1::0;;;;;15539:22:0::2;:3;-1:-1:-1::0;;;;;15539:22:0::2;;;15473:88;15469:187;;;15595:3;-1:-1:-1::0;;;;;15581:30:0::2;;15612:10;15624:3;15629:5;15636:4;;15581:60;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;15469:187;15726:3;::::0;15705:30:::2;::::0;-1:-1:-1;;;15705:30:0;;-1:-1:-1;;;;;15705:3:0::2;:8:::0;::::2;::::0;::::2;::::0;:30:::2;::::0;15714:10:::2;::::0;15726:3:::2;::::0;15731;;15705:30:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;15814:4;-1:-1:-1::0;;;;;15814:9:0::2;;15824:3;15829;15836:1;15829:8;:26;;15852:3;15829:26;;;15840:9;15846:3:::0;15840;:9:::2;:::i;:::-;15814:42;::::0;-1:-1:-1;;;;;;15814:42:0::2;::::0;;;;;;::::2;::::0;::::2;8697:25:1::0;;;;8738:18;;;8731:34;8670:18;;15814:42:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;13693:2174;;15881:3;15888:1;15881:8:::0;15877:419:::2;;15905:11;15919:9:::0;;;:5:::2;:9;::::0;;;;;:13:::2;;::::0;15946:28;;-1:-1:-1;;;15946:28:0;;-1:-1:-1;;;;;9464:32:1;;;15946:28:0::2;::::0;::::2;9446:51:1::0;9513:18;;;9506:34;;;9556:18;;;9549:34;;;;15919:13:0;;15946:6:::2;:15;::::0;::::2;::::0;9419:18:1;;15946:28:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;15988:11;15996:2;15988:7;:11::i;:::-;15891:119;15877:419;;;16020:3;16027:1;16020:8:::0;16016:280:::2;;16044:11;16058:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;;::::0;-1:-1:-1;;;;;16085:3:0::2;:8;;16094:3;16107:4;16114:12;16122:3:::0;16114:12:::2;:::i;:::-;16085:42;::::0;-1:-1:-1;;;;;;16085:42:0::2;::::0;;;;;;::::2;::::0;::::2;12528:25:1::0;;;;-1:-1:-1;;;;;12589:32:1;;;12569:18;;;12562:60;12638:18;;;12631:34;12501:18;;16085:42:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;16141:6;-1:-1:-1::0;;;;;16141:15:0::2;;16157:3;16168;16162;:9;;;;:::i;:::-;16141:36;::::0;-1:-1:-1;;;;;;16141:36:0::2;::::0;;;;;;-1:-1:-1;;;;;9464:32:1;;;16141:36:0::2;::::0;::::2;9446:51:1::0;9513:18;;;9506:34;9556:18;;;9549:34;;;9419:18;;16141:36:0::2;9228:361:1::0;16016:280:0::2;16233:9;::::0;;;:5:::2;:9;::::0;;;;:13:::2;::::0;::::2;:19:::0;;;16266:13:::2;;:19:::0;;;16016:280:::2;16311:40;::::0;;14790:25:1;;;14846:2;14831:18;;14824:34;;;14874:18;;;14867:34;;;14932:2;14917:18;;14910:34;;;14975:3;14960:19;;14953:35;;;-1:-1:-1;;;;;16311:40:0;::::2;::::0;16316:2;;16311:40:::2;::::0;14777:3:1;14762:19;16311:40:0::2;;;;;;;-1:-1:-1::0;;5603:1:0;5594:6;:10;-1:-1:-1;;;;;;;;;;;12651:3707:0:o;8404:1691::-;2302:10;8766;2296:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;5507:6:::1;::::0;:11;5499:54:::1;;;;-1:-1:-1::0;;;5499:54:0::1;;;;;;;:::i;:::-;5572:1;5563:6;:10:::0;;;5669:7:::2;::::0;:15;-1:-1:-1;5661:62:0::2;;;;-1:-1:-1::0;;;5661:62:0::2;;;;;;;:::i;:::-;8855:1:::3;8824:3;:32;8816:70;;;::::0;-1:-1:-1;;;8816:70:0;;15201:2:1;8816:70:0::3;::::0;::::3;15183:21:1::0;15240:2;15220:18;;;15213:30;15279:27;15259:18;;;15252:55;15324:18;;8816:70:0::3;14999:349:1::0;8816:70:0::3;8935:1;8904:3;:32;8896:70;;;::::0;-1:-1:-1;;;8896:70:0;;15555:2:1;8896:70:0::3;::::0;::::3;15537:21:1::0;15594:2;15574:18;;;15567:30;15633:27;15613:18;;;15606:55;15678:18;;8896:70:0::3;15353:349:1::0;8896:70:0::3;-1:-1:-1::0;;;;;8984:3:0::3;:32;;8976:77;;;::::0;-1:-1:-1;;;8976:77:0;;15909:2:1;8976:77:0::3;::::0;::::3;15891:21:1::0;;;15928:18;;;15921:30;15987:34;15967:18;;;15960:62;16039:18;;8976:77:0::3;15707:356:1::0;8976:77:0::3;-1:-1:-1::0;;;;;9136:32:0;::::3;9128:70;;;::::0;-1:-1:-1;;;9128:70:0;;16270:2:1;9128:70:0::3;::::0;::::3;16252:21:1::0;16309:2;16289:18;;;16282:30;16348:27;16328:18;;;16321:55;16393:18;;9128:70:0::3;16068:349:1::0;9128:70:0::3;9227:5;9225:7:::0;;::::3;;::::0;;;;;-1:-1:-1;9252:32:0;9244:70:::3;;;::::0;-1:-1:-1;;;9244:70:0;;16624:2:1;9244:70:0::3;::::0;::::3;16606:21:1::0;16663:2;16643:18;;;16636:30;16702:27;16682:18;;;16675:55;16747:18;;9244:70:0::3;16422:349:1::0;9244:70:0::3;9325:6;:15:::0;;::::3;::::0;;::::3;::::0;;-1:-1:-1;9325:15:0;;;;;;::::3;::::0;;;9367:13;;:17:::3;::::0;9325:15;9367:17:::3;:::i;:::-;9351:9;::::0;;;:5:::3;:9;::::0;;;;:33;;;9395:13:::3;::::0;::::3;:19:::0;;;9424:13:::3;::::0;::::3;:19:::0;;;9453:13:::3;::::0;::::3;:19:::0;;;-1:-1:-1;;;;;9534:15:0::3;9511:39;-1:-1:-1::0;;;9511:39:0::3;-1:-1:-1::0;;;;;9482:19:0;::::3;9511:39;9482:13;::::0;;::::3;9511:39:::0;;;;9588:25:::3;9593:14;:12;:14::i;:::-;9609:3;;9588:4;:25::i;:::-;9582:31;;9637:1;9631:3;:7;9623:51;;;::::0;-1:-1:-1;;;9623:51:0;;16978:2:1;9623:51:0::3;::::0;::::3;16960:21:1::0;17017:2;16997:18;;;16990:30;17056:33;17036:18;;;17029:61;17107:18;;9623:51:0::3;16776:355:1::0;9623:51:0::3;9684:9;::::0;;;:5:::3;:9;::::0;;;;:13:::3;;:19:::0;;;9767:3:::3;::::0;-1:-1:-1;;;;;;;;9767:3:0;::::3;;::::0;9796:4:::3;::::0;;::::3;::::0;9836:8;;;;:21:::3;;;9856:1;9848:5;:9;9836:21;9832:120;;;9887:16;9892:3;9897:5;9887:4;:16::i;:::-;9880:23;::::0;:4;:23:::3;:::i;:::-;9926:3;::::0;9917:24:::3;::::0;-1:-1:-1;;;9917:24:0;;9873:30;;-1:-1:-1;;;;;;9917:3:0::3;:8:::0;::::3;::::0;::::3;::::0;:24:::3;::::0;9926:3:::3;::::0;9931;;9873:30;;9917:24:::3;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;9832:120;10010:23;::::0;-1:-1:-1;;;10010:23:0;;-1:-1:-1;;;;;17328:32:1;;;10010:23:0::3;::::0;::::3;17310:51:1::0;17377:18;;;17370:34;;;10010:6:0::3;:13;::::0;::::3;::::0;17283:18:1;;10010:23:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;-1:-1:-1::0;;10049:39:0::3;::::0;;17646:25:1;;;17702:2;17687:18;;17680:34;;;17730:18;;;17723:34;;;17788:2;17773:18;;17766:34;;;-1:-1:-1;;;;;10049:39:0;;::::3;::::0;-1:-1:-1;10049:39:0;::::3;::::0;-1:-1:-1;10054:2:0;;10049:39:::3;::::0;17633:3:1;17618:19;10049:39:0::3;;;;;;;-1:-1:-1::0;;5603:1:0::1;5594:6;:10:::0;-1:-1:-1;8404:1691:0;;;-1:-1:-1;;;;;;8404:1691:0:o;2183:76::-;2302:10;2296:5;:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2226:10:0;::::1;2239:1;2226:10:::0;;;::::1;::::0;;;;;;;:14;;;2247:9;::::1;::::0;2239:1;2247:9:::1;2183:76:::0;:::o;6556:386::-;2302:10;2296:5;:17;;;;;;;;;;;2317:1;2296:22;2288:66;;;;-1:-1:-1;;;2288:66:0;;;;;;;:::i;:::-;5507:6:::1;::::0;:11;5499:54:::1;;;;-1:-1:-1::0;;;5499:54:0::1;;;;;;;:::i;:::-;5572:1;5563:6;:10:::0;-1:-1:-1;;;6631:17:0;;;6627:277:::2;;6650:7;:27:::0;;-1:-1:-1;;;;;;6650:27:0::2;-1:-1:-1::0;;;;;6650:27:0;::::2;;::::0;;6627:277:::2;;;6696:4;-1:-1:-1::0;;;6696:13:0;6692:212:::2;;6714:3;:19:::0;;-1:-1:-1;;;;;;6714:19:0::2;-1:-1:-1::0;;;;;6714:19:0;::::2;;::::0;;6692:212:::2;;;6752:4;-1:-1:-1::0;;;6752:13:0;6748:156:::2;;6770:3;:10:::0;;-1:-1:-1;;;;;;6770:10:0::2;-1:-1:-1::0;;;;;6770:10:0;::::2;;::::0;;6748:156:::2;;;6799:4;-1:-1:-1::0;;;6799:14:0;6795:109:::2;;6816:4;:23:::0;;-1:-1:-1;;;;;;6816:23:0::2;-1:-1:-1::0;;;;;6816:23:0;::::2;;::::0;;6795:109:::2;6919:16;::::0;-1:-1:-1;;;;;1661:32:1;;1643:51;;6924:4:0;;6919:16:::2;::::0;1631:2:1;1616:18;6919:16:0::2;1479:221:1::0;10197:1289:0;5507:6;;:11;5499:54;;;;-1:-1:-1;;;5499:54:0;;;;;;;:::i;:::-;5572:1;5563:6;:10;5669:7:::1;::::0;10354:1:::1;::::0;5669:15;-1:-1:-1;5661:62:0::1;;;;-1:-1:-1::0;;;5661:62:0::1;;;;;;;:::i;:::-;10396:11:::2;10410:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;::::0;::::2;::::0;10484::::2;::::0;;::::2;::::0;-1:-1:-1;;;;;10410:13:0;::::2;::::0;-1:-1:-1;;;10447:13:0;::::2;-1:-1:-1::0;;;;;10447:13:0::2;::::0;10410;10508:66:::2;;;;-1:-1:-1::0;;;10508:66:0::2;;;;;;;:::i;:::-;10671:9;10685:16;10692:3;10697;10685:6;:16::i;:::-;10670:31;;;10719:4;10711:46;;;::::0;-1:-1:-1;;;10711:46:0;;18013:2:1;10711:46:0::2;::::0;::::2;17995:21:1::0;18052:2;18032:18;;;18025:30;18091:31;18071:18;;;18064:59;18140:18;;10711:46:0::2;17811:353:1::0;10711:46:0::2;10768:11;10784:9:::0;;;:5:::2;:9;::::0;;;;:13:::2;::::0;::::2;::::0;10823::::2;::::0;::::2;::::0;10846::::2;::::0;;::::2;:39:::0;;-1:-1:-1;;;;;10846:39:0::2;-1:-1:-1::0;;;10869:15:0::2;-1:-1:-1::0;;;;;10846:39:0::2;;;::::0;;10784:13;10916:14:::2;:12;:14::i;:::-;10896:34;;10946:20;10951:9;10962:3;;10946:4;:20::i;:::-;10940:26;;10990:1;10984:3;:7;10976:51;;;::::0;-1:-1:-1;;;10976:51:0;;16978:2:1;10976:51:0::2;::::0;::::2;16960:21:1::0;17017:2;16997:18;;;16990:30;17056:33;17036:18;;;17029:61;17107:18;;10976:51:0::2;16776:355:1::0;10976:51:0::2;11037:9;::::0;;;:5:::2;:9;::::0;;;;:13:::2;;:19:::0;;;11120:3:::2;::::0;-1:-1:-1;;;;;;;;11120:3:0;::::2;;::::0;11149:4:::2;::::0;;::::2;::::0;11189:8;;;;:21:::2;;;11209:1;11201:5;:9;11189:21;11185:240;;;11243:5;::::0;11266:13;;::::2;::::0;::::2;::::0;:42:::2;;-1:-1:-1::0;11302:6:0;11283:15:::2;11289:9:::0;11283:3;:15:::2;:::i;:::-;:25;;11266:42;11262:153;;;11342:16;11347:3;11352:5;11342:4;:16::i;:::-;11335:23;::::0;:4;:23:::2;:::i;:::-;11328:30;;11376:3;-1:-1:-1::0;;;;;11376:8:0::2;;11385:3;;;;;;;;;-1:-1:-1::0;;;;;11385:3:0::2;11390;11395:4;11376:24;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;11262:153;11212:213;11185:240;11440:39;::::0;;17646:25:1;;;17702:2;17687:18;;17680:34;;;17730:18;;;17723:34;;;17788:2;17773:18;;17766:34;;;-1:-1:-1;;;;;11440:39:0;;::::2;::::0;;;::::2;::::0;11445:2;;11440:39:::2;::::0;17633:3:1;17618:19;11440:39:0::2;;;;;;;-1:-1:-1::0;;5603:1:0;5594:6;:10;-1:-1:-1;;;;;;;;;;;10197:1289:0:o;7189:102::-;7248:9;7028:8;7273:5;7277:1;7273;:5;:::i;:::-;:11;;;;:::i;:::-;7269:15;7189:102;-1:-1:-1;;;7189:102:0:o;16364:307::-;16431:6;16438:13;;16412;;16431:6;16438:17;;16454:1;;16438:17;:::i;:::-;16431:25;;;;;;;;:::i;:::-;;;;;;;;;16412:44;;16476:5;16470:2;:11;16466:151;;16497:14;16516:9;;;:5;:9;;;;;:13;16543:6;:14;;16562:5;;16543:6;16516:13;;16543:14;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;;16581:12;;;:5;:12;;;;;;:25;16466:151;16626:6;:12;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;16626:12:0;;;;;;;;;;;;16655:9;;;:5;:9;;;-1:-1:-1;16655:9:0;;;16648:16;;;16626:12;16648:16;;;;;;;;;;;;;;;;;;;;;;;;;;16364:307::o;17511:228::-;17619:4;;17575:9;;;;-1:-1:-1;;;;;17619:4:0;:10;17630:3;17635:21;-1:-1:-1;;;;;17635:21:0;;:15;:21;:::i;:::-;17619:38;;-1:-1:-1;;;;;;17619:38:0;;;;;;;;;;8697:25:1;;;;8738:18;;;8731:34;8670:18;;17619:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17700:4;;17611:46;;-1:-1:-1;17676:21:0;-1:-1:-1;;;;;17676:21:0;;:15;:21;:::i;:::-;:28;:55;;;;17727:4;;17708:16;17713:5;17720:3;17708:4;:16::i;:::-;:23;17676:55;17667:65;;17511:228;;;;;:::o;7080:104::-;7138:9;7168:1;7163;:6;;:14;;7176:1;7163:14;;;-1:-1:-1;7172:1:0;;7159:18;-1:-1:-1;7080:104:0:o;7751:276::-;7840:7;;:17;;-1:-1:-1;;;7840:17:0;;7853:3;7840:17;;;160:25:1;7793:17:0;;;;-1:-1:-1;;;;;7840:7:0;;;;:12;;133:18:1;;7840:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7822:35;;;7868:11;7881:8;7893:3;-1:-1:-1;;;;;7893:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7867:36;;;;7921:3;7913:46;;;;-1:-1:-1;;;7913:46:0;;19562:2:1;7913:46:0;;;19544:21:1;19601:2;19581:18;;;19574:30;19640:32;19620:18;;;19613:60;19690:18;;7913:46:0;19360:354:1;7913:46:0;7981:39;7986:18;6991:8;7994:3;7986:18;:::i;:::-;8006:7;;;;;;;;;-1:-1:-1;;;;;8006:7:0;-1:-1:-1;;;;;8006:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7981:4;:39::i;:::-;7969:51;;7812:215;;;7751:276;:::o;7296:102::-;7355:9;7065:8;7380:5;7384:1;7380;:5;:::i;7403:102::-;7462:9;7497:1;7487:7;7065:8;7487:1;:7;:::i;196:632:1:-;367:2;419:21;;;489:13;;392:18;;;511:22;;;338:4;;367:2;590:15;;;;564:2;549:18;;;338:4;633:169;647:6;644:1;641:13;633:169;;;708:13;;696:26;;777:15;;;;742:12;;;;669:1;662:9;633:169;;;-1:-1:-1;819:3:1;;196:632;-1:-1:-1;;;;;;196:632:1:o;833:180::-;892:6;945:2;933:9;924:7;920:23;916:32;913:52;;;961:1;958;951:12;913:52;-1:-1:-1;984:23:1;;833:180;-1:-1:-1;833:180:1:o;1226:248::-;1294:6;1302;1355:2;1343:9;1334:7;1330:23;1326:32;1323:52;;;1371:1;1368;1361:12;1323:52;-1:-1:-1;;1394:23:1;;;1464:2;1449:18;;;1436:32;;-1:-1:-1;1226:248:1:o;2541:131::-;-1:-1:-1;;;;;2616:31:1;;2606:42;;2596:70;;2662:1;2659;2652:12;2596:70;2541:131;:::o;2677:247::-;2736:6;2789:2;2777:9;2768:7;2764:23;2760:32;2757:52;;;2805:1;2802;2795:12;2757:52;2844:9;2831:23;2863:31;2888:5;2863:31;:::i;2929:932::-;3035:6;3043;3051;3059;3067;3075;3128:3;3116:9;3107:7;3103:23;3099:33;3096:53;;;3145:1;3142;3135:12;3096:53;3181:9;3168:23;3158:33;;3238:2;3227:9;3223:18;3210:32;3200:42;;3289:2;3278:9;3274:18;3261:32;3251:42;;3343:2;3332:9;3328:18;3315:32;3356:31;3381:5;3356:31;:::i;:::-;3406:5;-1:-1:-1;3462:3:1;3447:19;;3434:33;3486:18;3516:14;;;3513:34;;;3543:1;3540;3533:12;3513:34;3581:6;3570:9;3566:22;3556:32;;3626:7;3619:4;3615:2;3611:13;3607:27;3597:55;;3648:1;3645;3638:12;3597:55;3688:2;3675:16;3714:2;3706:6;3703:14;3700:34;;;3730:1;3727;3720:12;3700:34;3775:7;3770:2;3761:6;3757:2;3753:15;3749:24;3746:37;3743:57;;;3796:1;3793;3786:12;3743:57;3827:2;3823;3819:11;3809:21;;3849:6;3839:16;;;;;2929:932;;;;;;;;:::o;3866:525::-;3952:6;3960;3968;3976;4029:3;4017:9;4008:7;4004:23;4000:33;3997:53;;;4046:1;4043;4036:12;3997:53;4082:9;4069:23;4059:33;;4139:2;4128:9;4124:18;4111:32;4101:42;;4193:2;4182:9;4178:18;4165:32;4206:31;4231:5;4206:31;:::i;:::-;4256:5;-1:-1:-1;4313:2:1;4298:18;;4285:32;4326:33;4285:32;4326:33;:::i;:::-;3866:525;;;;-1:-1:-1;3866:525:1;;-1:-1:-1;;3866:525:1:o;6135:315::-;6203:6;6211;6264:2;6252:9;6243:7;6239:23;6235:32;6232:52;;;6280:1;6277;6270:12;6232:52;6316:9;6303:23;6293:33;;6376:2;6365:9;6361:18;6348:32;6389:31;6414:5;6389:31;:::i;:::-;6439:5;6429:15;;;6135:315;;;;;:::o;6775:430::-;6881:6;6889;6897;6905;6913;6966:3;6954:9;6945:7;6941:23;6937:33;6934:53;;;6983:1;6980;6973:12;6934:53;-1:-1:-1;;7006:16:1;;7062:2;7047:18;;7041:25;7106:2;7091:18;;7085:25;7150:2;7135:18;;7129:25;7194:3;7179:19;;;7173:26;7006:16;;7041:25;;-1:-1:-1;7085:25:1;7129;-1:-1:-1;7173:26:1;;-1:-1:-1;6775:430:1;-1:-1:-1;6775:430:1:o;7210:184::-;7280:6;7333:2;7321:9;7312:7;7308:23;7304:32;7301:52;;;7349:1;7346;7339:12;7301:52;-1:-1:-1;7372:16:1;;7210:184;-1:-1:-1;7210:184:1:o;7399:355::-;7601:2;7583:21;;;7640:2;7620:18;;;7613:30;7679:33;7674:2;7659:18;;7652:61;7745:2;7730:18;;7399:355::o;7759:354::-;7961:2;7943:21;;;8000:2;7980:18;;;7973:30;8039:32;8034:2;8019:18;;8012:60;8104:2;8089:18;;7759:354::o;8118:400::-;8320:2;8302:21;;;8359:2;8339:18;;;8332:30;8398:34;8393:2;8378:18;;8371:62;-1:-1:-1;;;8464:2:1;8449:18;;8442:34;8508:3;8493:19;;8118:400::o;10003:398::-;10205:2;10187:21;;;10244:2;10224:18;;;10217:30;10283:34;10278:2;10263:18;;10256:62;-1:-1:-1;;;10349:2:1;10334:18;;10327:32;10391:3;10376:19;;10003:398::o;11122:127::-;11183:10;11178:3;11174:20;11171:1;11164:31;11214:4;11211:1;11204:15;11238:4;11235:1;11228:15;11254:168;11327:9;;;11358;;11375:15;;;11369:22;;11355:37;11345:71;;11396:18;;:::i;:::-;11254:168;;;;:::o;11427:217::-;11467:1;11493;11483:132;;11537:10;11532:3;11528:20;11525:1;11518:31;11572:4;11569:1;11562:15;11600:4;11597:1;11590:15;11483:132;-1:-1:-1;11629:9:1;;11427:217::o;11649:128::-;11716:9;;;11737:11;;;11734:37;;;11751:18;;:::i;12187:136::-;12222:3;-1:-1:-1;;;12243:22:1;;12240:48;;12268:18;;:::i;:::-;-1:-1:-1;12308:1:1;12304:13;;12187:136::o;12676:375::-;-1:-1:-1;;;;;12934:15:1;;;12916:34;;12986:15;;;;12981:2;12966:18;;12959:43;13033:2;13018:18;;13011:34;;;;12866:2;12851:18;;12676:375::o;13056:632::-;13326:1;13322;13317:3;13313:11;13309:19;13301:6;13297:32;13286:9;13279:51;13366:6;13361:2;13350:9;13346:18;13339:34;13409:6;13404:2;13393:9;13389:18;13382:34;13452:3;13447:2;13436:9;13432:18;13425:31;13493:6;13487:3;13476:9;13472:19;13465:35;13551:6;13543;13537:3;13526:9;13522:19;13509:49;13608:1;13578:22;;;13602:3;13574:32;;;13567:43;;;;13671:2;13650:15;;;-1:-1:-1;;13646:29:1;13631:45;13627:55;;13056:632;-1:-1:-1;;;;13056:632:1:o;13693:125::-;13758:9;;;13779:10;;;13776:36;;;13792:18;;:::i;18169:127::-;18230:10;18225:3;18221:20;18218:1;18211:31;18261:4;18258:1;18251:15;18285:4;18282:1;18275:15;18301:127;18362:10;18357:3;18353:20;18350:1;18343:31;18393:4;18390:1;18383:15;18417:4;18414:1;18407:15;18686:326;18779:6;18787;18840:2;18828:9;18819:7;18815:23;18811:32;18808:52;;;18856:1;18853;18846:12;18808:52;18888:9;18882:16;18907:31;18932:5;18907:31;:::i;:::-;19002:2;18987:18;;;;18981:25;18957:5;;18981:25;;-1:-1:-1;;;18686:326:1:o;19017:338::-;19093:6;19101;19154:2;19142:9;19133:7;19129:23;19125:32;19122:52;;;19170:1;19167;19160:12;19122:52;19199:9;19193:16;19183:26;;19252:2;19241:9;19237:18;19231:25;19299:5;19292:13;19285:21;19278:5;19275:32;19265:60;;19321:1;19318;19311:12
Swarm Source
ipfs://f0c77d7f2164e9f7ea93e72aeaac06f71a6de490facd0f1234e9bb5b49f4c1f9
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.