Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
420,690,000,000 COPE
Holders
57
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000000001 COPEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
COPE
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-27 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // $COPE & $SEETHE // - no contract owner // - LP permanently locked // - initial marketcap of 100 ETH each // - 10% of each supply goes into a 1:1 pool // https://copeandseethe.lol/ interface Callable { function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool); } interface Router { function factory() external view returns (address); function positionManager() external view returns (address); function WETH9() external view returns (address); } interface Factory { function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address); } interface Pool { function initialize(uint160 _sqrtPriceX96) external; } interface PositionManager { struct MintParams { address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; address recipient; uint256 deadline; } struct CollectParams { uint256 tokenId; address recipient; uint128 amount0Max; uint128 amount1Max; } function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1); function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1); } interface ERC20 { function balanceOf(address) external view returns (uint256); function transfer(address, uint256) external returns (bool); } interface WETH is ERC20 { function withdraw(uint256) external; } contract Team { Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); struct Share { address payable user; uint256 shares; } Share[] public shares; uint256 public totalShares; ERC20 public cope; ERC20 public seethe; constructor(address _seethe) { cope = ERC20(msg.sender); seethe = ERC20(_seethe); _addShare(0xfb4E9D0ac9DA6b9cC6F0B0b7d2F59F92416b9E47, 5); _addShare(0x604CD20589D5c7297Da1A5eEC355dF8bbd6E3Aca, 4); _addShare(0xc881c6866cDffc46573619aE52F22a84A0706115, 1); } receive() external payable {} function withdrawETH() public { uint256 _balance = address(this).balance; if (_balance > 0) { for (uint256 i = 0; i < shares.length; i++) { Share memory _share = shares[i]; !_share.user.send(_balance * _share.shares / totalShares); } } } function withdrawToken(ERC20 _token) public { uint256 _balance = _token.balanceOf(address(this)); if (_balance > 0) { for (uint256 i = 0; i < shares.length; i++) { Share memory _share = shares[i]; _token.transfer(_share.user, _balance * _share.shares / totalShares); } } } function withdrawFees() external { WETH _weth = WETH(ROUTER.WETH9()); _weth.withdraw(_weth.balanceOf(address(this))); withdrawETH(); withdrawToken(cope); withdrawToken(seethe); } function _addShare(address _user, uint256 _shares) internal { shares.push(Share(payable(_user), _shares)); totalShares += _shares; } } contract TokenBase { uint256 constant internal UINT_MAX = type(uint256).max; uint256 constant internal INITIAL_SUPPLY = 42069e25; // 420,690,000,000 string public name; string public symbol; uint8 constant public decimals = 18; struct User { uint256 balance; mapping(address => uint256) allowance; } struct Info { uint256 totalSupply; mapping(address => User) users; } Info internal info; event Transfer(address indexed from, address indexed to, uint256 tokens); event Approval(address indexed owner, address indexed spender, uint256 tokens); function transfer(address _to, uint256 _tokens) external returns (bool) { return _transfer(msg.sender, _to, _tokens); } function approve(address _spender, uint256 _tokens) external returns (bool) { return _approve(msg.sender, _spender, _tokens); } function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) { uint256 _allowance = allowance(_from, msg.sender); require(_allowance >= _tokens); if (_allowance != UINT_MAX) { info.users[_from].allowance[msg.sender] -= _tokens; } return _transfer(_from, _to, _tokens); } function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) { _transfer(msg.sender, _to, _tokens); uint32 _size; assembly { _size := extcodesize(_to) } if (_size > 0) { require(Callable(_to).tokenCallback(msg.sender, _tokens, _data)); } return true; } function totalSupply() public view returns (uint256) { return info.totalSupply; } function balanceOf(address _user) public view returns (uint256) { return info.users[_user].balance; } function allowance(address _user, address _spender) public view returns (uint256) { return info.users[_user].allowance[_spender]; } function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) { info.users[_owner].allowance[_spender] = _tokens; emit Approval(_owner, _spender, _tokens); return true; } function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) { unchecked { require(balanceOf(_from) >= _tokens); info.users[_from].balance -= _tokens; info.users[_to].balance += _tokens; emit Transfer(_from, _to, _tokens); return true; } } } contract SEETHE is TokenBase { constructor() { name = "Seethe"; symbol = "SEETHE"; info.totalSupply = INITIAL_SUPPLY; info.users[msg.sender].balance = INITIAL_SUPPLY; emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY); } } contract COPE is TokenBase { uint256 constant private FLOAT_SCALAR = 2**64; uint128 constant private UINT128_MAX = type(uint128).max; Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); uint256 constant private INITIAL_ETH_MC = 100 ether; // 100 ETH initial market cap price uint256 constant private UPPER_ETH_MC = 1e6 ether; // 1,000,000 ETH max market cap price uint256 constant private ONE_TO_ONE_PERCENT = 10; // 10% (42,069,000,000) int24 constant private MIN_TICK = -887272; int24 constant private MAX_TICK = -MIN_TICK; uint160 constant private MIN_SQRT_RATIO = 4295128739; uint160 constant private MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; struct ExtraInfo { Team team; SEETHE seethe; address copePool; address seethePool; address oneToOnePool; uint256 copePositionId; uint256 seethePositionId; uint256 oneToOnePositionId; } ExtraInfo private extraInfo; constructor() { name = "Cope"; symbol = "COPE"; extraInfo.seethe = new SEETHE(); address _seethe = seethe(); extraInfo.team = new Team(_seethe); address _this = address(this); address _weth = ROUTER.WETH9(); (uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _this, INITIAL_SUPPLY, INITIAL_ETH_MC); extraInfo.copePool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000); Pool(copePool()).initialize(_initialSqrtPrice); (_initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _seethe, INITIAL_SUPPLY, INITIAL_ETH_MC); extraInfo.seethePool = Factory(ROUTER.factory()).createPool(_seethe, _weth, 10000); Pool(seethePool()).initialize(_initialSqrtPrice); uint256 _oneToOneTokens = ONE_TO_ONE_PERCENT * INITIAL_SUPPLY / 100; (_initialSqrtPrice, ) = _getPriceAndTickFromValues(true, _oneToOneTokens, _oneToOneTokens); extraInfo.oneToOnePool = Factory(ROUTER.factory()).createPool(_this, _seethe, 10000); Pool(oneToOnePool()).initialize(_initialSqrtPrice); } function initialize() external { require(totalSupply() == 0); address _this = address(this); address _weth = ROUTER.WETH9(); bool _weth0 = _weth < _this; PositionManager _pm = PositionManager(ROUTER.positionManager()); info.totalSupply = INITIAL_SUPPLY; info.users[_this].balance = INITIAL_SUPPLY; emit Transfer(address(0x0), _this, INITIAL_SUPPLY); _approve(_this, address(_pm), INITIAL_SUPPLY); ( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC); ( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC); uint256 _oneToOneTokens = ONE_TO_ONE_PERCENT * INITIAL_SUPPLY / 100; (extraInfo.copePositionId, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _this, token1: !_weth0 ? _weth : _this, fee: 10000, tickLower: _weth0 ? _maxTick : _minTick, tickUpper: !_weth0 ? _maxTick : _minTick, amount0Desired: _weth0 ? 0 : INITIAL_SUPPLY - _oneToOneTokens, amount1Desired: !_weth0 ? 0 : INITIAL_SUPPLY - _oneToOneTokens, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); address _seethe = seethe(); extraInfo.seethe.approve(address(_pm), INITIAL_SUPPLY); _weth0 = _weth < _seethe; ( , _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC); ( , _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC); (extraInfo.seethePositionId, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _seethe, token1: !_weth0 ? _weth : _seethe, fee: 10000, tickLower: _weth0 ? _maxTick : _minTick, tickUpper: !_weth0 ? _maxTick : _minTick, amount0Desired: _weth0 ? 0 : INITIAL_SUPPLY - _oneToOneTokens, amount1Desired: !_weth0 ? 0 : INITIAL_SUPPLY - _oneToOneTokens, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); bool _this0 = _this < _seethe; ( , int24 _oneToOneTick) = _getPriceAndTickFromValues(true, _oneToOneTokens, _oneToOneTokens); (extraInfo.oneToOnePositionId, , , ) = _pm.mint(PositionManager.MintParams({ token0: _this0 ? _this : _seethe, token1: !_this0 ? _this : _seethe, fee: 10000, tickLower: _oneToOneTick - 200, tickUpper: _oneToOneTick + 200, amount0Desired: _oneToOneTokens, amount1Desired: _oneToOneTokens, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); } function collectTradingFees() external { PositionManager _pm = PositionManager(ROUTER.positionManager()); _pm.collect(PositionManager.CollectParams({ tokenId: extraInfo.copePositionId, recipient: address(extraInfo.team), amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); _pm.collect(PositionManager.CollectParams({ tokenId: extraInfo.seethePositionId, recipient: address(extraInfo.team), amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); _pm.collect(PositionManager.CollectParams({ tokenId: extraInfo.oneToOnePositionId, recipient: address(extraInfo.team), amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); extraInfo.team.withdrawFees(); } function seethe() public view returns (address) { return address(extraInfo.seethe); } function copePool() public view returns (address) { return extraInfo.copePool; } function seethePool() public view returns (address) { return extraInfo.seethePool; } function oneToOnePool() public view returns (address) { return extraInfo.oneToOnePool; } function positions() external view returns (uint256 copePositionId, uint256 seethePositionId, uint256 oneToOnePositionId) { return (extraInfo.copePositionId, extraInfo.seethePositionId, extraInfo.oneToOnePositionId); } function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) { unchecked { uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick)); require(absTick <= uint256(int256(MAX_TICK)), 'T'); uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000; if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128; if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128; if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128; if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128; if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128; if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128; if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128; if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128; if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128; if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128; if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128; if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128; if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128; if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128; if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128; if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128; if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128; if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128; if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128; if (tick > 0) ratio = type(uint256).max / ratio; sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1)); } } function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) { unchecked { require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R'); uint256 ratio = uint256(sqrtPriceX96) << 32; uint256 r = ratio; uint256 msb = 0; assembly { let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(5, gt(r, 0xFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(4, gt(r, 0xFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(3, gt(r, 0xFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(2, gt(r, 0xF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(1, gt(r, 0x3)) msb := or(msb, f) r := shr(f, r) } assembly { let f := gt(r, 0x1) msb := or(msb, f) } if (msb >= 128) r = ratio >> (msb - 127); else r = ratio << (127 - msb); int256 log_2 = (int256(msb) - 128) << 64; assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(63, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(62, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(61, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(60, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(59, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(58, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(57, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(56, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(55, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(54, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(53, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(52, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(51, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(50, f)) } int256 log_sqrt10001 = log_2 * 255738958999603826347141; int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128); int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128); tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow; } } function _sqrt(uint256 _n) internal pure returns (uint256 result) { unchecked { uint256 _tmp = (_n + 1) / 2; result = _n; while (_tmp < result) { result = _tmp; _tmp = (_n / _tmp + _tmp) / 2; } } } function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) { uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth))); tick = _getTickAtSqrtRatio(_tmpPrice); tick = tick - (tick % 200); price = _getSqrtRatioAtTick(tick); } } contract Deploy { COPE immutable public cope; constructor() { cope = new COPE(); cope.initialize(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"copePool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oneToOnePool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positions","outputs":[{"internalType":"uint256","name":"copePositionId","type":"uint256"},{"internalType":"uint256","name":"seethePositionId","type":"uint256"},{"internalType":"uint256","name":"oneToOnePositionId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"seethe","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"seethePool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b50604080518082019091526004815263436f706560e01b60208201525f906200003a908262000e7e565b50604080518082019091526004815263434f504560e01b602082015260019062000065908262000e7e565b50604051620000749062000dc8565b604051809103905ff0801580156200008e573d5f803e3d5ffd5b50600580546001600160a01b0319166001600160a01b0392909216918217905580604051620000bd9062000dd6565b6001600160a01b039091168152602001604051809103905ff080158015620000e7573d5f803e3d5ffd5b50600480546001600160a01b0319166001600160a01b0392909216919091178155604080516312a9293f60e21b8152905130925f927368b3465833fb72a70ecdf485e0e4c7bd8665fc4592634aa4a4fc928281019260209291908290030181865afa15801562000159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017f919062000f46565b90505f620001b36001600160a01b03808516908416106c054f529ca52576bc689200000068056bc75e2d631000006200068d565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000207573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022d919062000f46565b60405163a167129560e01b81526001600160a01b03858116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af115801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000f46565b600680546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b1580156200030d575f80fd5b505af115801562000320573d5f803e3d5ffd5b5050505062000361846001600160a01b0316836001600160a01b0316106c054f529ca52576bc689200000068056bc75e2d631000006200068d60201b60201c565b50809150507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003dd919062000f46565b60405163a167129560e01b81526001600160a01b03868116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af115801562000435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045b919062000f46565b600780546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b158015620004bd575f80fd5b505af1158015620004d0573d5f803e3d5ffd5b505050505f60646c054f529ca52576bc6892000000600a620004f3919062000f89565b620004ff919062000fbd565b90506200050f600182806200068d565b50809250507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200058b919062000f46565b60405163a167129560e01b81526001600160a01b03868116600483015287811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af1158015620005e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000609919062000f46565b600880546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038481166004830152919091169063f637731d906024015f604051808303815f87803b1580156200066b575f80fd5b505af11580156200067e573d5f803e3d5ffd5b5050505050505050506200101f565b5f805f620006d586620006a15784620006a3565b855b8715620006b15785620006b3565b865b620006c390600160c01b62000fbd565b620006cf919062000f89565b62000715565b9050620006e28162000760565b9150620006f160c88362000fd3565b620006fd908362000ff7565b91506200070a8262000a85565b925050935093915050565b80600260018201045b818110156200075a578091506002818285816200073f576200073f62000fa9565b04018162000751576200075162000fa9565b0490506200071e565b50919050565b5f6401000276a36001600160a01b038316108015906200079c575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b620007d25760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106200086657607f810383901c915062000870565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1462000a76576001600160a01b03891662000a588262000a85565b6001600160a01b0316111562000a6f578162000a78565b8062000a78565b815b9998505050505050505050565b5f805f8360020b1262000a9c578260020b62000aa3565b8260020b5f035b9050620d89e881111562000ade5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401620007c9565b5f816001165f0362000af557600160801b62000b07565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000b32576ffff97272373d413259a46990580e213a0260801c5b600482161562000b52576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161562000b72576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161562000b92576fffcb9843d60f6159c9db58835c9266440260801c5b602082161562000bb2576fff973b41fa98c081472e6896dfb254c00260801c5b604082161562000bd2576fff2ea16466c96a3843ec78b326b528610260801c5b608082161562000bf2576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161562000c13576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161562000c34576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161562000c55576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161562000c76576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161562000c97576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161562000cb8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161562000cd9576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161562000cfa576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161562000d1c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161562000d3d576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161562000d5d576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161562000d7b576b048a170391f7dc42444e8fa20260801c5b5f8460020b131562000d9e57805f198162000d9a5762000d9a62000fa9565b0490505b64010000000081061562000db457600162000db6565b5f5b60ff16602082901c0192505050919050565b6109358062002afe83390190565b610843806200343383390190565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168062000e0d57607f821691505b6020821081036200075a57634e487b7160e01b5f52602260045260245ffd5b601f82111562000e79575f81815260208120601f850160051c8101602086101562000e545750805b601f850160051c820191505b8181101562000e755782815560010162000e60565b5050505b505050565b81516001600160401b0381111562000e9a5762000e9a62000de4565b62000eb28162000eab845462000df8565b8462000e2c565b602080601f83116001811462000ee8575f841562000ed05750858301515b5f19600386901b1c1916600185901b17855562000e75565b5f85815260208120601f198616915b8281101562000f185788860151825594840194600190910190840162000ef7565b508582101562000f3657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000f57575f80fd5b81516001600160a01b038116811462000f6e575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000fa35762000fa362000f75565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f8262000fce5762000fce62000fa9565b500490565b5f8260020b8062000fe85762000fe862000fa9565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171562000fa35762000fa362000f75565b611ad1806200102d5f395ff3fe608060405234801561000f575f80fd5b5060043610610105575f3560e01c806364f38fba1161009e57806395d89b411161006e57806395d89b4114610219578063a9059cbb14610221578063ba5b798214610234578063dd62ed3e14610258578063e68070c714610294575f80fd5b806364f38fba146101c757806370a08231146101d85780637c3a30d3146102005780638129fc1c14610211575f80fd5b806323b872dd116100d957806323b872dd1461017d578063313ce567146101905780634000aea0146101aa57806353f8b303146101bd575f80fd5b80628a34bc1461010957806306fdde0314610133578063095ea7b31461014857806318160ddd1461016b575b5f80fd5b6005546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61013b6102a5565b60405161012a9190611604565b61015b610156366004611666565b610330565b604051901515815260200161012a565b6002545b60405190815260200161012a565b61015b61018b366004611690565b610345565b610198601281565b60405160ff909116815260200161012a565b61015b6101b83660046116ce565b6103ce565b6101c561046f565b005b6008546001600160a01b0316610116565b61016f6101e6366004611750565b6001600160a01b03165f9081526003602052604090205490565b6006546001600160a01b0316610116565b6101c561070b565b61013b610df7565b61015b61022f366004611666565b610e04565b600954600a54600b546040805193845260208401929092529082015260600161012a565b61016f610266366004611772565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b6007546001600160a01b0316610116565b5f80546102b1906117a9565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd906117a9565b80156103285780601f106102ff57610100808354040283529160200191610328565b820191905f5260205f20905b81548152906001019060200180831161030b57829003601f168201915b505050505081565b5f61033c338484610e10565b90505b92915050565b6001600160a01b0383165f90815260036020908152604080832033845260010190915281205482811015610377575f80fd5b5f1981146103ba576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103b49084906117ef565b90915550505b6103c5858585610e7c565b95945050505050565b5f6103da338686610e7c565b50843b63ffffffff81161561046357604051636be32e7360e01b81526001600160a01b03871690636be32e739061041b903390899089908990600401611802565b6020604051808303815f875af1158015610437573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045b9190611849565b610463575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e49190611868565b604080516080810182526009548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f78659261053e929101611883565b60408051808303815f875af1158015610559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057d91906118c6565b505060408051608081018252600a548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529284169263fc6f7865926105d792909101611883565b60408051808303815f875af11580156105f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061691906118c6565b505060408051608081018252600b548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529284169263fc6f78659261067092909101611883565b60408051808303815f875af115801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af91906118c6565b505060048054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee92828201925f929082900301818387803b1580156106f2575f80fd5b505af1158015610704573d5f803e3d5ffd5b5050505050565b60025415610717575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107909190611868565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f9190611868565b6c054f529ca52576bc689200000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161088391815260200190565b60405180910390a36108a384826c054f529ca52576bc6892000000610e10565b505f6108c6836c054f529ca52576bc689200000068056bc75e2d63100000610f00565b9150505f6108ec846c054f529ca52576bc689200000069d3c21bcecceda1000000610f00565b91505f9050606461090b6c054f529ca52576bc6892000000600a6118e8565b6109159190611913565b9050836001600160a01b031663883164566040518061016001604052808861093d578a61093f565b895b6001600160a01b031681526020018815610959578a61095b565b895b6001600160a01b0316815261271060208201526040018861097c578661097e565b855b60020b815260200188156109925786610994565b855b60020b8152602001886109bd576109b8856c054f529ca52576bc68920000006117ef565b6109bf565b5f5b815260200188156109e6576109e1856c054f529ca52576bc68920000006117ef565b6109e8565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a289190611926565b6080604051808303815f875af1158015610a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6891906119ea565b5050506009555f610a816005546001600160a01b031690565b60055460405163095ea7b360e01b81526001600160a01b0388811660048301526c054f529ca52576bc6892000000602483015292935091169063095ea7b3906044016020604051808303815f875af1158015610adf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b039190611849565b50806001600160a01b0316876001600160a01b0316109550610b3c866c054f529ca52576bc689200000068056bc75e2d63100000610f00565b9450610b629050866c054f529ca52576bc689200000069d3c21bcecceda1000000610f00565b905080935050846001600160a01b0316638831645660405180610160016040528089610b8e5784610b90565b8a5b6001600160a01b031681526020018915610baa5784610bac565b8a5b6001600160a01b03168152612710602082015260400189610bcd5787610bcf565b865b60020b81526020018915610be35787610be5565b865b60020b815260200189610c0e57610c09866c054f529ca52576bc68920000006117ef565b610c10565b5f5b81526020018915610c3757610c32866c054f529ca52576bc68920000006117ef565b610c39565b5f5b81526020015f81526020015f81526020018b6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610c799190611926565b6080604051808303815f875af1158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb991906119ea565b505050600a556001600160a01b03808216908916105f610cdb60018580610f00565b915050866001600160a01b0316638831645660405180610160016040528085610d045786610d06565b8d5b6001600160a01b031681526020018515610d205786610d22565b8d5b6001600160a01b031681526127106020820152604001610d4360c886611a30565b60020b8152602001610d568560c8611a55565b60020b81526020018781526020018781526020015f81526020015f81526020018d6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610da59190611926565b6080604051808303815f875af1158015610dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de591906119ea565b505050600b5550505050505050505050565b600180546102b1906117a9565b5f61033c338484610e7c565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610e9f575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e6a9086815260200190565b5f805f610f3e86610f115784610f13565b855b8715610f1f5785610f21565b865b610f2f90600160c01b611913565b610f3991906118e8565b610f76565b9050610f4981610fb9565b9150610f5660c883611a7a565b610f609083611a30565b9150610f6b826112d6565b925050935093915050565b80600260018201045b81811015610fb357809150600281828581610f9c57610f9c6118ff565b040181610fab57610fab6118ff565b049050610f7f565b50919050565b5f6401000276a36001600160a01b03831610801590610ff4575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6110295760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106110bd57607f810383901c91506110c7565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146112c757886001600160a01b03166112ac826112d6565b6001600160a01b031611156112c157816112c9565b806112c9565b815b9998505050505050505050565b5f805f8360020b126112eb578260020b6112f2565b8260020b5f035b9050620d89e881111561132b5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611020565b5f816001165f0361134057600160801b611352565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611386576ffff97272373d413259a46990580e213a0260801c5b60048216156113a5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156113c4576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156113e3576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611402576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611421576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611440576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611460576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611480576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156114a0576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156114c0576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156114e0576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611500576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611520576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611540576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611561576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611581576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156115a0576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156115bd576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156115dc57805f19816115d8576115d86118ff565b0490505b6401000000008106156115f05760016115f2565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b8181101561162f57858101830151858201604001528201611613565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611663575f80fd5b50565b5f8060408385031215611677575f80fd5b82356116828161164f565b946020939093013593505050565b5f805f606084860312156116a2575f80fd5b83356116ad8161164f565b925060208401356116bd8161164f565b929592945050506040919091013590565b5f805f80606085870312156116e1575f80fd5b84356116ec8161164f565b935060208501359250604085013567ffffffffffffffff8082111561170f575f80fd5b818701915087601f830112611722575f80fd5b813581811115611730575f80fd5b886020828501011115611741575f80fd5b95989497505060200194505050565b5f60208284031215611760575f80fd5b813561176b8161164f565b9392505050565b5f8060408385031215611783575f80fd5b823561178e8161164f565b9150602083013561179e8161164f565b809150509250929050565b600181811c908216806117bd57607f821691505b602082108103610fb357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561033f5761033f6117db565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215611859575f80fd5b8151801515811461176b575f80fd5b5f60208284031215611878575f80fd5b815161176b8161164f565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f80604083850312156118d7575f80fd5b505080516020909101519092909150565b808202811582820484141761033f5761033f6117db565b634e487b7160e01b5f52601260045260245ffd5b5f82611921576119216118ff565b500490565b81516001600160a01b031681526101608101602083015161195260208401826001600160a01b03169052565b506040830151611969604084018262ffffff169052565b50606083015161197e606084018260020b9052565b506080830151611993608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516119d9828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156119fd575f80fd5b8451935060208501516001600160801b0381168114611a1a575f80fd5b6040860151606090960151949790965092505050565b600282810b9082900b03627fffff198112627fffff8213171561033f5761033f6117db565b600281810b9083900b01627fffff8113627fffff198212171561033f5761033f6117db565b5f8260020b80611a8c57611a8c6118ff565b808360020b079150509291505056fea2646970667358221220253919d771b132e3bc4d6385a54f3acc804b997c81ce03f0d2c9002829346d2864736f6c63430008150033608060405234801561000f575f80fd5b5060408051808201909152600681526553656574686560d01b60208201525f90610039908261015e565b5060408051808201909152600681526553454554484560d01b6020820152600190610064908261015e565b506c054f529ca52576bc68920000006002819055335f81815260036020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610219565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100ec57607f821691505b60208210810361010a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610159575f81815260208120601f850160051c810160208610156101365750805b601f850160051c820191505b8181101561015557828155600101610142565b5050505b505050565b81516001600160401b03811115610177576101776100c4565b61018b8161018584546100d8565b84610110565b602080601f8311600181146101be575f84156101a75750858301515b5f19600386901b1c1916600185901b178555610155565b5f85815260208120601f198616915b828110156101ec578886015182559484019460019091019084016101cd565b508582101561020957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61070f806102265f395ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c80634000aea0116100635780634000aea01461011f57806370a082311461013257806395d89b411461015a578063a9059cbb14610162578063dd62ed3e14610175575f80fd5b806306fdde031461009f578063095ea7b3146100bd57806318160ddd146100e057806323b872dd146100f2578063313ce56714610105575b5f80fd5b6100a76101b1565b6040516100b49190610484565b60405180910390f35b6100d06100cb3660046104ea565b61023c565b60405190151581526020016100b4565b6002545b6040519081526020016100b4565b6100d0610100366004610512565b610251565b61010d601281565b60405160ff90911681526020016100b4565b6100d061012d36600461054b565b6102da565b6100e46101403660046105cb565b6001600160a01b03165f9081526003602052604090205490565b6100a761037b565b6100d06101703660046104ea565b610388565b6100e46101833660046105e4565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f80546101bd90610615565b80601f01602080910402602001604051908101604052809291908181526020018280546101e990610615565b80156102345780601f1061020b57610100808354040283529160200191610234565b820191905f5260205f20905b81548152906001019060200180831161021757829003601f168201915b505050505081565b5f610248338484610394565b90505b92915050565b6001600160a01b0383165f90815260036020908152604080832033845260010190915281205482811015610283575f80fd5b5f1981146102c6576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906102c090849061064d565b90915550505b6102d1858585610400565b95945050505050565b5f6102e6338686610400565b50843b63ffffffff81161561036f57604051636be32e7360e01b81526001600160a01b03871690636be32e739061032790339089908990899060040161066c565b6020604051808303815f875af1158015610343573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036791906106b3565b61036f575f80fd5b50600195945050505050565b600180546101bd90610615565b5f610248338484610400565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610423575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103ee9086815260200190565b5f6020808352835180828501525f5b818110156104af57858101830151858201604001528201610493565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104e5575f80fd5b919050565b5f80604083850312156104fb575f80fd5b610504836104cf565b946020939093013593505050565b5f805f60608486031215610524575f80fd5b61052d846104cf565b925061053b602085016104cf565b9150604084013590509250925092565b5f805f806060858703121561055e575f80fd5b610567856104cf565b935060208501359250604085013567ffffffffffffffff8082111561058a575f80fd5b818701915087601f83011261059d575f80fd5b8135818111156105ab575f80fd5b8860208285010111156105bc575f80fd5b95989497505060200194505050565b5f602082840312156105db575f80fd5b610248826104cf565b5f80604083850312156105f5575f80fd5b6105fe836104cf565b915061060c602084016104cf565b90509250929050565b600181811c9082168061062957607f821691505b60208210810361064757634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561024b57634e487b7160e01b5f52601160045260245ffd5b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f602082840312156106c3575f80fd5b815180151581146106d2575f80fd5b939250505056fea264697066735822122002236e6fa9852094b36d343913b397d8bc5955f8a9a2b845275b2647e50ee86064736f6c63430008150033608060405234801561000f575f80fd5b5060405161084338038061084383398101604081905261002e91610168565b60028054336001600160a01b031991821617909155600380549091166001600160a01b03831617905561007673fb4e9d0ac9da6b9cc6f0b0b7d2f59f92416b9e4760056100ba565b61009573604cd20589d5c7297da1a5eec355df8bbd6e3aca60046100ba565b6100b473c881c6866cdffc46573619ae52f22a84a070611560016100ba565b506101ba565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5649092019190915581548392919061015f908490610195565b90915550505050565b5f60208284031215610178575f80fd5b81516001600160a01b038116811461018e575f80fd5b9392505050565b808201808211156101b457634e487b7160e01b5f52601160045260245ffd5b92915050565b61067c806101c75f395ff3fe608060405260043610610070575f3560e01c806357a858fc1161004c57806357a858fc146100f057806363e87bfd1461012e578063894760691461014d578063e086e5ec1461016c575f80fd5b80628a34bc1461007b5780633a98ef39146100b7578063476343ee146100da575f80fd5b3661007757005b5f80fd5b348015610086575f80fd5b5060035461009a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100c2575f80fd5b506100cc60015481565b6040519081526020016100ae565b3480156100e5575f80fd5b506100ee610180565b005b3480156100fb575f80fd5b5061010f61010a36600461052c565b6102e6565b604080516001600160a01b0390931683526020830191909152016100ae565b348015610139575f80fd5b5060025461009a906001600160a01b031681565b348015610158575f80fd5b506100ee610167366004610557565b61031b565b348015610177575f80fd5b506100ee610489565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f59190610579565b6040516370a0823160e01b81523060048201529091506001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610242573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102669190610594565b6040518263ffffffff1660e01b815260040161028491815260200190565b5f604051808303815f87803b15801561029b575f80fd5b505af11580156102ad573d5f803e3d5ffd5b505050506102b9610489565b6002546102ce906001600160a01b031661031b565b6003546102e3906001600160a01b031661031b565b50565b5f81815481106102f4575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561035f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103839190610594565b90508015610485575f5b5f54811015610483575f8082815481106103a9576103a96105ab565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945087169263a9059cbb92906103f890886105d3565b61040291906105f0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561044a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046e919061060f565b5050808061047b9061062e565b91505061038d565b505b5050565b4780156102e3575f5b5f54811015610485575f8082815481106104ae576104ae6105ab565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc91906104f790876105d3565b61050191906105f0565b6040518115909202915f818181858888f19350505050505080806105249061062e565b915050610492565b5f6020828403121561053c575f80fd5b5035919050565b6001600160a01b03811681146102e3575f80fd5b5f60208284031215610567575f80fd5b813561057281610543565b9392505050565b5f60208284031215610589575f80fd5b815161057281610543565b5f602082840312156105a4575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ea576105ea6105bf565b92915050565b5f8261060a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561061f575f80fd5b81518015158114610572575f80fd5b5f6001820161063f5761063f6105bf565b506001019056fea26469706673582212205c4c884e62f81cc8aba234c030e4b028f255a5109d70807c41a0a6a0b1457bcc64736f6c63430008150033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610105575f3560e01c806364f38fba1161009e57806395d89b411161006e57806395d89b4114610219578063a9059cbb14610221578063ba5b798214610234578063dd62ed3e14610258578063e68070c714610294575f80fd5b806364f38fba146101c757806370a08231146101d85780637c3a30d3146102005780638129fc1c14610211575f80fd5b806323b872dd116100d957806323b872dd1461017d578063313ce567146101905780634000aea0146101aa57806353f8b303146101bd575f80fd5b80628a34bc1461010957806306fdde0314610133578063095ea7b31461014857806318160ddd1461016b575b5f80fd5b6005546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61013b6102a5565b60405161012a9190611604565b61015b610156366004611666565b610330565b604051901515815260200161012a565b6002545b60405190815260200161012a565b61015b61018b366004611690565b610345565b610198601281565b60405160ff909116815260200161012a565b61015b6101b83660046116ce565b6103ce565b6101c561046f565b005b6008546001600160a01b0316610116565b61016f6101e6366004611750565b6001600160a01b03165f9081526003602052604090205490565b6006546001600160a01b0316610116565b6101c561070b565b61013b610df7565b61015b61022f366004611666565b610e04565b600954600a54600b546040805193845260208401929092529082015260600161012a565b61016f610266366004611772565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b6007546001600160a01b0316610116565b5f80546102b1906117a9565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd906117a9565b80156103285780601f106102ff57610100808354040283529160200191610328565b820191905f5260205f20905b81548152906001019060200180831161030b57829003601f168201915b505050505081565b5f61033c338484610e10565b90505b92915050565b6001600160a01b0383165f90815260036020908152604080832033845260010190915281205482811015610377575f80fd5b5f1981146103ba576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103b49084906117ef565b90915550505b6103c5858585610e7c565b95945050505050565b5f6103da338686610e7c565b50843b63ffffffff81161561046357604051636be32e7360e01b81526001600160a01b03871690636be32e739061041b903390899089908990600401611802565b6020604051808303815f875af1158015610437573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045b9190611849565b610463575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e49190611868565b604080516080810182526009548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f78659261053e929101611883565b60408051808303815f875af1158015610559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057d91906118c6565b505060408051608081018252600a548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529284169263fc6f7865926105d792909101611883565b60408051808303815f875af11580156105f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061691906118c6565b505060408051608081018252600b548152600480546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529284169263fc6f78659261067092909101611883565b60408051808303815f875af115801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af91906118c6565b505060048054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee92828201925f929082900301818387803b1580156106f2575f80fd5b505af1158015610704573d5f803e3d5ffd5b5050505050565b60025415610717575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107909190611868565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f9190611868565b6c054f529ca52576bc689200000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161088391815260200190565b60405180910390a36108a384826c054f529ca52576bc6892000000610e10565b505f6108c6836c054f529ca52576bc689200000068056bc75e2d63100000610f00565b9150505f6108ec846c054f529ca52576bc689200000069d3c21bcecceda1000000610f00565b91505f9050606461090b6c054f529ca52576bc6892000000600a6118e8565b6109159190611913565b9050836001600160a01b031663883164566040518061016001604052808861093d578a61093f565b895b6001600160a01b031681526020018815610959578a61095b565b895b6001600160a01b0316815261271060208201526040018861097c578661097e565b855b60020b815260200188156109925786610994565b855b60020b8152602001886109bd576109b8856c054f529ca52576bc68920000006117ef565b6109bf565b5f5b815260200188156109e6576109e1856c054f529ca52576bc68920000006117ef565b6109e8565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a289190611926565b6080604051808303815f875af1158015610a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6891906119ea565b5050506009555f610a816005546001600160a01b031690565b60055460405163095ea7b360e01b81526001600160a01b0388811660048301526c054f529ca52576bc6892000000602483015292935091169063095ea7b3906044016020604051808303815f875af1158015610adf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b039190611849565b50806001600160a01b0316876001600160a01b0316109550610b3c866c054f529ca52576bc689200000068056bc75e2d63100000610f00565b9450610b629050866c054f529ca52576bc689200000069d3c21bcecceda1000000610f00565b905080935050846001600160a01b0316638831645660405180610160016040528089610b8e5784610b90565b8a5b6001600160a01b031681526020018915610baa5784610bac565b8a5b6001600160a01b03168152612710602082015260400189610bcd5787610bcf565b865b60020b81526020018915610be35787610be5565b865b60020b815260200189610c0e57610c09866c054f529ca52576bc68920000006117ef565b610c10565b5f5b81526020018915610c3757610c32866c054f529ca52576bc68920000006117ef565b610c39565b5f5b81526020015f81526020015f81526020018b6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610c799190611926565b6080604051808303815f875af1158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb991906119ea565b505050600a556001600160a01b03808216908916105f610cdb60018580610f00565b915050866001600160a01b0316638831645660405180610160016040528085610d045786610d06565b8d5b6001600160a01b031681526020018515610d205786610d22565b8d5b6001600160a01b031681526127106020820152604001610d4360c886611a30565b60020b8152602001610d568560c8611a55565b60020b81526020018781526020018781526020015f81526020015f81526020018d6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610da59190611926565b6080604051808303815f875af1158015610dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de591906119ea565b505050600b5550505050505050505050565b600180546102b1906117a9565b5f61033c338484610e7c565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610e9f575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e6a9086815260200190565b5f805f610f3e86610f115784610f13565b855b8715610f1f5785610f21565b865b610f2f90600160c01b611913565b610f3991906118e8565b610f76565b9050610f4981610fb9565b9150610f5660c883611a7a565b610f609083611a30565b9150610f6b826112d6565b925050935093915050565b80600260018201045b81811015610fb357809150600281828581610f9c57610f9c6118ff565b040181610fab57610fab6118ff565b049050610f7f565b50919050565b5f6401000276a36001600160a01b03831610801590610ff4575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6110295760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106110bd57607f810383901c91506110c7565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146112c757886001600160a01b03166112ac826112d6565b6001600160a01b031611156112c157816112c9565b806112c9565b815b9998505050505050505050565b5f805f8360020b126112eb578260020b6112f2565b8260020b5f035b9050620d89e881111561132b5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611020565b5f816001165f0361134057600160801b611352565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611386576ffff97272373d413259a46990580e213a0260801c5b60048216156113a5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156113c4576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156113e3576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611402576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611421576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611440576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611460576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611480576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156114a0576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156114c0576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156114e0576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611500576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611520576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611540576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611561576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611581576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156115a0576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156115bd576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156115dc57805f19816115d8576115d86118ff565b0490505b6401000000008106156115f05760016115f2565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b8181101561162f57858101830151858201604001528201611613565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611663575f80fd5b50565b5f8060408385031215611677575f80fd5b82356116828161164f565b946020939093013593505050565b5f805f606084860312156116a2575f80fd5b83356116ad8161164f565b925060208401356116bd8161164f565b929592945050506040919091013590565b5f805f80606085870312156116e1575f80fd5b84356116ec8161164f565b935060208501359250604085013567ffffffffffffffff8082111561170f575f80fd5b818701915087601f830112611722575f80fd5b813581811115611730575f80fd5b886020828501011115611741575f80fd5b95989497505060200194505050565b5f60208284031215611760575f80fd5b813561176b8161164f565b9392505050565b5f8060408385031215611783575f80fd5b823561178e8161164f565b9150602083013561179e8161164f565b809150509250929050565b600181811c908216806117bd57607f821691505b602082108103610fb357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561033f5761033f6117db565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215611859575f80fd5b8151801515811461176b575f80fd5b5f60208284031215611878575f80fd5b815161176b8161164f565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f80604083850312156118d7575f80fd5b505080516020909101519092909150565b808202811582820484141761033f5761033f6117db565b634e487b7160e01b5f52601260045260245ffd5b5f82611921576119216118ff565b500490565b81516001600160a01b031681526101608101602083015161195260208401826001600160a01b03169052565b506040830151611969604084018262ffffff169052565b50606083015161197e606084018260020b9052565b506080830151611993608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516119d9828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156119fd575f80fd5b8451935060208501516001600160801b0381168114611a1a575f80fd5b6040860151606090960151949790965092505050565b600282810b9082900b03627fffff198112627fffff8213171561033f5761033f6117db565b600281810b9083900b01627fffff8113627fffff198212171561033f5761033f6117db565b5f8260020b80611a8c57611a8c6118ff565b808360020b079150509291505056fea2646970667358221220253919d771b132e3bc4d6385a54f3acc804b997c81ce03f0d2c9002829346d2864736f6c63430008150033
Deployed Bytecode Sourcemap
5808:12114:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:90;11140:16;;-1:-1:-1;;;;;11140:16:0;11072:90;;;-1:-1:-1;;;;;287:32:1;;;269:51;;257:2;242:18;11072:90:0;;;;;;;;3328:18;;;:::i;:::-;;;;;;;:::i;3895:132::-;;;;;;:::i;:::-;;:::i;:::-;;;1505:14:1;;1498:22;1480:41;;1468:2;1453:18;3895:132:0;1340:187:1;4689:86:0;4754:4;:16;4689:86;;;1678:25:1;;;1666:2;1651:18;4689:86:0;1532:177:1;4032:321:0;;;;;;:::i;:::-;;:::i;3374:35::-;;3407:2;3374:35;;;;;2347:4:1;2335:17;;;2317:36;;2305:2;2290:18;3374:35:0;2175:184:1;4358:323:0;;;;;;:::i;:::-;;:::i;10339:725::-;;;:::i;:::-;;11351:93;11417:22;;-1:-1:-1;;;;;11417:22:0;11351:93;;4780:106;;;;;;:::i;:::-;-1:-1:-1;;;;;4856:17:0;4835:7;4856:17;;;:10;:17;;;;;:25;;4780:106;11167:85;11229:18;;-1:-1:-1;;;;;11229:18:0;11167:85;;7827:2507;;;:::i;3350:20::-;;;:::i;3766:124::-;;;;;;:::i;:::-;;:::i;11449:223::-;11584:24;;11610:26;;11638:28;;11449:223;;;3617:25:1;;;3673:2;3658:18;;3651:34;;;;3701:18;;;3694:34;3605:2;3590:18;11449:223:0;3415:319:1;4891:136:0;;;;;;:::i;:::-;-1:-1:-1;;;;;4985:17:0;;;4964:7;4985:17;;;:10;:17;;;;;;;;:37;;;;;;:10;:27;;;:37;;;;;;4891:136;11257:89;11321:20;;-1:-1:-1;;;;;11321:20:0;11257:89;;3328:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3895:132::-;3965:4;3983:39;3992:10;4004:8;4014:7;3983:8;:39::i;:::-;3976:46;;3895:132;;;;;:::o;4032:321::-;-1:-1:-1;;;;;4985:17:0;;4117:4;4985:17;;;:10;:17;;;;;;;;4166:10;4985:37;;:10;:27;:37;;;;;;4204:7;4190:10;:21;;4182:30;;;;;;-1:-1:-1;;4221:10:0;:22;4217:90;;-1:-1:-1;;;;;4251:17:0;;;;;;:10;:17;;;;;;;;4279:10;4251:39;;:10;:27;:39;;;;;:50;;4294:7;;4251:17;:50;;4294:7;;4251:50;:::i;:::-;;;;-1:-1:-1;;4217:90:0;4318:30;4328:5;4335:3;4340:7;4318:9;:30::i;:::-;4311:37;4032:321;-1:-1:-1;;;;;4032:321:0:o;4358:323::-;4453:4;4464:35;4474:10;4486:3;4491:7;4464:9;:35::i;:::-;-1:-1:-1;4545:16:0;;4574:9;;;;4570:91;;4599:55;;-1:-1:-1;;;4599:55:0;;-1:-1:-1;;;;;4599:27:0;;;;;:55;;4627:10;;4639:7;;4648:5;;;;4599:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4591:64;;;;;;-1:-1:-1;4672:4:0;;4358:323;-1:-1:-1;;;;;4358:323:0:o;10339:725::-;10383:19;5990:42;-1:-1:-1;;;;;10421:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10463:173;;;;;;;;10508:24;;10463:173;;10508:9;10557:14;;-1:-1:-1;;;;;10557:14:0;;;10463:173;;;;-1:-1:-1;;;;;10463:173:0;;;;;;;;;;10451:186;;-1:-1:-1;;;10451:186:0;;10383:63;;-1:-1:-1;10451:11:0;;;;;;:186;;10463:173;10451:186;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10654:175:0;;;;;;;;10699:26;;10654:175;;10699:9;10750:14;;-1:-1:-1;;;;;10750:14:0;;;10654:175;;;;-1:-1:-1;;;;;10654:175:0;;;;;;;;;;10642:188;;-1:-1:-1;;;10642:188:0;;:11;;;;;;:188;;10654:175;;10642:188;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10847:177:0;;;;;;;;10892:28;;10847:177;;10892:9;10945:14;;-1:-1:-1;;;;;10945:14:0;;;10847:177;;;;-1:-1:-1;;;;;10847:177:0;;;;;;;;;;10835:190;;-1:-1:-1;;;10835:190:0;;:11;;;;;;:190;;10847:177;;10835:190;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;11030:9:0;:14;;:29;;;-1:-1:-1;;;11030:29:0;;;;-1:-1:-1;;;;;11030:14:0;;;;:27;;:29;;;;:14;;:29;;;;;;:14;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10378:686;10339:725::o;7827:2507::-;4754:4;:16;7871:18;7863:27;;;;;;7895:13;7919:4;7895:29;;7929:13;5990:42;-1:-1:-1;;;;;7945:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7929:30;;7964:11;7986:5;-1:-1:-1;;;;;7978:13:0;:5;-1:-1:-1;;;;;7978:13:0;;7964:27;;7996:19;5990:42;-1:-1:-1;;;;;8034:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3295:8;8064:4;:33;;;-1:-1:-1;;;;;8102:17:0;;8064:16;8102:17;;;:10;:17;;;;;;:42;;;8154:45;7996:63;;-1:-1:-1;8102:17:0;;8064:16;;8154:45;;;;1678:25:1;;1666:2;1651:18;;1532:177;8154:45:0;;;;;;;;8204;8213:5;8228:3;3295:8;8204;:45::i;:::-;;8258:14;8276:66;8303:6;3295:8;6079:9;8276:26;:66::i;:::-;8254:88;;;8351:14;8369:64;8396:6;3295:8;6168:9;8369:26;:64::i;:::-;8347:86;-1:-1:-1;8438:23:0;;-1:-1:-1;8502:3:0;8464:35;3295:8;6265:2;8464:35;:::i;:::-;:41;;;;:::i;:::-;8438:67;;8545:3;-1:-1:-1;;;;;8545:8:0;;8554:439;;;;;;;;8595:6;:22;;8612:5;8595:22;;;8604:5;8595:22;-1:-1:-1;;;;;8554:439:0;;;;;8632:6;8631:7;:23;;8649:5;8631:23;;;8641:5;8631:23;-1:-1:-1;;;;;8554:439:0;;;8665:5;8554:439;;;;;;8687:6;:28;;8707:8;8687:28;;;8696:8;8687:28;8554:439;;;;;;8733:6;8732:7;:29;;8753:8;8732:29;;;8742:8;8732:29;8554:439;;;;;;8783:6;:45;;8796:32;8813:15;3295:8;8796:32;:::i;:::-;8783:45;;;8792:1;8783:45;8554:439;;;;8851:6;8850:7;:46;;8864:32;8881:15;3295:8;8864:32;:::i;:::-;8850:46;;;8860:1;8850:46;8554:439;;;;8914:1;8554:439;;;;8933:1;8554:439;;;;8951:5;-1:-1:-1;;;;;8554:439:0;;;;;8972:15;8554:439;;;8545:449;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;8511:24:0;8510:484;8511:24;9017:8;11140:16;;-1:-1:-1;;;;;11140:16:0;;11072:90;9017:8;9030:16;;:54;;-1:-1:-1;;;9030:54:0;;-1:-1:-1;;;;;9241:32:1;;;9030:9:0;:54;;9223:51:1;3295:8:0;9290:18:1;;;9283:34;8999:26:0;;-1:-1:-1;9030:16:0;;;:24;;9196:18:1;;9030:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9106:7;-1:-1:-1;;;;;9098:15:0;:5;-1:-1:-1;;;;;9098:15:0;;9089:24;;9134:66;9161:6;3295:8;6079:9;9134:26;:66::i;:::-;9118:82;-1:-1:-1;9221:64:0;;-1:-1:-1;9248:6:0;3295:8;6168:9;9221:26;:64::i;:::-;9205:80;;;;;;9327:3;-1:-1:-1;;;;;9327:8:0;;9336:443;;;;;;;;9377:6;:24;;9394:7;9377:24;;;9386:5;9377:24;-1:-1:-1;;;;;9336:443:0;;;;;9416:6;9415:7;:25;;9433:7;9415:25;;;9425:5;9415:25;-1:-1:-1;;;;;9336:443:0;;;9451:5;9336:443;;;;;;9473:6;:28;;9493:8;9473:28;;;9482:8;9473:28;9336:443;;;;;;9519:6;9518:7;:29;;9539:8;9518:29;;;9528:8;9518:29;9336:443;;;;;;9569:6;:45;;9582:32;9599:15;3295:8;9582:32;:::i;:::-;9569:45;;;9578:1;9569:45;9336:443;;;;9637:6;9636:7;:46;;9650:32;9667:15;3295:8;9650:32;:::i;:::-;9636:46;;;9646:1;9636:46;9336:443;;;;9700:1;9336:443;;;;9719:1;9336:443;;;;9737:5;-1:-1:-1;;;;;9336:443:0;;;;;9758:15;9336:443;;;9327:453;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;9291:26:0;9290:490;-1:-1:-1;;;;;9799:15:0;;;;;;;9291:26;9846:66;9873:4;9879:15;;9846:26;:66::i;:::-;9819:93;;;9956:3;-1:-1:-1;;;;;9956:8:0;;9965:363;;;;;;;;10006:6;:24;;10023:7;10006:24;;;10015:5;10006:24;-1:-1:-1;;;;;9965:363:0;;;;;10045:6;10044:7;:25;;10062:7;10044:25;;;10054:5;10044:25;-1:-1:-1;;;;;9965:363:0;;;10080:5;9965:363;;;;;;10102:19;10118:3;10102:13;:19;:::i;:::-;9965:363;;;;;;10138:19;:13;10154:3;10138:19;:::i;:::-;9965:363;;;;;;10179:15;9965:363;;;;10216:15;9965:363;;;;10249:1;9965:363;;;;10268:1;9965:363;;;;10286:5;-1:-1:-1;;;;;9965:363:0;;;;;10307:15;9965:363;;;9956:373;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;9918:28:0;9917:412;-1:-1:-1;;;;;;;;;;7827:2507:0:o;3350:20::-;;;;;;;:::i;3766:124::-;3832:4;3850:35;3860:10;3872:3;3877:7;3850:9;:35::i;5034:212::-;-1:-1:-1;;;;;5132:18:0;;;5121:4;5132:18;;;:10;:18;;;;;;;;:38;;;;;;:10;:28;;;:38;;;;;:48;;;5190:35;1678:25:1;;;5121:4:0;;5132:38;:18;5190:35;;1651:18:1;5190:35:0;;;;;;;;-1:-1:-1;5237:4:0;5034:212;;;;;:::o;5252:294::-;-1:-1:-1;;;;;4856:17:0;;5334:4;4856:17;;;:10;:17;;;;;:25;5389:7;-1:-1:-1;5369:27:0;5361:36;;;;;;-1:-1:-1;;;;;5403:17:0;;;;;;;:10;:17;;;;;;:36;;;;;;;5445:15;;;;;;;;;;:34;;;;;;5490:29;;;;;;5432:7;1678:25:1;;1666:2;1651:18;;1532:177;17566:353:0;17670:13;17685:10;17702:17;17730:72;17776:6;:24;;17795:5;17776:24;;;17785:7;17776:24;17747:6;17746:7;:25;;17766:5;17746:25;;;17756:7;17746:25;17736:36;;-1:-1:-1;;;17736:36:0;:::i;:::-;:65;;;;:::i;:::-;17730:5;:72::i;:::-;17702:101;;17815:30;17835:9;17815:19;:30::i;:::-;17808:37;-1:-1:-1;17865:10:0;17872:3;17808:37;17865:10;:::i;:::-;17857:19;;:4;:19;:::i;:::-;17850:26;;17889:25;17909:4;17889:19;:25::i;:::-;17881:33;;17697:222;17566:353;;;;;;:::o;17330:231::-;17433:6;17443:1;17438;17433:6;;17432:12;17467:85;17481:6;17474:4;:13;17467:85;;;17505:4;17496:13;;17544:1;17536:4;17529;17524:2;:9;;;;;:::i;:::-;;:16;17523:22;;;;;:::i;:::-;;17516:29;;17467:85;;;17401:156;17330:231;;;:::o;13899:3426::-;13973:10;6431;-1:-1:-1;;;;;14014:30:0;;;;;;:63;;-1:-1:-1;6487:49:0;-1:-1:-1;;;;;14048:29:0;;;14014:63;14006:77;;;;-1:-1:-1;;;14006:77:0;;10093:2:1;14006:77:0;;;10075:21:1;10132:1;10112:18;;;10105:29;-1:-1:-1;;;10150:18:1;;;10143:31;10191:18;;14006:77:0;;;;;;;;;-1:-1:-1;;;;;14130:2:0;14105:27;;;;-1:-1:-1;;;;;14218:41:0;;14215:1;14211:49;14294:9;;;14352:18;14346:25;;14343:1;14339:33;14406:9;;;14464:10;14458:17;;14455:1;14451:25;14510:9;;;14568:6;14562:13;;14559:1;14555:21;14610:9;;;14668:4;14662:11;;14659:1;14655:19;;;14708:9;;;14766:3;14760:10;;14757:1;14753:18;14805:9;;;14857:10;;;14854:1;14850:18;;;14902:9;;;;14947:10;;;14385;;14489;;;14589;;;14687;14784;;;14881;14970;15004:3;14997:10;;14993:75;;15029:3;15023;:9;15013:5;:20;;15009:24;;14993:75;;;15064:3;15058;:9;15048:5;:20;;15044:24;;14993:75;15154:9;;;15149:3;15145:19;;;15179:11;;;;15237:9;;;;15287;;15278:19;;;15312:11;;;15370:9;15420;;15411:19;;;15445:11;;;15503:9;15553;;15544:19;;;15578:11;;;15636:9;15686;;15677:19;;;15711:11;;;15769:9;15819;;15810:19;;;15844:11;;;15902:9;15952;;15943:19;;;15977:11;;;16035:9;16085;;16076:19;;;16110:11;;;16168:9;16218;;16209:19;;;16243:11;;;16301:9;16351;;16342:19;;;16376:11;;;16434:9;16484;;16475:19;;;16509:11;;;16567:9;16617;;16608:19;;;16642:11;;;16700:9;16750;;16741:19;;;16775:11;;;;16833:9;;;;16883;;16874:19;;;;;15154:9;-1:-1:-1;;15092:17:0;;15114:2;15091:25;15215:10;;;;;;;15205:21;15348:10;;;;;;;15338:21;;;;15481:10;;;;;;;15471:21;;;;15614:10;;;;;;;15604:21;;;;15747:10;;;;;;;15737:21;;;;15880:10;;;;;;;15870:21;;;;16013:10;;;;;;;16003:21;16146:10;;;;;;;16136:21;16279:10;;;;;;;16269:21;16412:10;;;;;;;16402:21;16545:10;;;;;;;16535:21;16678:10;;;;;;;16668:21;16811:10;;;;;;;16801:21;16944:10;;;;;;;16934:21;16999:24;16991:32;;-1:-1:-1;;17054:53:0;;15106:3;17053:62;;;;17160:39;17144:55;;17143:64;;17223:17;;;;;;;;;:92;;17284:12;-1:-1:-1;;;;;17253:43:0;:27;17273:6;17253:19;:27::i;:::-;-1:-1:-1;;;;;17253:43:0;;;:62;;17308:7;17223:92;;17253:62;17299:6;17223:92;;;17243:7;17223:92;17216:99;13899:3426;-1:-1:-1;;;;;;;;;13899:3426:0:o;11679:2215::-;11743:20;11786:15;11811:1;11804:4;:8;;;:57;;11855:4;11848:12;;11804:57;;;11831:4;11824:12;;11823:13;;11804:57;11786:75;-1:-1:-1;6376:9:0;11875:36;;;11867:50;;;;-1:-1:-1;;;11867:50:0;;10422:2:1;11867:50:0;;;10404:21:1;10461:1;10441:18;;;10434:29;-1:-1:-1;;;10479:18:1;;;10472:31;10520:18;;11867:50:0;10220:324:1;11867:50:0;11925:13;11941:7;11951:3;11941:13;11958:1;11941:18;:93;;-1:-1:-1;;;11941:93:0;;;11962:34;11941:93;11925:109;;;-1:-1:-1;12054:3:0;12044:13;;:18;12040:83;;12081:34;12073:42;12120:3;12072:51;12040:83;12143:3;12133:13;;:18;12129:83;;12170:34;12162:42;12209:3;12161:51;12129:83;12232:3;12222:13;;:18;12218:83;;12259:34;12251:42;12298:3;12250:51;12218:83;12321:4;12311:14;;:19;12307:84;;12349:34;12341:42;12388:3;12340:51;12307:84;12411:4;12401:14;;:19;12397:84;;12439:34;12431:42;12478:3;12430:51;12397:84;12501:4;12491:14;;:19;12487:84;;12529:34;12521:42;12568:3;12520:51;12487:84;12591:4;12581:14;;:19;12577:84;;12619:34;12611:42;12658:3;12610:51;12577:84;12681:5;12671:15;;:20;12667:85;;12710:34;12702:42;12749:3;12701:51;12667:85;12772:5;12762:15;;:20;12758:85;;12801:34;12793:42;12840:3;12792:51;12758:85;12863:5;12853:15;;:20;12849:85;;12892:34;12884:42;12931:3;12883:51;12849:85;12954:5;12944:15;;:20;12940:85;;12983:34;12975:42;13022:3;12974:51;12940:85;13045:6;13035:16;;:21;13031:86;;13075:34;13067:42;13114:3;13066:51;13031:86;13137:6;13127:16;;:21;13123:86;;13167:34;13159:42;13206:3;13158:51;13123:86;13229:6;13219:16;;:21;13215:86;;13259:34;13251:42;13298:3;13250:51;13215:86;13321:6;13311:16;;:21;13307:86;;13351:34;13343:42;13390:3;13342:51;13307:86;13413:7;13403:17;;:22;13399:86;;13444:33;13436:41;13482:3;13435:50;13399:86;13505:7;13495:17;;:22;13491:85;;13536:32;13528:40;13573:3;13527:49;13491:85;13596:7;13586:17;;:22;13582:83;;13627:30;13619:38;13662:3;13618:47;13582:83;13685:7;13675:17;;:22;13671:78;;13716:25;13708:33;13746:3;13707:42;13671:78;13768:1;13761:4;:8;;;13757:47;;;13799:5;-1:-1:-1;;13779:25:0;;;;;:::i;:::-;;13771:33;;13757:47;13861:7;13852:5;:17;:22;:30;;13881:1;13852:30;;;13877:1;13852:30;13835:48;;13845:2;13836:5;:11;;13835:48;13812:72;;11770:2120;;11679:2215;;;:::o;331:548:1:-;443:4;472:2;501;490:9;483:21;533:6;527:13;576:6;571:2;560:9;556:18;549:34;601:1;611:140;625:6;622:1;619:13;611:140;;;720:14;;;716:23;;710:30;686:17;;;705:2;682:26;675:66;640:10;;611:140;;;615:3;800:1;795:2;786:6;775:9;771:22;767:31;760:42;870:2;863;859:7;854:2;846:6;842:15;838:29;827:9;823:45;819:54;811:62;;;;331:548;;;;:::o;884:131::-;-1:-1:-1;;;;;959:31:1;;949:42;;939:70;;1005:1;1002;995:12;939:70;884:131;:::o;1020:315::-;1088:6;1096;1149:2;1137:9;1128:7;1124:23;1120:32;1117:52;;;1165:1;1162;1155:12;1117:52;1204:9;1191:23;1223:31;1248:5;1223:31;:::i;:::-;1273:5;1325:2;1310:18;;;;1297:32;;-1:-1:-1;;;1020:315:1:o;1714:456::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1915:9;1902:23;1934:31;1959:5;1934:31;:::i;:::-;1984:5;-1:-1:-1;2041:2:1;2026:18;;2013:32;2054:33;2013:32;2054:33;:::i;:::-;1714:456;;2106:7;;-1:-1:-1;;;2160:2:1;2145:18;;;;2132:32;;1714:456::o;2364:794::-;2452:6;2460;2468;2476;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;:::-;2653:5;-1:-1:-1;2705:2:1;2690:18;;2677:32;;-1:-1:-1;2760:2:1;2745:18;;2732:32;2783:18;2813:14;;;2810:34;;;2840:1;2837;2830:12;2810:34;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:55;;2945:1;2942;2935:12;2894:55;2985:2;2972:16;3011:2;3003:6;3000:14;2997:34;;;3027:1;3024;3017:12;2997:34;3072:7;3067:2;3058:6;3054:2;3050:15;3046:24;3043:37;3040:57;;;3093:1;3090;3083:12;3040:57;2364:794;;;;-1:-1:-1;;3124:2:1;3116:11;;-1:-1:-1;;;2364:794:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;:::-;3399:5;3163:247;-1:-1:-1;;;3163:247:1:o;3739:388::-;3807:6;3815;3868:2;3856:9;3847:7;3843:23;3839:32;3836:52;;;3884:1;3881;3874:12;3836:52;3923:9;3910:23;3942:31;3967:5;3942:31;:::i;:::-;3992:5;-1:-1:-1;4049:2:1;4034:18;;4021:32;4062:33;4021:32;4062:33;:::i;:::-;4114:7;4104:17;;;3739:388;;;;;:::o;4132:380::-;4211:1;4207:12;;;;4254;;;4275:61;;4329:4;4321:6;4317:17;4307:27;;4275:61;4382:2;4374:6;4371:14;4351:18;4348:38;4345:161;;4428:10;4423:3;4419:20;4416:1;4409:31;4463:4;4460:1;4453:15;4491:4;4488:1;4481:15;4517:127;4578:10;4573:3;4569:20;4566:1;4559:31;4609:4;4606:1;4599:15;4633:4;4630:1;4623:15;4649:128;4716:9;;;4737:11;;;4734:37;;;4751:18;;:::i;4782:559::-;-1:-1:-1;;;;;4995:32:1;;4977:51;;5059:2;5044:18;;5037:34;;;5107:2;5102;5087:18;;5080:30;;;5126:18;;5119:34;;;5146:6;5196;5190:3;5175:19;;5162:49;5261:1;5231:22;;;5255:3;5227:32;;;5220:43;;;;5324:2;5303:15;;;-1:-1:-1;;5299:29:1;5284:45;5280:55;;4782:559;-1:-1:-1;;;4782:559:1:o;5346:277::-;5413:6;5466:2;5454:9;5445:7;5441:23;5437:32;5434:52;;;5482:1;5479;5472:12;5434:52;5514:9;5508:16;5567:5;5560:13;5553:21;5546:5;5543:32;5533:60;;5589:1;5586;5579:12;5628:251;5698:6;5751:2;5739:9;5730:7;5726:23;5722:32;5719:52;;;5767:1;5764;5757:12;5719:52;5799:9;5793:16;5818:31;5843:5;5818:31;:::i;5884:570::-;6107:13;;6089:32;;6181:4;6169:17;;;6163:24;-1:-1:-1;;;;;6159:50:1;6137:20;;;6130:80;6257:4;6245:17;;;6239:24;-1:-1:-1;;;;;6354:21:1;;;6332:20;;;6325:51;;;;6436:4;6424:17;;;6418:24;6414:33;6392:20;;;6385:63;;;;6076:3;6061:19;;5884:570::o;6459:245::-;6538:6;6546;6599:2;6587:9;6578:7;6574:23;6570:32;6567:52;;;6615:1;6612;6605:12;6567:52;-1:-1:-1;;6638:16:1;;6694:2;6679:18;;;6673:25;6638:16;;6673:25;;-1:-1:-1;6459:245:1:o;6709:168::-;6782:9;;;6813;;6830:15;;;6824:22;;6810:37;6800:71;;6851:18;;:::i;6882:127::-;6943:10;6938:3;6934:20;6931:1;6924:31;6974:4;6971:1;6964:15;6998:4;6995:1;6988:15;7014:120;7054:1;7080;7070:35;;7085:18;;:::i;:::-;-1:-1:-1;7119:9:1;;7014:120::o;7332:1218::-;7550:13;;-1:-1:-1;;;;;80:31:1;68:44;;7518:3;7503:19;;7622:4;7614:6;7610:17;7604:24;7637:54;7685:4;7674:9;7670:20;7656:12;-1:-1:-1;;;;;80:31:1;68:44;;14:104;7637:54;;7740:4;7732:6;7728:17;7722:24;7755:55;7804:4;7793:9;7789:20;7773:14;7215:8;7204:20;7192:33;;7139:92;7755:55;;7859:4;7851:6;7847:17;7841:24;7874:54;7922:4;7911:9;7907:20;7891:14;7311:1;7300:20;7288:33;;7236:91;7874:54;;7977:4;7969:6;7965:17;7959:24;7992:54;8040:4;8029:9;8025:20;8009:14;7311:1;7300:20;7288:33;;7236:91;7992:54;;8102:4;8094:6;8090:17;8084:24;8077:4;8066:9;8062:20;8055:54;8165:4;8157:6;8153:17;8147:24;8140:4;8129:9;8125:20;8118:54;8228:4;8220:6;8216:17;8210:24;8203:4;8192:9;8188:20;8181:54;8254:6;8314:2;8306:6;8302:15;8296:22;8291:2;8280:9;8276:18;8269:50;;8338:6;8393:2;8385:6;8381:15;8375:22;8406:54;8456:2;8445:9;8441:18;8425:14;-1:-1:-1;;;;;80:31:1;68:44;;14:104;8406:54;-1:-1:-1;;8479:6:1;8527:15;;;8521:22;8501:18;;;;8494:50;7332:1218;:::o;8555:489::-;8652:6;8660;8668;8676;8729:3;8717:9;8708:7;8704:23;8700:33;8697:53;;;8746:1;8743;8736:12;8697:53;8775:9;8769:16;8759:26;;8828:2;8817:9;8813:18;8807:25;-1:-1:-1;;;;;8865:5:1;8861:46;8854:5;8851:57;8841:85;;8922:1;8919;8912:12;8841:85;8990:2;8975:18;;8969:25;9034:2;9019:18;;;9013:25;8555:489;;8945:5;;-1:-1:-1;8555:489:1;-1:-1:-1;;;8555:489:1:o;9328:193::-;9426:1;9415:16;;;9397;;;;9393:39;-1:-1:-1;;9447:23:1;;9482:8;9472:19;;9444:48;9441:74;;;9495:18;;:::i;9526:189::-;9622:1;9593:16;;;9611;;;;9589:39;9676:7;9643:18;;-1:-1:-1;;9663:22:1;;9640:46;9637:72;;;9689:18;;:::i;9720:166::-;9750:1;9791;9788;9777:16;9812:3;9802:37;;9819:18;;:::i;:::-;9876:3;9872:1;9869;9858:16;9853:27;9848:32;;;9720:166;;;;:::o
Swarm Source
ipfs://5c4c884e62f81cc8aba234c030e4b028f255a5109d70807c41a0a6a0b1457bcc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.