POL Price: $0.599569 (-1.80%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Emergency Withdr...353478642022-11-08 8:34:48767 days ago1667896488IN
0x90D861c4...32333Cb33
0 POL0.0106785300
Set UP Token353478292022-11-08 8:33:34767 days ago1667896414IN
0x90D861c4...32333Cb33
0 POL0.0107237367.94319582
Set BNB353465242022-11-08 7:48:44767 days ago1667893724IN
0x90D861c4...32333Cb33
0 POL0.01729495720.98346205
Claim UP352139922022-11-05 2:27:06770 days ago1667615226IN
0x90D861c4...32333Cb33
0 POL0.01662013129.74647185
Claim UP351602952022-11-03 19:05:11771 days ago1667502311IN
0x90D861c4...32333Cb33
0 POL0.0047224746.4366764
Claim UP350459962022-10-31 23:56:02774 days ago1667260562IN
0x90D861c4...32333Cb33
0 POL0.0033635730.30000003
Claim UP348212332022-10-26 11:38:29780 days ago1666784309IN
0x90D861c4...32333Cb33
0 POL0.01427849128.62463723
Claim UP346690852022-10-22 18:19:35783 days ago1666462775IN
0x90D861c4...32333Cb33
0 POL0.0083531180.04289758
Claim UP326672812022-09-04 5:12:08832 days ago1662268328IN
0x90D861c4...32333Cb33
0 POL0.002618130.00000001
Claim UP326672682022-09-04 5:11:42832 days ago1662268302IN
0x90D861c4...32333Cb33
0 POL0.0033302730.00000001
Claim UP326559722022-09-03 22:40:55832 days ago1662244855IN
0x90D861c4...32333Cb33
0 POL0.0035639130.00000001
Claim UP326417612022-09-03 14:32:09833 days ago1662215529IN
0x90D861c4...32333Cb33
0 POL0.0033302730.00000001
Claim UP319521892022-08-16 9:21:47851 days ago1660641707IN
0x90D861c4...32333Cb33
0 POL0.0038425530.00000003
Claim UP319419002022-08-16 3:03:50851 days ago1660619030IN
0x90D861c4...32333Cb33
0 POL0.0033295530.00000485
Claim UP319139752022-08-15 8:49:26852 days ago1660553366IN
0x90D861c4...32333Cb33
0 POL0.0050576845.57086881
Claim UP299935532022-06-25 20:35:43902 days ago1656189343IN
0x90D861c4...32333Cb33
0 POL0.0040769130.00000002
Claim UP293919612022-06-10 10:41:13918 days ago1654857673IN
0x90D861c4...32333Cb33
0 POL0.004212831.0000021
Claim UP293508422022-06-09 9:37:16919 days ago1654767436IN
0x90D861c4...32333Cb33
0 POL0.0027042531.00000067
Claim UP293304592022-06-08 21:24:38919 days ago1654723478IN
0x90D861c4...32333Cb33
0 POL0.0030509130.00000001
Claim UP293179442022-06-08 14:05:23920 days ago1654697123IN
0x90D861c4...32333Cb33
0 POL0.0035766135.16937186
Claim UP292969722022-06-08 1:32:47920 days ago1654651967IN
0x90D861c4...32333Cb33
0 POL0.0039198344.92235158
Claim UP292969332022-06-08 1:31:25920 days ago1654651885IN
0x90D861c4...32333Cb33
0 POL0.0062512445.99985574
Claim UP281390632022-05-10 5:01:40949 days ago1652158900IN
0x90D861c4...32333Cb33
0 POL0.01876524169.04256729
Claim UP272215762022-04-16 22:22:09972 days ago1650147729IN
0x90D861c4...32333Cb33
0 POL0.003920332.99999998
Claim UP271940282022-04-16 5:48:40973 days ago1650088120IN
0x90D861c4...32333Cb33
0 POL0.0030580230.0700002
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
353463452022-11-08 7:42:34767 days ago1667893354
0x90D861c4...32333Cb33
0.00136432 POL
353463452022-11-08 7:42:34767 days ago1667893354
0x90D861c4...32333Cb33
0.00140651 POL
353456782022-11-08 7:19:40767 days ago1667891980
0x90D861c4...32333Cb33
0.001029 POL
353456782022-11-08 7:19:40767 days ago1667891980
0x90D861c4...32333Cb33
0.00106082 POL
353452412022-11-08 7:02:30767 days ago1667890950
0x90D861c4...32333Cb33
0.00000107 POL
353452412022-11-08 7:02:30767 days ago1667890950
0x90D861c4...32333Cb33
0.00003488 POL
353452412022-11-08 7:02:30767 days ago1667890950
0x90D861c4...32333Cb33
0.00003596 POL
353444322022-11-08 6:34:40767 days ago1667889280
0x90D861c4...32333Cb33
0.00001628 POL
353444322022-11-08 6:34:40767 days ago1667889280
0x90D861c4...32333Cb33
0.00052648 POL
353444322022-11-08 6:34:40767 days ago1667889280
0x90D861c4...32333Cb33
0.00054277 POL
353443892022-11-08 6:33:14767 days ago1667889194
0x90D861c4...32333Cb33
0.0005266 POL
353443892022-11-08 6:33:14767 days ago1667889194
0x90D861c4...32333Cb33
0.00054289 POL
353439682022-11-08 6:18:44767 days ago1667888324
0x90D861c4...32333Cb33
0.00000089 POL
353439682022-11-08 6:18:44767 days ago1667888324
0x90D861c4...32333Cb33
0.00002907 POL
353439682022-11-08 6:18:44767 days ago1667888324
0x90D861c4...32333Cb33
0.00002997 POL
353436672022-11-08 6:08:22767 days ago1667887702
0x90D861c4...32333Cb33
0.00000089 POL
353436672022-11-08 6:08:22767 days ago1667887702
0x90D861c4...32333Cb33
0.00002907 POL
353436672022-11-08 6:08:22767 days ago1667887702
0x90D861c4...32333Cb33
0.00002997 POL
353428082022-11-08 5:38:52767 days ago1667885932
0x90D861c4...32333Cb33
0.00000314 POL
353428082022-11-08 5:38:52767 days ago1667885932
0x90D861c4...32333Cb33
0.00010162 POL
353428082022-11-08 5:38:52767 days ago1667885932
0x90D861c4...32333Cb33
0.00010476 POL
353426182022-11-08 5:32:20767 days ago1667885540
0x90D861c4...32333Cb33
0.00008991 POL
353426182022-11-08 5:32:20767 days ago1667885540
0x90D861c4...32333Cb33
0.00290709 POL
353426182022-11-08 5:32:20767 days ago1667885540
0x90D861c4...32333Cb33
0.002997 POL
353398202022-11-08 3:56:08767 days ago1667879768
0x90D861c4...32333Cb33
0.000072 POL
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UnifiController

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-12-20
*/

//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.4;


interface IFarmController {
    function notifyFarm(uint amount) external;
}
interface IEventBroadcaster {
    function broadcastEvent(bool isDeposit, bool isWithdrawl, bool isClaim, uint currentLiquidity, uint liquidity, address user, address pool) external;
}
interface IUP {

    function mint(address to, uint256 value) external payable returns(bool);

    function balanceOf(address owner) external view returns(uint256);

    function transfer(address _to, uint amount) external returns(bool);

    function transferFrom(address from, address to, uint value) external returns(bool);
}

interface IWETH {
    function approve(address to, uint value) external;

    function balanceOf(address owner) external view returns(uint256);

    function withdraw(uint amount) external;
}

interface IUnifiPair {
    function totalSupply() external view returns(uint256);

    function balanceOf(address owner) external view returns(uint256);

    function token0() external view returns(address);

    function token1() external view returns(address);
}

interface IUnifiFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);



    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);
    function feeTo() external returns(address);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    
    function feeController() external view returns (address);
    function router() external view returns (address);
}

contract UnifiController {

    address public feeSetter;
    address public WBNB;
    address public UNIFIUPVault;
    address public nativeFeeTo;
    uint public defaultBuyBackAmount = 1000;
    IFarmController public ifc;
    IEventBroadcaster public ieb;
    IUP public uptoken;
    address payable uptokenAddress;
    uint public pendingUPPlatformClaimable = 0;

    address public defaultUPFeesTo;
    mapping(address => uint) public UPPoolFees;
    uint public maxFee = 1000; //100%
    uint public defaultMintRate = 9700; //55% -- max is 10000
    uint public defaultFee = 3; // max is 1000
    uint public defaultUPFee = 1500; // 10%  -- max is 10000
    uint public defaultMintFeeNumerator = 8;//0.32%
    uint public defaultMintFeeDenominator = 17;
    bool public defaultMintUPinClaim = false;
    uint public defaultNativeFee = 100;
    address public owner;

    mapping(address => bool) public admin;
    mapping(address => uint) public pairFees;
    mapping(address => uint) public nativeFees;
    mapping(address => bool) private isNotUPMintable;
    mapping(address => bool) public otherPairsUPMintable;
    mapping(address => bool) public flashLoan;
    mapping(address => bool) public poolPaused;
    mapping(address => uint) public UPMintrate;
    mapping(address => uint) public UPFee;
    mapping(address => uint) public mintFeeNumerator;
    mapping(address => uint) public mintFeeDenominator;




    address public defaultFarmPoolAddress;
    uint public totalUPTokenminted = 0;
    bool public broadcastEnabled = false;
    bool public farmEnabled = false;
    uint public currentNativeTokensHoldings = 0 ;
    mapping(address => uint) public lp_RewardPerToken;
    mapping(address => uint) public lp_FeeState;
    mapping(address => uint) public lp_LastTrade;
    mapping(address => uint) public lp_UPRemaining;//manually update it
    mapping(address => uint) public lp_TotalClaim;
    mapping(address =>bool) public mintUPinClaim;
    mapping(address =>bool) public lp_poolMigration;
    mapping(address =>uint) public lp_nativeTokensAccumulated;

    mapping(address => mapping(address => uint)) public lp_userState;
    mapping(address => mapping(address => uint)) public lp_userLastAction;
    mapping(address => mapping(address => uint)) public lp_userTotalClaim;

    mapping(address => address[]) private lp_pathToTrade;




    event SwapFeesUpminted(address indexed pool, uint amountUPMinted, address defaultPoolAddress, uint platforUPFees);
    event UpdatePoolRewards(address indexed pool, uint rewards);


    constructor(address _wbnb, address _up_address) {
        feeSetter = msg.sender;
        WBNB = _wbnb;
        owner = msg.sender;
        nativeFeeTo = msg.sender;
        admin[msg.sender] = true;
        defaultUPFeesTo = msg.sender;
        UNIFIUPVault = address(this);
        uptoken = IUP(payable(address(_up_address)));
      
        
    }
    modifier onlyOwner() {
        require(owner == msg.sender, "Unifi : Only Owner");
        _;
    }

    modifier onlyAdmin() {
        require(owner == msg.sender ||  admin[msg.sender] == true, "Unifi : Only Admins" );
        _;
    }
    function setFeeSetter(address _feeSetter) onlyOwner external {
        require(msg.sender == owner, 'Unifi: FORBIDDEN');
        feeSetter = _feeSetter;
    }
    
    function setUPToken(address _tokenAddr) onlyOwner external{//for UP v2 migration
        require(msg.sender == owner , 'Unifi: FORBIDDEN');
        uptoken = IUP(payable(address(_tokenAddr)));
    }


    function setPairFee(address _pair, uint _fee) external onlyAdmin{
        pairFees[_pair] = _fee > maxFee ? maxFee : _fee;
    }

    function setUPNotMintable(address _pair, bool _value, uint _mintRate) external  onlyAdmin {
        isNotUPMintable[_pair] = _value;
        UPMintrate[_pair] = _mintRate; //default is 1000
    }

    function setUPOtherPairsNotMintable(address _pair, bool _value, uint _mintRate) external onlyAdmin{
        require(msg.sender == feeSetter || admin[msg.sender] == true, 'Unifi: FORBIDDEN');
        otherPairsUPMintable[_pair] = _value;
        UPMintrate[_pair] = _mintRate; //default is 1000
    }

    function updateNotUPMintable(address _pair, bool _value) external onlyAdmin {
        isNotUPMintable[_pair] = _value;

    }

    function updateotherPairsUPMintable(address _pair, bool _value) external onlyAdmin {
        otherPairsUPMintable[_pair] = _value;

    }
    
    function updateMintUPinClaim(address _pair, bool _value) external onlyAdmin {
        mintUPinClaim[_pair] = _value;

    }

    function updateDefaultMintUPinClaim( bool _value) external onlyAdmin {
        defaultMintUPinClaim = _value;

    }
    function updateFlashLoan(address _pair, bool _value) external onlyAdmin {
        flashLoan[_pair] = _value;

    }

    function setMaxFee(uint _fee) external onlyAdmin {
        maxFee = _fee;
    }

    function setDefaultFee(uint _fee) external  onlyAdmin{
        defaultFee = _fee;
    }


    function setDefaultUPFee(uint _fee) external onlyAdmin {
        defaultUPFee = _fee;
    }

    function setUPPoolPlatformfee(uint _fee, address _pool) external onlyAdmin {
        UPPoolFees[_pool] = _fee;
    }


    function setDefaultUPFeeTo(address _wallet) external onlyAdmin {
        defaultUPFeesTo = _wallet;
    }


    function setNativeFeeTo(address _nativeFeeTo) external onlyAdmin{
        nativeFeeTo = _nativeFeeTo;
    }

    function setBNB(address _wrap) external onlyOwner{
        WBNB = _wrap;
    }

    function setUNIFIUPVault(address _UNIFIUPVault) external onlyOwner {
        UNIFIUPVault = _UNIFIUPVault;
    }

    function getPairFee(address _pair) external view returns(uint fees) {

        fees = pairFees[_pair] > 0 ? pairFees[_pair] : defaultFee;
    }

    function getPairUPFee(address _pair) external view returns(uint fees) {

        fees = UPPoolFees[_pair] > 0 ? UPPoolFees[_pair] : defaultUPFee;
    }

    function getNativeFee(address _pair) external view returns(uint fees) {
        fees = nativeFees[_pair] > 0 ? nativeFees[_pair] : defaultNativeFee;
    }

    function addAdmin(address _admin) external onlyOwner {
        admin[_admin] = true;
    }

    function removeAdmin(address _admin) external onlyOwner {
        admin[_admin] = false;
    }

    function isDisableFlashLoan(address pool) external view returns(bool) {
        return flashLoan[pool];

    }

    function getMintFeeConfig(address _pool) external view returns(uint numerator, uint denominator) {
        numerator = defaultMintFeeNumerator;
        denominator = defaultMintFeeDenominator;
        if (mintFeeNumerator[_pool] > 0) {
            numerator = mintFeeNumerator[_pool];
        }
        if (mintFeeDenominator[_pool] > 0) {
            denominator = mintFeeDenominator[_pool];
        }

    }

    function setDefaultMintFeeConf(uint _numerator, uint _denominator) external  onlyAdmin{
        defaultMintFeeNumerator = _numerator;
        defaultMintFeeDenominator = _denominator;
    }

    function setDefaultMintRate(uint _value) external  onlyAdmin{
        defaultMintRate = _value;
    }

    function getMintRate(address _pool) external view returns(uint) {
        return (UPMintrate[_pool] > 0 ? UPMintrate[_pool] : defaultMintRate);
    }

    function setMintFeeConf(uint _numerator, uint _denominator, address _pool) external onlyAdmin {
        mintFeeNumerator[_pool] = _numerator;
        mintFeeDenominator[_pool] = _denominator;
    }

    function setTradingStatusConf(address _pool, bool value) external onlyAdmin{
        poolPaused[_pool] = value;
    }

    function updateLPFeeState(address _lp, uint _value) external onlyOwner returns(bool)  {
        lp_FeeState[_lp] = _value;
        return true;
    }

    function updateLPLastTrade(address _lp, uint _value) external  onlyOwner returns(bool)  {
        require(msg.sender == owner);
        lp_LastTrade[_lp] = _value;
        return true;
    }


    function updateLPLUPRemaining(address _lp, uint _value) external onlyOwner returns(bool) {
        lp_UPRemaining[_lp] = _value;
        return true;
    }



    function _mintNativeUP(address _from, uint _ethAtm) internal returns(uint) {
        require(_ethAtm > 0, "Trying to mint with 0 value"); //<!! Important
        require(this.UPMintable(_from), "Error: ONLY whitelisted");
        uint beforeUpBalance = uptoken.balanceOf(address(this));
        _ethAtm = _ethAtm * this.getMintRate(_from) / 10000;
        uptoken.mint {
            value: _ethAtm
        }(address(this), _ethAtm);

        uint dust = getProxyNativeBalance();
        if (dust > 0) payable(address(uptoken)).transfer(dust);
        return (uptoken.balanceOf(address(this)) - beforeUpBalance);

    }

    function _mintUPinBulk(address _pool ) internal returns(uint) {
        if(lp_nativeTokensAccumulated[_pool] == 0 ){
            return 0;
        }
        if(this.UPMintable(_pool) == false){
            return 0 ;
        }
        uint beforeUpBalance = uptoken.balanceOf(address(this));
        uint _ethAtm = lp_nativeTokensAccumulated[_pool]  * this.getMintRate(_pool) / 10000;
        uptoken.mint {
            value: _ethAtm
        }(address(this), _ethAtm);
        if(lp_nativeTokensAccumulated[_pool] > _ethAtm ){
            uint dust =  lp_nativeTokensAccumulated[_pool] - _ethAtm;
            if (dust > 0) payable(address(uptoken)).transfer(dust);           
        }
        currentNativeTokensHoldings = currentNativeTokensHoldings- lp_nativeTokensAccumulated[_pool];
        lp_nativeTokensAccumulated[_pool] = 0 ;
        return (uptoken.balanceOf(address(this)) - beforeUpBalance);
        
        
    }

    //for future implementation
    function mintNativeUP(address _to) public payable returns(uint) {
        uint upMinted = _mintNativeUP(msg.sender, msg.value);
        uptoken.transfer(_to, upMinted);
        return upMinted;


    }

    function getProxyNativeBalance() view public returns(uint){
         return (address(this).balance - currentNativeTokensHoldings);
    }

    function mintPendingUP(address _pool) external returns(uint){
       uint upMintedForLiquidityPool = _mintUPinBulk(_pool);
       if(upMintedForLiquidityPool  > 0 ){
         uint upAddedToPool = 0;
         if (defaultFarmPoolAddress != address(0) && _pool != defaultFarmPoolAddress) {
            upAddedToPool = (upMintedForLiquidityPool * this.getPairUPFee(_pool)) / (10000);
            pendingUPPlatformClaimable = pendingUPPlatformClaimable + upAddedToPool;
            upMintedForLiquidityPool = upMintedForLiquidityPool - upAddedToPool;
         }
         uint rewardPerToken = upMintedForLiquidityPool * (1e18) / (IUnifiPair(_pool).totalSupply());
         _updatePoolStatus(_pool, upMintedForLiquidityPool,rewardPerToken) ;
         emit SwapFeesUpminted(_pool, upMintedForLiquidityPool, defaultFarmPoolAddress, upAddedToPool);         
       }
        return upMintedForLiquidityPool;
    }

    function mintUP(address _to) public payable returns(uint) {
        require(_to == msg.sender, "Unifi: Invalid params");
        if (!this.UPMintable(msg.sender)) {
            return 0;
        }
         lp_LastTrade[msg.sender] = block.timestamp;
        if(mintUPinClaim[msg.sender] == true || defaultMintUPinClaim == true){
           //getCurrentProxyAmount
            uint newBalance = getProxyNativeBalance() ;
            lp_nativeTokensAccumulated[msg.sender] =  lp_nativeTokensAccumulated[msg.sender]  + newBalance;
            currentNativeTokensHoldings = currentNativeTokensHoldings + newBalance;
            return 0;// no UP was minted
        }else{
         uint upMintedForLiquidityPool = _mintNativeUP(msg.sender, getProxyNativeBalance());
         uint upAddedToPool = 0;
         if (defaultFarmPoolAddress != address(0) && msg.sender != defaultFarmPoolAddress) {
            upAddedToPool = (upMintedForLiquidityPool * this.getPairUPFee(msg.sender)) / (10000);
            pendingUPPlatformClaimable = pendingUPPlatformClaimable + upAddedToPool;
            upMintedForLiquidityPool = upMintedForLiquidityPool - upAddedToPool;
         }
         uint rewardPerToken = upMintedForLiquidityPool * (1e18) / (IUnifiPair(msg.sender).totalSupply());
         _updatePoolStatus(_to, upMintedForLiquidityPool,rewardPerToken) ;
         emit SwapFeesUpminted(msg.sender, upMintedForLiquidityPool, defaultFarmPoolAddress, upAddedToPool);

         return upMintedForLiquidityPool;           
        }

    }

    function _notifyDefaultPoolRewards() internal returns(bool) {
        if (defaultFarmPoolAddress != address(0)) {
            uint rewardPerToken = pendingUPPlatformClaimable * (1e18) / (IUnifiPair(defaultFarmPoolAddress).totalSupply());
            _updatePoolStatus( defaultFarmPoolAddress,  pendingUPPlatformClaimable,rewardPerToken);           
            pendingUPPlatformClaimable = 0;
            emit UpdatePoolRewards(defaultFarmPoolAddress, pendingUPPlatformClaimable);
            return true;
        }
        return false;
    }

    function notifyOtherPoolRewards(address _pool, uint _upAmount) payable external returns(bool) {
        uptoken.transferFrom(msg.sender, address(this), _upAmount);
        uint rewardPerToken = _upAmount * (1e18) / (IUnifiPair(_pool).totalSupply());
        _updatePoolStatus( _pool,  _upAmount,rewardPerToken);
        emit UpdatePoolRewards(_pool, _upAmount);
        return true;
    }
    
    function _updatePoolStatus(address _pool, uint _upAmount,uint rewardPerToken) internal {
        lp_RewardPerToken[_pool] = lp_RewardPerToken[_pool] + (rewardPerToken);
        lp_FeeState[_pool] = lp_FeeState[_pool] + (_upAmount);
        lp_UPRemaining[_pool] = lp_UPRemaining[_pool] + (_upAmount);      
    }

    function updateDefaultPool(address _newPool) external onlyOwner returns(bool) {
        defaultFarmPoolAddress = _newPool;
        return true;
    }

    function updateMultipleUpdatePoolDetails(address[] memory _pools, uint[] memory _rewardPerTokens, uint[] memory _feeStates, uint[] memory _lastTrades, uint[] memory _upRemainings, uint[] memory _totalClaims,bool [] memory  _mintUPinClaim,uint[] memory _lp_nativeTokensAccumulated) onlyOwner  external {
        uint i = 0;
        while (i < _pools.length) {
            _updatePoolDetails(_pools[i], _rewardPerTokens[i], _feeStates[i], _lastTrades[i], _upRemainings[i], _totalClaims[i] ,  _mintUPinClaim[i],_lp_nativeTokensAccumulated[i]);
            i++;
        }

    }

    function _updatePoolDetails(address _pool, uint _rewardPerToken, uint _feeState, uint _lastTrade, uint _upRemaining, uint _totalClaim , bool _mintUPinClaim, uint _lp_nativeTokensAccumulated) internal returns(bool) {
        if(lp_RewardPerToken[_pool] != _rewardPerToken){
            lp_RewardPerToken[_pool] = _rewardPerToken;            
        }
        if(lp_FeeState[_pool] != _feeState){
            lp_FeeState[_pool] = _feeState;
        }
        if(lp_LastTrade[_pool] != _lastTrade){
            lp_LastTrade[_pool] = _lastTrade;
        }
        if(lp_UPRemaining[_pool] != _upRemaining){
            lp_UPRemaining[_pool] = _upRemaining;            
        }
        if(lp_TotalClaim[_pool] != _totalClaim){
            lp_TotalClaim[_pool] = _totalClaim;         
        }
        if(mintUPinClaim[_pool] != _mintUPinClaim){
            mintUPinClaim[_pool] = _mintUPinClaim;         
        }
        if(lp_nativeTokensAccumulated[_pool] != _lp_nativeTokensAccumulated){
            lp_nativeTokensAccumulated[_pool] = _lp_nativeTokensAccumulated;         
        }

        return true;
    }


    function updatePoolFeeDetails(address _pool, uint _pairFees, bool _otherPairsUPMintable, uint _UPMintrate) external  onlyOwner returns(bool) {
        if(pairFees[_pool] != _pairFees){
            pairFees[_pool] = _pairFees;            
        }
        if(otherPairsUPMintable[_pool] != _otherPairsUPMintable){
            otherPairsUPMintable[_pool] = _otherPairsUPMintable;            
        }
        if(UPMintrate[_pool] != _UPMintrate){
            UPMintrate[_pool] = _UPMintrate;            
        }

        return true;
    }

    function updateDefaultDetails(uint _maxFee, uint _defaultMintRate, uint _defaultFee , uint _defaultUPFee ,  uint _defaultMintFeeNumerator,uint _defaultMintFeeDenominator,uint _totalUPTokenminted ,uint _currentNativeTokensHoldings) external  onlyOwner returns(bool) {
        maxFee = _maxFee; //100%
         defaultMintRate = _defaultMintRate; 
         defaultFee = _defaultFee; // max is 1000
         defaultUPFee = _defaultUPFee; // 10%  -- max is 10000
         defaultMintFeeNumerator = _defaultMintFeeNumerator;//0.32%
         defaultMintFeeDenominator = _defaultMintFeeDenominator;
         totalUPTokenminted = _totalUPTokenminted;
         currentNativeTokensHoldings = _currentNativeTokensHoldings ;
        return true;
    }



    function updateMultipleUpdateUserPoolDetails(address[] memory _pools, address[] memory _users, uint[] memory _lp_userStates, uint[] memory _lp_userLastActions, uint[] memory _lp_userTotalClaims)onlyOwner external {
        uint i = 0;
        while (i < _pools.length) {
            this.updateUserPoolDetails(_pools[i], _users[i], _lp_userStates[i], _lp_userLastActions[i], _lp_userTotalClaims[i]);
            i++;
        }

    }

    function updateUserPoolDetails(address _pool, address _user, uint _lp_userState, uint _lp_userLastAction, uint _lp_userTotalClaim) external onlyOwner returns(bool) {
        lp_userState[_pool][_user] = _lp_userState;
        lp_userLastAction[_pool][_user] = _lp_userLastAction;
        lp_userTotalClaim[_pool][_user] = _lp_userTotalClaim;

        return true;
    }

    function pendingUpRewards(address _user, address _pool) external view returns(uint256) {
            if ( IUnifiPair(_pool).balanceOf(_user) == 0) {
                return 0;
            } else {
                return (lp_RewardPerToken[_pool] - (lp_userState[_pool][_user])) * (IUnifiPair(_pool).balanceOf(_user)) / (1e18); // up decimal places      
            }



    }



    function broadcastEvent(bool isDeposit, bool isWithdrawl, bool isClaim, uint currentLiquidity, uint liquidity, address user, address pool) internal returns(bool) {
        this.claimPlatformUPFees();
        if (broadcastEnabled) {
            ieb.broadcastEvent(isDeposit, isWithdrawl, isClaim, currentLiquidity, liquidity, user, pool); //
        }
        return true;
    }

    function claimPlatformUPFees() public {
        if (pendingUPPlatformClaimable > 0) {
            if (farmEnabled) {
                uptoken.transfer(this.defaultUPFeesTo(), pendingUPPlatformClaimable);
                ifc.notifyFarm(pendingUPPlatformClaimable); //
                pendingUPPlatformClaimable = 0;
            } else { //default
                _notifyDefaultPoolRewards();
            }

        }

    }

    function updateFarmEnabled(address farmAddress, bool value) onlyOwner external {
        ifc = IFarmController(farmAddress);
        farmEnabled = value;

    }

    function updateBroadCaseEnabled(address _broadcastAddress, bool _value) onlyOwner external {
        ieb = IEventBroadcaster(_broadcastAddress);
        broadcastEnabled = _value;

    }


    function transferOwnership(address _newOwner)onlyOwner  external {
        owner = _newOwner;

    }

    function emergencyWithdraw(address _tokens , uint _amount) onlyOwner external{
        IUP(_tokens).transfer(owner,_amount);
        
    }
    function claimUP(address _user, address _receipient, uint _liquidity, bool _isDeposit, bool _isWithdrawl, bool _isClaim) public returns(uint) {
        this.mintPendingUP( msg.sender);

        uint currentLiquidity = IUnifiPair(msg.sender).balanceOf(_user);
        uint upRewards = _claimUP(_user, msg.sender,_user);
        broadcastEvent(_isDeposit, _isWithdrawl, _isClaim, currentLiquidity, _liquidity, _user, msg.sender);
        return upRewards;
    }

    function claimUP(address _user, address _upRecipient, address _pool) public returns(uint) {
        require(msg.sender == _user, 'Unifi: FORBIDDEN');
        this.mintPendingUP( _pool);
        uint currentLiquidity = IUnifiPair(_pool).balanceOf(_user);
        uint upRewards = _claimUP(_user, _pool,_upRecipient);
        broadcastEvent(false, false, true, currentLiquidity, currentLiquidity, _user, _pool);
        return upRewards;
    }

    function _claimUP(address _user, address _pool, address _upRecipient) internal returns(uint) {
        uint upRewards = this.pendingUpRewards(_user, _pool);
        if (upRewards > 0) {
            uptoken.transfer(_upRecipient, upRewards);
        }
        _updateUserRewards(_pool, _user, upRewards);
        return upRewards;
    }

    function _updateUserRewards(address _pool, address _user, uint _upRewards) internal {
        if (_upRewards > 0) {
            lp_UPRemaining[_pool] = lp_UPRemaining[_pool] - (_upRewards);
            lp_userTotalClaim[_pool][_user] = lp_userTotalClaim[_pool][_user] + (_upRewards);
            lp_TotalClaim[_pool] = lp_TotalClaim[_pool] + (_upRewards);
        }
        if(lp_RewardPerToken[_pool]  == 0 && lp_userState[_pool][_user] == 0 ){//initialize state
            lp_RewardPerToken[_pool] = 1;
        }
        lp_userState[_pool][_user] = lp_RewardPerToken[_pool];
        lp_userLastAction[_pool][_user] = block.timestamp;
    }

    function updateFeeState(uint _fee) external returns(bool) {
        require(msg.sender == address(uptoken), 'updateFeetate : NOT_AUTHORIZED');
        if (_fee > 0) {
            totalUPTokenminted = totalUPTokenminted + (_fee);
        }
        return true;

    }

    function pathToTrade(address _pool) external view returns(address[] memory path) {
        path = lp_pathToTrade[_pool];

    }

    function updateLPPath(address _pair, address[] memory _path) external onlyOwner returns(bool) {
        require(_path[_path.length - 1] == this.WBNB(), ' require to be WBNB');
        lp_pathToTrade[_pair] = _path;
        return true;
    }

    function UPMintable(address _pool) public view returns(bool) {
        // check is it not up mintable    
        if (isNotUPMintable[_pool]) {
            return false;
        }

        if (otherPairsUPMintable[_pool] == true) {
            return true;
        } else if (IUnifiPair(_pool).token0() == WBNB || IUnifiPair(_pool).token1() == WBNB) { // contract address UPmintable does not have wbnb pair {
            return true;

        } else {
            return false;
        }


    }




    fallback() external payable {

    }

    receive() external payable {

    }
    
   
   
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wbnb","type":"address"},{"internalType":"address","name":"_up_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUPMinted","type":"uint256"},{"indexed":false,"internalType":"address","name":"defaultPoolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"platforUPFees","type":"uint256"}],"name":"SwapFeesUpminted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"UpdatePoolRewards","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"UNIFIUPVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"UPMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UPMintrate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UPPoolFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"broadcastEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPlatformUPFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_upRecipient","type":"address"},{"internalType":"address","name":"_pool","type":"address"}],"name":"claimUP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_receipient","type":"address"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"bool","name":"_isDeposit","type":"bool"},{"internalType":"bool","name":"_isWithdrawl","type":"bool"},{"internalType":"bool","name":"_isClaim","type":"bool"}],"name":"claimUP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentNativeTokensHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultBuyBackAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultFarmPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMintFeeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMintFeeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMintUPinClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultNativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultUPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultUPFeesTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokens","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farmEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"getMintFeeConfig","outputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"getMintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getNativeFee","outputs":[{"internalType":"uint256","name":"fees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getPairFee","outputs":[{"internalType":"uint256","name":"fees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getPairUPFee","outputs":[{"internalType":"uint256","name":"fees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyNativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ieb","outputs":[{"internalType":"contract IEventBroadcaster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ifc","outputs":[{"internalType":"contract IFarmController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isDisableFlashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_FeeState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_LastTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_RewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_TotalClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_UPRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_nativeTokensAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lp_poolMigration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"lp_userLastAction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"lp_userState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"lp_userTotalClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintFeeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintFeeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"mintNativeUP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"mintPendingUP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"mintUP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintUPinClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeFeeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nativeFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"uint256","name":"_upAmount","type":"uint256"}],"name":"notifyOtherPoolRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"otherPairsUPMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"pathToTrade","outputs":[{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingUPPlatformClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_pool","type":"address"}],"name":"pendingUpRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrap","type":"address"}],"name":"setBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setDefaultFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numerator","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setDefaultMintFeeConf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setDefaultMintRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setDefaultUPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setDefaultUPFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeSetter","type":"address"}],"name":"setFeeSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setMaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numerator","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"address","name":"_pool","type":"address"}],"name":"setMintFeeConf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nativeFeeTo","type":"address"}],"name":"setNativeFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setPairFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTradingStatusConf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_UNIFIUPVault","type":"address"}],"name":"setUNIFIUPVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"},{"internalType":"uint256","name":"_mintRate","type":"uint256"}],"name":"setUPNotMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"},{"internalType":"uint256","name":"_mintRate","type":"uint256"}],"name":"setUPOtherPairsNotMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"address","name":"_pool","type":"address"}],"name":"setUPPoolPlatformfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"setUPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalUPTokenminted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_broadcastAddress","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateBroadCaseEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxFee","type":"uint256"},{"internalType":"uint256","name":"_defaultMintRate","type":"uint256"},{"internalType":"uint256","name":"_defaultFee","type":"uint256"},{"internalType":"uint256","name":"_defaultUPFee","type":"uint256"},{"internalType":"uint256","name":"_defaultMintFeeNumerator","type":"uint256"},{"internalType":"uint256","name":"_defaultMintFeeDenominator","type":"uint256"},{"internalType":"uint256","name":"_totalUPTokenminted","type":"uint256"},{"internalType":"uint256","name":"_currentNativeTokensHoldings","type":"uint256"}],"name":"updateDefaultDetails","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateDefaultMintUPinClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPool","type":"address"}],"name":"updateDefaultPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"farmAddress","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"updateFarmEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateFeeState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateLPFeeState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateLPLUPRemaining","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateLPLastTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address[]","name":"_path","type":"address[]"}],"name":"updateLPPath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateMintUPinClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pools","type":"address[]"},{"internalType":"uint256[]","name":"_rewardPerTokens","type":"uint256[]"},{"internalType":"uint256[]","name":"_feeStates","type":"uint256[]"},{"internalType":"uint256[]","name":"_lastTrades","type":"uint256[]"},{"internalType":"uint256[]","name":"_upRemainings","type":"uint256[]"},{"internalType":"uint256[]","name":"_totalClaims","type":"uint256[]"},{"internalType":"bool[]","name":"_mintUPinClaim","type":"bool[]"},{"internalType":"uint256[]","name":"_lp_nativeTokensAccumulated","type":"uint256[]"}],"name":"updateMultipleUpdatePoolDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pools","type":"address[]"},{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256[]","name":"_lp_userStates","type":"uint256[]"},{"internalType":"uint256[]","name":"_lp_userLastActions","type":"uint256[]"},{"internalType":"uint256[]","name":"_lp_userTotalClaims","type":"uint256[]"}],"name":"updateMultipleUpdateUserPoolDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateNotUPMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"uint256","name":"_pairFees","type":"uint256"},{"internalType":"bool","name":"_otherPairsUPMintable","type":"bool"},{"internalType":"uint256","name":"_UPMintrate","type":"uint256"}],"name":"updatePoolFeeDetails","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_lp_userState","type":"uint256"},{"internalType":"uint256","name":"_lp_userLastAction","type":"uint256"},{"internalType":"uint256","name":"_lp_userTotalClaim","type":"uint256"}],"name":"updateUserPoolDetails","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateotherPairsUPMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uptoken","outputs":[{"internalType":"contract IUP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526103e8600481905560006009819055600c919091556125e4600d556003600e556105dc600f556008601055601180556012805460ff19169055606460135560218190556022805461ffff191690556023553480156200006257600080fd5b506040516200510e3803806200510e833981016040819052620000859162000123565b600080546001600160a01b0319908116339081178355600180546001600160a01b03968716908416178155601480548416831790556003805484168317905581845260156020526040909320805460ff1916909317909255600a8054821690921790915560028054821630179055600780549290931691161790556200015a565b80516001600160a01b03811681146200011e57600080fd5b919050565b6000806040838503121562000136578182fd5b620001418362000106565b9150620001516020840162000106565b90509250929050565b614fa4806200016a6000396000f3fe6080604052600436106105865760003560e01c806384dc41fd116102d2578063b8f2bbc511610189578063e2d3646e116100de578063f3f71c931161009a578063f5fc7f5811610077578063f5fc7f58146112d1578063f6f114ca146112fe578063f794c3ba1461131e578063f8c7ec991461133e57005b8063f3f71c931461126e578063f58589a214611284578063f58d9749146112b157005b8063e2d3646e146111a1578063e32dedab146111c1578063e3d0dd06146111e1578063e9725c3c14611201578063f2fde38b14611221578063f39d4c791461124157005b8063ca0fc5a211610145578063ce5a7baa11610122578063ce5a7baa146110f7578063d58fc8f214611124578063d60675eb14611151578063d84f44601461117157005b8063ca0fc5a21461109f578063cb99ef11146110cc578063ce53c82b146110e157005b8063b8f2bbc514610fea578063b92b21c11461100a578063ba11b3681461101f578063bb1d141d1461103f578063c53f57ee1461105f578063c93a6c841461107f57005b8063a5deab371161023f578063afe01b48116101fb578063b1bdf0f6116101d8578063b1bdf0f614610f74578063b2d3d16214610f8a578063b355570014610faa578063b6ae0cf014610fca57005b8063afe01b4814610f14578063b02ee53914610f34578063b19805af14610f5457005b8063a5deab3714610e61578063a821b2a614610e81578063a93a897d14610ea1578063aba2f2d414610ec1578063ac800cc414610ed4578063adabc36b14610ef457005b806395ccea671161028e57806395ccea6714610da857806396e6c42d14610dc8578063995d883614610df5578063a0b66a5c14610e08578063a2e656a214610e28578063a50a329014610e4757005b806384dc41fd14610cfc57806385f58d8514610d1257806387cf3ef414610d325780638da5cb5b14610d525780638dd9500214610d725780639066c05514610d9257005b80633fad91e61161043e57806363a846f8116103935780637316a58d1161034f578063759d2a361161032c578063759d2a3614610c645780637db09f7014610c84578063822c00d414610ca457806383a0e4a314610cc457005b80637316a58d14610be6578063741176c514610c1e5780637554f18614610c4e57005b806363a846f814610af0578063641fef4e14610b2057806368b959cc14610b405780636d771c5414610b795780637048027514610ba6578063710e5d2f14610bc657005b80634f78aa82116103fa5780635638d455116103d75780635638d45514610a875780635a6c72d014610aa75780635aa5f36714610abd5780635b00644714610add57005b80634f78aa8214610a0f578063501bd68014610a2f5780635404eb2314610a4f57005b80633fad91e61461093557806341430ac0146109555780634725b9451461098257806348d90798146109af5780634908d8ab146109cf5780634daa9227146109ef57005b80631ed3349c116104f45780632c97d10a116104b0578063332ec25d1161048d578063332ec25d146108a8578063391e4fbc146108c857806339557bc3146108e85780633b7b0b921461091557005b80632c97d10a1461082a57806330a752981461085a57806332b4d4a21461089257005b80631ed3349c1461075e578063231d39b91461077e57806325d448bb146107ae57806326fbca6b146107de5780632925f642146107f45780632a8abb921461080a57005b80630de320c1116105435780630de320c11461066f5780630fa546e21461069c57806312492660146106bc57806313d27193146106e95780631785f53c146107095780631c56e0cb1461072957005b8062eafc051461058f57806301f59d16146105be57806303b94c27146105e257806305eb5c1d146106025780630707a0f01461062f5780630cf6ee841461064f57005b3661058d57005b005b34801561059b57600080fd5b506022546105a99060ff1681565b60405190151581526020015b60405180910390f35b3480156105ca57600080fd5b506105d4600c5481565b6040519081526020016105b5565b3480156105ee57600080fd5b506105d46105fd36600461478a565b61135e565b34801561060e57600080fd5b506105d461061d36600461478a565b60276020526000908152604090205481565b34801561063b57600080fd5b506105d461064a36600461478a565b611548565b34801561065b57600080fd5b506105d461066a36600461478a565b611589565b34801561067b57600080fd5b506105d461068a36600461478a565b601c6020526000908152604090205481565b3480156106a857600080fd5b5061058d6106b7366004614cf0565b6115ca565b3480156106c857600080fd5b506105d46106d736600461478a565b601f6020526000908152604090205481565b3480156106f557600080fd5b5061058d61070436600461478a565b611645565b34801561071557600080fd5b5061058d61072436600461478a565b6116b0565b34801561073557600080fd5b5061074961074436600461478a565b6116fb565b604080519283526020830191909152016105b5565b34801561076a57600080fd5b5061058d610779366004614c43565b611779565b34801561078a57600080fd5b506105a961079936600461478a565b601a6020526000908152604090205460ff1681565b3480156107ba57600080fd5b506105a96107c936600461478a565b60296020526000908152604090205460ff1681565b3480156107ea57600080fd5b506105d460095481565b34801561080057600080fd5b506105d4600f5481565b34801561081657600080fd5b506105a961082536600461478a565b6117d5565b34801561083657600080fd5b506105a961084536600461478a565b602a6020526000908152604090205460ff1681565b34801561086657600080fd5b5060075461087a906001600160a01b031681565b6040516001600160a01b0390911681526020016105b5565b34801561089e57600080fd5b506105d460105481565b3480156108b457600080fd5b506105a96108c33660046149f9565b611827565b3480156108d457600080fd5b506105a96108e33660046149ce565b611920565b3480156108f457600080fd5b506105d461090336600461478a565b60286020526000908152604090205481565b34801561092157600080fd5b5061058d610930366004614961565b611985565b34801561094157600080fd5b5061058d610950366004614c7b565b6119eb565b34801561096157600080fd5b506105d461097036600461478a565b60266020526000908152604090205481565b34801561098e57600080fd5b506105d461099d36600461478a565b600b6020526000908152604090205481565b3480156109bb57600080fd5b5060055461087a906001600160a01b031681565b3480156109db57600080fd5b506105a96109ea36600461478a565b611a39565b3480156109fb57600080fd5b506105a9610a0a3660046148c3565b611bbe565b348015610a1b57600080fd5b506105d4610a2a36600461478a565b611c49565b348015610a3b57600080fd5b5061058d610a4a36600461498e565b611c8a565b348015610a5b57600080fd5b506105d4610a6a3660046147c9565b602e60209081526000928352604080842090915290825290205481565b348015610a9357600080fd5b5061058d610aa236600461478a565b611d08565b348015610ab357600080fd5b506105d4600e5481565b348015610ac957600080fd5b506105a9610ad8366004614d1d565b611d54565b6105a9610aeb3660046149ce565b611dab565b348015610afc57600080fd5b506105a9610b0b36600461478a565b60156020526000908152604090205460ff1681565b348015610b2c57600080fd5b5060065461087a906001600160a01b031681565b348015610b4c57600080fd5b506105a9610b5b36600461478a565b6001600160a01b03166000908152601a602052604090205460ff1690565b348015610b8557600080fd5b506105d4610b9436600461478a565b60166020526000908152604090205481565b348015610bb257600080fd5b5061058d610bc136600461478a565b611f20565b348015610bd257600080fd5b5061058d610be1366004614c7b565b611f6e565b348015610bf257600080fd5b506105d4610c013660046147c9565b602c60209081526000928352604080842090915290825290205481565b348015610c2a57600080fd5b506105a9610c3936600461478a565b60196020526000908152604090205460ff1681565b348015610c5a57600080fd5b506105d460135481565b348015610c7057600080fd5b506105a9610c7f3660046149ce565b611fbc565b348015610c9057600080fd5b5061058d610c9f366004614cab565b61200a565b348015610cb057600080fd5b506105a9610cbf366004614c7b565b61206d565b348015610cd057600080fd5b506105d4610cdf3660046147c9565b602d60209081526000928352604080842090915290825290205481565b348015610d0857600080fd5b506105d460115481565b348015610d1e57600080fd5b5061058d610d2d366004614c7b565b6120ea565b348015610d3e57600080fd5b5060005461087a906001600160a01b031681565b348015610d5e57600080fd5b5060145461087a906001600160a01b031681565b348015610d7e57600080fd5b5060015461087a906001600160a01b031681565b348015610d9e57600080fd5b506105d460235481565b348015610db457600080fd5b5061058d610dc33660046149ce565b612138565b348015610dd457600080fd5b50610de8610de336600461478a565b6121ed565b6040516105b59190614d71565b6105d4610e0336600461478a565b612263565b348015610e1457600080fd5b5061058d610e23366004614961565b6122ff565b348015610e3457600080fd5b506022546105a990610100900460ff1681565b348015610e5357600080fd5b506012546105a99060ff1681565b348015610e6d57600080fd5b5061058d610e7c36600461498e565b61235d565b348015610e8d57600080fd5b5061058d610e9c366004614a40565b612424565b348015610ead57600080fd5b5061058d610ebc3660046149ce565b6125e3565b6105d4610ecf36600461478a565b61265f565b348015610ee057600080fd5b506105a9610eef3660046149ce565b612999565b348015610f0057600080fd5b5061058d610f0f366004614ccf565b6129e7565b348015610f2057600080fd5b506105a9610f2f366004614913565b612a3b565b348015610f4057600080fd5b506105d4610f4f3660046147c9565b612b96565b348015610f6057600080fd5b5061058d610f6f36600461478a565b612cfc565b348015610f8057600080fd5b506105d460215481565b348015610f9657600080fd5b506105d4610fa536600461478a565b612d72565b348015610fb657600080fd5b5061058d610fc5366004614b0c565b612db3565b348015610fd657600080fd5b5061058d610fe536600461478a565b612f4f565b348015610ff657600080fd5b5061058d611005366004614961565b612fba565b34801561101657600080fd5b506105d461302e565b34801561102b57600080fd5b5061058d61103a36600461478a565b613043565b34801561104b57600080fd5b5061058d61105a366004614961565b61308f565b34801561106b57600080fd5b506105d461107a366004614801565b613103565b34801561108b57600080fd5b5061058d61109a366004614c7b565b613250565b3480156110ab57600080fd5b506105d46110ba36600461478a565b602b6020526000908152604090205481565b3480156110d857600080fd5b5061058d61329e565b3480156110ed57600080fd5b506105d460045481565b34801561110357600080fd5b506105d461111236600461478a565b601e6020526000908152604090205481565b34801561113057600080fd5b506105d461113f36600461478a565b60246020526000908152604090205481565b34801561115d57600080fd5b5061058d61116c366004614961565b61344b565b34801561117d57600080fd5b506105a961118c36600461478a565b601b6020526000908152604090205460ff1681565b3480156111ad57600080fd5b5061058d6111bc36600461478a565b6134bf565b3480156111cd57600080fd5b5060035461087a906001600160a01b031681565b3480156111ed57600080fd5b5061058d6111fc366004614961565b613535565b34801561120d57600080fd5b5060205461087a906001600160a01b031681565b34801561122d57600080fd5b5061058d61123c36600461478a565b6135a9565b34801561124d57600080fd5b506105d461125c36600461478a565b60256020526000908152604090205481565b34801561127a57600080fd5b506105d4600d5481565b34801561129057600080fd5b506105d461129f36600461478a565b60176020526000908152604090205481565b3480156112bd57600080fd5b50600a5461087a906001600160a01b031681565b3480156112dd57600080fd5b506105d46112ec36600461478a565b601d6020526000908152604090205481565b34801561130a57600080fd5b5061058d611319366004614961565b6135f5565b34801561132a57600080fd5b506105d461133936600461484b565b613669565b34801561134a57600080fd5b5060025461087a906001600160a01b031681565b60008061136a83613784565b90508015611542576020546000906001600160a01b03161580159061139d57506020546001600160a01b03858116911614155b1561145157604051635969e8b160e11b81526001600160a01b038516600482015261271090309063b2d3d1629060240160206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190614c93565b6114279084614ece565b6114319190614eae565b9050806009546114419190614e96565b60095561144e8183614eed565b91505b6000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148c57600080fd5b505afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190614c93565b6114d684670de0b6b3a7640000614ece565b6114e09190614eae565b90506114ed858483613b36565b60208054604080518681526001600160a01b039283169381019390935282018490528616907fb16df239702313d1569dacac57261f5e749e8c8c5ec346f9816b9cdb2e157bef9060600160405180910390a250505b92915050565b6001600160a01b03811660009081526017602052604081205461156d57601354611542565b506001600160a01b031660009081526017602052604090205490565b6001600160a01b0381166000908152601660205260408120546115ae57600e54611542565b506001600160a01b031660009081526016602052604090205490565b6014546001600160a01b03163314806115f757503360009081526015602052604090205460ff1615156001145b61161c5760405162461bcd60e51b815260040161161390614e14565b60405180910390fd5b6001600160a01b03166000908152601e6020908152604080832094909455601f90529190912055565b6014546001600160a01b031633148061167257503360009081526015602052604090205460ff1615156001145b61168e5760405162461bcd60e51b815260040161161390614e14565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633146116da5760405162461bcd60e51b815260040161161390614de8565b6001600160a01b03166000908152601560205260409020805460ff19169055565b6010546011546001600160a01b0383166000908152601e60205260409020541561173b576001600160a01b0383166000908152601e602052604090205491505b6001600160a01b0383166000908152601f60205260409020541561177457506001600160a01b0382166000908152601f60205260409020545b915091565b6014546001600160a01b03163314806117a657503360009081526015602052604090205460ff1615156001145b6117c25760405162461bcd60e51b815260040161161390614e14565b6012805460ff1916911515919091179055565b6014546000906001600160a01b031633146118025760405162461bcd60e51b815260040161161390614de8565b50602080546001600160a01b0383166001600160a01b03199091161790556001919050565b6014546000906001600160a01b031633146118545760405162461bcd60e51b815260040161161390614de8565b6001600160a01b038516600090815260166020526040902054841461188f576001600160a01b03851660009081526016602052604090208490555b6001600160a01b03851660009081526019602052604090205460ff161515831515146118da576001600160a01b0385166000908152601960205260409020805460ff19168415151790555b6001600160a01b0385166000908152601c60205260409020548214611915576001600160a01b0385166000908152601c602052604090208290555b506001949350505050565b6014546000906001600160a01b0316331461194d5760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b0316331461196457600080fd5b506001600160a01b0391909116600090815260266020526040902055600190565b6014546001600160a01b031633146119af5760405162461bcd60e51b815260040161161390614de8565b600580546001600160a01b039093166001600160a01b031990931692909217909155602280549115156101000261ff0019909216919091179055565b6014546001600160a01b0316331480611a1857503360009081526015602052604090205460ff1615156001145b611a345760405162461bcd60e51b815260040161161390614e14565b600f55565b6001600160a01b03811660009081526018602052604081205460ff1615611a6257506000919050565b6001600160a01b03821660009081526019602052604090205460ff16151560011415611a9057506001919050565b60015460408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611ad757600080fd5b505afa158015611aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0f91906147ad565b6001600160a01b03161480611ba957506001546040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611b6657600080fd5b505afa158015611b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9e91906147ad565b6001600160a01b0316145b15611bb657506001919050565b506000919050565b6014546000906001600160a01b03163314611beb5760405162461bcd60e51b815260040161161390614de8565b506001600160a01b039485166000818152602c602090815260408083209790981680835296815287822095909555818152602d85528681208682528552868120939093558252602e8352848220938252929091529190912055600190565b6001600160a01b0381166000908152601c6020526040812054611c6e57600d54611542565b506001600160a01b03166000908152601c602052604090205490565b6014546001600160a01b0316331480611cb757503360009081526015602052604090205460ff1615156001145b611cd35760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03929092166000908152601860209081526040808320805460ff191694151594909417909355601c90522055565b6014546001600160a01b03163314611d325760405162461bcd60e51b815260040161161390614de8565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6014546000906001600160a01b03163314611d815760405162461bcd60e51b815260040161161390614de8565b50600c97909755600d95909555600e93909355600f91909155601055601155602155602355600190565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526000916001600160a01b0316906323b872dd90606401602060405180830381600087803b158015611dfe57600080fd5b505af1158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190614c5f565b506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaa9190614c93565b611ebc84670de0b6b3a7640000614ece565b611ec69190614eae565b9050611ed3848483613b36565b836001600160a01b03167fc806057c97446168e9539522779562d04cd483f86d8e72cf9885ce9cabbc627584604051611f0e91815260200190565b60405180910390a25060019392505050565b6014546001600160a01b03163314611f4a5760405162461bcd60e51b815260040161161390614de8565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6014546001600160a01b0316331480611f9b57503360009081526015602052604090205460ff1615156001145b611fb75760405162461bcd60e51b815260040161161390614e14565b600c55565b6014546000906001600160a01b03163314611fe95760405162461bcd60e51b815260040161161390614de8565b506001600160a01b0391909116600090815260276020526040902055600190565b6014546001600160a01b031633148061203757503360009081526015602052604090205460ff1615156001145b6120535760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03166000908152600b6020526040902055565b6007546000906001600160a01b031633146120ca5760405162461bcd60e51b815260206004820152601e60248201527f75706461746546656574617465203a204e4f545f415554484f52495a454400006044820152606401611613565b81156120e257816021546120de9190614e96565b6021555b506001919050565b6014546001600160a01b031633148061211757503360009081526015602052604090205460ff1615156001145b6121335760405162461bcd60e51b815260040161161390614e14565b600d55565b6014546001600160a01b031633146121625760405162461bcd60e51b815260040161161390614de8565b60145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b1580156121b057600080fd5b505af11580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190614c5f565b505050565b6001600160a01b0381166000908152602f602090815260409182902080548351818402810184019094528084526060939283018282801561225757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612239575b50505050509050919050565b6000806122703334613bdb565b60075460405163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905292935091169063a9059cbb90604401602060405180830381600087803b1580156122c057600080fd5b505af11580156122d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f89190614c5f565b5092915050565b6014546001600160a01b031633146123295760405162461bcd60e51b815260040161161390614de8565b600680546001600160a01b0319166001600160a01b0393909316929092179091556022805460ff1916911515919091179055565b6014546001600160a01b031633148061238a57503360009081526015602052604090205460ff1615156001145b6123a65760405162461bcd60e51b815260040161161390614e14565b6000546001600160a01b03163314806123d357503360009081526015602052604090205460ff1615156001145b6123ef5760405162461bcd60e51b815260040161161390614dbe565b6001600160a01b03929092166000908152601960209081526040808320805460ff191694151594909417909355601c90522055565b6014546001600160a01b0316331461244e5760405162461bcd60e51b815260040161161390614de8565b60005b85518110156125db57306001600160a01b0316634daa922787838151811061248957634e487b7160e01b600052603260045260246000fd5b60200260200101518784815181106124b157634e487b7160e01b600052603260045260246000fd5b60200260200101518785815181106124d957634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061250157634e487b7160e01b600052603260045260246000fd5b602002602001015187878151811061252957634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a401602060405180830381600087803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c89190614c5f565b50806125d381614f04565b915050612451565b505050505050565b6014546001600160a01b031633148061261057503360009081526015602052604090205460ff1615156001145b61262c5760405162461bcd60e51b815260040161161390614e14565b600c54811161263b578061263f565b600c545b6001600160a01b0390921660009081526016602052604090209190915550565b60006001600160a01b03821633146126b15760405162461bcd60e51b8152602060048201526015602482015274556e6966693a20496e76616c696420706172616d7360581b6044820152606401611613565b604051634908d8ab60e01b81523360048201523090634908d8ab9060240160206040518083038186803b1580156126e757600080fd5b505afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614c5f565b61272b57506000919050565b336000908152602660209081526040808320429055602990915290205460ff16151560011480612762575060125460ff1615156001145b156127b957600061277161302e565b336000908152602b602052604090205490915061278f908290614e96565b336000908152602b60205260409020556023546127ad908290614e96565b60235550600092915050565b60006127cc336127c761302e565b613bdb565b6020549091506000906001600160a01b0316158015906127f757506020546001600160a01b03163314155b156128a257604051635969e8b160e11b815233600482015261271090309063b2d3d1629060240160206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e9190614c93565b6128789084614ece565b6128829190614eae565b9050806009546128929190614e96565b60095561289f8183614eed565b91505b6000336001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128dd57600080fd5b505afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129159190614c93565b61292784670de0b6b3a7640000614ece565b6129319190614eae565b905061293e858483613b36565b60208054604080518681526001600160a01b039092169282019290925290810183905233907fb16df239702313d1569dacac57261f5e749e8c8c5ec346f9816b9cdb2e157bef9060600160405180910390a250909392505050565b6014546000906001600160a01b031633146129c65760405162461bcd60e51b815260040161161390614de8565b506001600160a01b0391909116600090815260256020526040902055600190565b6014546001600160a01b0316331480612a1457503360009081526015602052604090205460ff1615156001145b612a305760405162461bcd60e51b815260040161161390614e14565b601091909155601155565b6014546000906001600160a01b03163314612a685760405162461bcd60e51b815260040161161390614de8565b306001600160a01b0316638dd950026040518163ffffffff1660e01b815260040160206040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad991906147ad565b6001600160a01b03168260018451612af19190614eed565b81518110612b0f57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614612b635760405162461bcd60e51b8152602060048201526013602482015272103932b8bab4b932903a37903132902ba1272160691b6044820152606401611613565b6001600160a01b0383166000908152602f602090815260409091208351612b8c928501906145d5565b5060019392505050565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908316906370a082319060240160206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190614c93565b612c1f57506000611542565b6040516370a0823160e01b81526001600160a01b038481166004830152670de0b6b3a764000091908416906370a082319060240160206040518083038186803b158015612c6b57600080fd5b505afa158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca39190614c93565b6001600160a01b038085166000818152602c60209081526040808320948a16835293815283822054928252602490529190912054612ce19190614eed565b612ceb9190614ece565b612cf59190614eae565b9050611542565b6014546001600160a01b03163314612d265760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b03163314612d505760405162461bcd60e51b815260040161161390614dbe565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600b6020526040812054612d9757600f54611542565b506001600160a01b03166000908152600b602052604090205490565b6014546001600160a01b03163314612ddd5760405162461bcd60e51b815260040161161390614de8565b60005b8851811015612f4457612f31898281518110612e0c57634e487b7160e01b600052603260045260246000fd5b6020026020010151898381518110612e3457634e487b7160e01b600052603260045260246000fd5b6020026020010151898481518110612e5c57634e487b7160e01b600052603260045260246000fd5b6020026020010151898581518110612e8457634e487b7160e01b600052603260045260246000fd5b6020026020010151898681518110612eac57634e487b7160e01b600052603260045260246000fd5b6020026020010151898781518110612ed457634e487b7160e01b600052603260045260246000fd5b6020026020010151898881518110612efc57634e487b7160e01b600052603260045260246000fd5b6020026020010151898981518110612f2457634e487b7160e01b600052603260045260246000fd5b6020026020010151613f61565b5080612f3c81614f04565b915050612de0565b505050505050505050565b6014546001600160a01b0316331480612f7c57503360009081526015602052604090205460ff1615156001145b612f985760405162461bcd60e51b815260040161161390614e14565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480612fe757503360009081526015602052604090205460ff1615156001145b6130035760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b60006023544761303e9190614eed565b905090565b6014546001600160a01b0316331461306d5760405162461bcd60e51b815260040161161390614de8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b03163314806130bc57503360009081526015602052604090205460ff1615156001145b6130d85760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000336001600160a01b0385161461312d5760405162461bcd60e51b815260040161161390614dbe565b6040516303b94c2760e01b81526001600160a01b038316600482015230906303b94c2790602401602060405180830381600087803b15801561316e57600080fd5b505af1158015613182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a69190614c93565b506040516370a0823160e01b81526001600160a01b038581166004830152600091908416906370a082319060240160206040518083038186803b1580156131ec57600080fd5b505afa158015613200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132249190614c93565b9050600061323386858761411d565b9050613246600080600185868b8a61423c565b5095945050505050565b6014546001600160a01b031633148061327d57503360009081526015602052604090205460ff1615156001145b6132995760405162461bcd60e51b815260040161161390614e14565b600e55565b6009541561344957602254610100900460ff161561343f57600760009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb306001600160a01b031663f58d97496040518163ffffffff1660e01b815260040160206040518083038186803b15801561331357600080fd5b505afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b91906147ad565b6009546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561339457600080fd5b505af11580156133a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cc9190614c5f565b50600554600954604051633cbab62360e01b81526001600160a01b0390921691633cbab623916134029160040190815260200190565b600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b50506000600955506134499050565b61344761433a565b505b565b6014546001600160a01b031633148061347857503360009081526015602052604090205460ff1615156001145b6134945760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6014546001600160a01b031633146134e95760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b031633146135135760405162461bcd60e51b815260040161161390614dbe565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061356257503360009081526015602052604090205460ff1615156001145b61357e5760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6014546001600160a01b031633146135d35760405162461bcd60e51b815260040161161390614de8565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061362257503360009081526015602052604090205460ff1615156001145b61363e5760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6040516303b94c2760e01b815233600482015260009030906303b94c2790602401602060405180830381600087803b1580156136a457600080fd5b505af11580156136b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136dc9190614c93565b506040516370a0823160e01b81526001600160a01b038816600482015260009033906370a082319060240160206040518083038186803b15801561371f57600080fd5b505afa158015613733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137579190614c93565b9050600061376689338b61411d565b9050613777868686858b8e3361423c565b5098975050505050505050565b6001600160a01b0381166000908152602b60205260408120546137a957506000919050565b604051634908d8ab60e01b81526001600160a01b03831660048201523090634908d8ab9060240160206040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138209190614c5f565b61382c57506000919050565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561387057600080fd5b505afa158015613884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a89190614c93565b6040516327bc554160e11b81526001600160a01b0385166004820152909150600090612710903090634f78aa829060240160206040518083038186803b1580156138f157600080fd5b505afa158015613905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139299190614c93565b6001600160a01b0386166000908152602b602052604090205461394c9190614ece565b6139569190614eae565b6007546040516340c10f1960e01b8152306004820152602481018390529192506001600160a01b0316906340c10f199083906044016020604051808303818588803b1580156139a457600080fd5b505af11580156139b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139dd9190614c5f565b506001600160a01b0384166000908152602b6020526040902054811015613a68576001600160a01b0384166000908152602b6020526040812054613a22908390614eed565b90508015613a66576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613a64573d6000803e3d6000fd5b505b505b6001600160a01b0384166000908152602b6020526040902054602354613a8e9190614eed565b6023556001600160a01b038481166000908152602b60205260408082209190915560075490516370a0823160e01b8152306004820152849291909116906370a082319060240160206040518083038186803b158015613aec57600080fd5b505afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190614c93565b613b2e9190614eed565b949350505050565b6001600160a01b038316600090815260246020526040902054613b5a908290614e96565b6001600160a01b038416600090815260246020908152604080832093909355602590522054613b8a908390614e96565b6001600160a01b038416600090815260256020908152604080832093909355602790522054613bba908390614e96565b6001600160a01b039093166000908152602760205260409020929092555050565b6000808211613c2c5760405162461bcd60e51b815260206004820152601b60248201527f547279696e6720746f206d696e74207769746820302076616c756500000000006044820152606401611613565b604051634908d8ab60e01b81526001600160a01b03841660048201523090634908d8ab9060240160206040518083038186803b158015613c6b57600080fd5b505afa158015613c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca39190614c5f565b613cef5760405162461bcd60e51b815260206004820152601760248201527f4572726f723a204f4e4c592077686974656c69737465640000000000000000006044820152606401611613565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015613d3357600080fd5b505afa158015613d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6b9190614c93565b6040516327bc554160e11b81526001600160a01b0386166004820152909150612710903090634f78aa829060240160206040518083038186803b158015613db157600080fd5b505afa158015613dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de99190614c93565b613df39085614ece565b613dfd9190614eae565b6007546040516340c10f1960e01b8152306004820152602481018390529194506001600160a01b0316906340c10f199085906044016020604051808303818588803b158015613e4b57600080fd5b505af1158015613e5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e849190614c5f565b506000613e8f61302e565b90508015613ed3576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613ed1573d6000803e3d6000fd5b505b6007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a082319060240160206040518083038186803b158015613f1657600080fd5b505afa158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190614c93565b613f589190614eed565b95945050505050565b6001600160a01b0388166000908152602460205260408120548814613f9c576001600160a01b03891660009081526024602052604090208890555b6001600160a01b0389166000908152602560205260409020548714613fd7576001600160a01b03891660009081526025602052604090208790555b6001600160a01b0389166000908152602660205260409020548614614012576001600160a01b03891660009081526026602052604090208690555b6001600160a01b038916600090815260276020526040902054851461404d576001600160a01b03891660009081526027602052604090208590555b6001600160a01b0389166000908152602860205260409020548414614088576001600160a01b03891660009081526028602052604090208490555b6001600160a01b03891660009081526029602052604090205460ff161515831515146140d3576001600160a01b0389166000908152602960205260409020805460ff19168415151790555b6001600160a01b0389166000908152602b6020526040902054821461410e576001600160a01b0389166000908152602b602052604090208290555b50600198975050505050505050565b60405163b02ee53960e01b81526001600160a01b038085166004830152831660248201526000908190309063b02ee5399060440160206040518083038186803b15801561416957600080fd5b505afa15801561417d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a19190614c93565b905080156142315760075460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156141f757600080fd5b505af115801561420b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061422f9190614c5f565b505b613b2e84868361445c565b6000306001600160a01b031663cb99ef116040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505060225460ff1615915061432c9050576006546040516305a1a43960e11b815289151560048201528815156024820152871515604482015260648101879052608481018690526001600160a01b0385811660a483015284811660c483015290911690630b4348729060e401600060405180830381600087803b15801561431357600080fd5b505af1158015614327573d6000803e3d6000fd5b505050505b506001979650505050505050565b6020546000906001600160a01b0316156144565760208054604080516318160ddd60e01b815290516000936001600160a01b03909316926318160ddd9260048082019391829003018186803b15801561439257600080fd5b505afa1580156143a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ca9190614c93565b6009546143df90670de0b6b3a7640000614ece565b6143e99190614eae565b602054600954919250614408916001600160a01b039091169083613b36565b60006009819055602080546040519283526001600160a01b0316917fc806057c97446168e9539522779562d04cd483f86d8e72cf9885ce9cabbc6275910160405180910390a2600191505090565b50600090565b801561451e576001600160a01b038316600090815260276020526040902054614486908290614eed565b6001600160a01b03808516600090815260276020908152604080832094909455602e815283822092861682529190915220546144c3908290614e96565b6001600160a01b038085166000818152602e602090815260408083209488168352938152838220949094559081526028909252902054614504908290614e96565b6001600160a01b0384166000908152602860205260409020555b6001600160a01b03831660009081526024602052604090205415801561456757506001600160a01b038084166000908152602c6020908152604080832093861683529290522054155b15614589576001600160a01b0383166000908152602460205260409020600190555b506001600160a01b03918216600081815260246020908152604080832054602c83528184209590961680845294825280832095909555918152602d825283812092815291905220429055565b82805482825590600052602060002090810192821561462a579160200282015b8281111561462a57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906145f5565b5061463692915061463a565b5090565b5b80821115614636576000815560010161463b565b600082601f83011261465f578081fd5b8135602061467461466f83614e72565b614e41565b80838252828201915082860187848660051b8901011115614693578586fd5b855b858110156146ba5781356146a881614f4b565b84529284019290840190600101614695565b5090979650505050505050565b600082601f8301126146d7578081fd5b813560206146e761466f83614e72565b80838252828201915082860187848660051b8901011115614706578586fd5b855b858110156146ba57813561471b81614f60565b84529284019290840190600101614708565b600082601f83011261473d578081fd5b8135602061474d61466f83614e72565b80838252828201915082860187848660051b890101111561476c578586fd5b855b858110156146ba5781358452928401929084019060010161476e565b60006020828403121561479b578081fd5b81356147a681614f4b565b9392505050565b6000602082840312156147be578081fd5b81516147a681614f4b565b600080604083850312156147db578081fd5b82356147e681614f4b565b915060208301356147f681614f4b565b809150509250929050565b600080600060608486031215614815578081fd5b833561482081614f4b565b9250602084013561483081614f4b565b9150604084013561484081614f4b565b809150509250925092565b60008060008060008060c08789031215614863578182fd5b863561486e81614f4b565b9550602087013561487e81614f4b565b945060408701359350606087013561489581614f60565b925060808701356148a581614f60565b915060a08701356148b581614f60565b809150509295509295509295565b600080600080600060a086880312156148da578081fd5b85356148e581614f4b565b945060208601356148f581614f4b565b94979496505050506040830135926060810135926080909101359150565b60008060408385031215614925578182fd5b823561493081614f4b565b9150602083013567ffffffffffffffff81111561494b578182fd5b6149578582860161464f565b9150509250929050565b60008060408385031215614973578182fd5b823561497e81614f4b565b915060208301356147f681614f60565b6000806000606084860312156149a2578081fd5b83356149ad81614f4b565b925060208401356149bd81614f60565b929592945050506040919091013590565b600080604083850312156149e0578182fd5b82356149eb81614f4b565b946020939093013593505050565b60008060008060808587031215614a0e578182fd5b8435614a1981614f4b565b9350602085013592506040850135614a3081614f60565b9396929550929360600135925050565b600080600080600060a08688031215614a57578283fd5b853567ffffffffffffffff80821115614a6e578485fd5b614a7a89838a0161464f565b96506020880135915080821115614a8f578485fd5b614a9b89838a0161464f565b95506040880135915080821115614ab0578485fd5b614abc89838a0161472d565b94506060880135915080821115614ad1578283fd5b614add89838a0161472d565b93506080880135915080821115614af2578283fd5b50614aff8882890161472d565b9150509295509295909350565b600080600080600080600080610100898b031215614b28578586fd5b883567ffffffffffffffff80821115614b3f578788fd5b614b4b8c838d0161464f565b995060208b0135915080821115614b60578788fd5b614b6c8c838d0161472d565b985060408b0135915080821115614b81578788fd5b614b8d8c838d0161472d565b975060608b0135915080821115614ba2578384fd5b614bae8c838d0161472d565b965060808b0135915080821115614bc3578384fd5b614bcf8c838d0161472d565b955060a08b0135915080821115614be4578384fd5b614bf08c838d0161472d565b945060c08b0135915080821115614c05578384fd5b614c118c838d016146c7565b935060e08b0135915080821115614c26578283fd5b50614c338b828c0161472d565b9150509295985092959890939650565b600060208284031215614c54578081fd5b81356147a681614f60565b600060208284031215614c70578081fd5b81516147a681614f60565b600060208284031215614c8c578081fd5b5035919050565b600060208284031215614ca4578081fd5b5051919050565b60008060408385031215614cbd578182fd5b8235915060208301356147f681614f4b565b60008060408385031215614ce1578182fd5b50508035926020909101359150565b600080600060608486031215614d04578081fd5b8335925060208401359150604084013561484081614f4b565b600080600080600080600080610100898b031215614d39578182fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6020808252825182820181905260009190848201906040850190845b81811015614db25783516001600160a01b031683529284019291840191600101614d8d565b50909695505050505050565b60208082526010908201526f2ab734b3349d102327a92124a22222a760811b604082015260600190565b6020808252601290820152712ab734b334901d1027b7363c9027bbb732b960711b604082015260600190565b602080825260139082015272556e696669203a204f6e6c792041646d696e7360681b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e6a57614e6a614f35565b604052919050565b600067ffffffffffffffff821115614e8c57614e8c614f35565b5060051b60200190565b60008219821115614ea957614ea9614f1f565b500190565b600082614ec957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614ee857614ee8614f1f565b500290565b600082821015614eff57614eff614f1f565b500390565b6000600019821415614f1857614f18614f1f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461344757600080fd5b801515811461344757600080fdfea26469706673582212209ff27d447a2eb43d12587fea238aa281ba0a8ba0f94c538f4acf4d6c5ff84bcd64736f6c634300080400330000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000049b4d34edcc985fea2a8fbcc11ec575283d10d87

Deployed Bytecode

0x6080604052600436106105865760003560e01c806384dc41fd116102d2578063b8f2bbc511610189578063e2d3646e116100de578063f3f71c931161009a578063f5fc7f5811610077578063f5fc7f58146112d1578063f6f114ca146112fe578063f794c3ba1461131e578063f8c7ec991461133e57005b8063f3f71c931461126e578063f58589a214611284578063f58d9749146112b157005b8063e2d3646e146111a1578063e32dedab146111c1578063e3d0dd06146111e1578063e9725c3c14611201578063f2fde38b14611221578063f39d4c791461124157005b8063ca0fc5a211610145578063ce5a7baa11610122578063ce5a7baa146110f7578063d58fc8f214611124578063d60675eb14611151578063d84f44601461117157005b8063ca0fc5a21461109f578063cb99ef11146110cc578063ce53c82b146110e157005b8063b8f2bbc514610fea578063b92b21c11461100a578063ba11b3681461101f578063bb1d141d1461103f578063c53f57ee1461105f578063c93a6c841461107f57005b8063a5deab371161023f578063afe01b48116101fb578063b1bdf0f6116101d8578063b1bdf0f614610f74578063b2d3d16214610f8a578063b355570014610faa578063b6ae0cf014610fca57005b8063afe01b4814610f14578063b02ee53914610f34578063b19805af14610f5457005b8063a5deab3714610e61578063a821b2a614610e81578063a93a897d14610ea1578063aba2f2d414610ec1578063ac800cc414610ed4578063adabc36b14610ef457005b806395ccea671161028e57806395ccea6714610da857806396e6c42d14610dc8578063995d883614610df5578063a0b66a5c14610e08578063a2e656a214610e28578063a50a329014610e4757005b806384dc41fd14610cfc57806385f58d8514610d1257806387cf3ef414610d325780638da5cb5b14610d525780638dd9500214610d725780639066c05514610d9257005b80633fad91e61161043e57806363a846f8116103935780637316a58d1161034f578063759d2a361161032c578063759d2a3614610c645780637db09f7014610c84578063822c00d414610ca457806383a0e4a314610cc457005b80637316a58d14610be6578063741176c514610c1e5780637554f18614610c4e57005b806363a846f814610af0578063641fef4e14610b2057806368b959cc14610b405780636d771c5414610b795780637048027514610ba6578063710e5d2f14610bc657005b80634f78aa82116103fa5780635638d455116103d75780635638d45514610a875780635a6c72d014610aa75780635aa5f36714610abd5780635b00644714610add57005b80634f78aa8214610a0f578063501bd68014610a2f5780635404eb2314610a4f57005b80633fad91e61461093557806341430ac0146109555780634725b9451461098257806348d90798146109af5780634908d8ab146109cf5780634daa9227146109ef57005b80631ed3349c116104f45780632c97d10a116104b0578063332ec25d1161048d578063332ec25d146108a8578063391e4fbc146108c857806339557bc3146108e85780633b7b0b921461091557005b80632c97d10a1461082a57806330a752981461085a57806332b4d4a21461089257005b80631ed3349c1461075e578063231d39b91461077e57806325d448bb146107ae57806326fbca6b146107de5780632925f642146107f45780632a8abb921461080a57005b80630de320c1116105435780630de320c11461066f5780630fa546e21461069c57806312492660146106bc57806313d27193146106e95780631785f53c146107095780631c56e0cb1461072957005b8062eafc051461058f57806301f59d16146105be57806303b94c27146105e257806305eb5c1d146106025780630707a0f01461062f5780630cf6ee841461064f57005b3661058d57005b005b34801561059b57600080fd5b506022546105a99060ff1681565b60405190151581526020015b60405180910390f35b3480156105ca57600080fd5b506105d4600c5481565b6040519081526020016105b5565b3480156105ee57600080fd5b506105d46105fd36600461478a565b61135e565b34801561060e57600080fd5b506105d461061d36600461478a565b60276020526000908152604090205481565b34801561063b57600080fd5b506105d461064a36600461478a565b611548565b34801561065b57600080fd5b506105d461066a36600461478a565b611589565b34801561067b57600080fd5b506105d461068a36600461478a565b601c6020526000908152604090205481565b3480156106a857600080fd5b5061058d6106b7366004614cf0565b6115ca565b3480156106c857600080fd5b506105d46106d736600461478a565b601f6020526000908152604090205481565b3480156106f557600080fd5b5061058d61070436600461478a565b611645565b34801561071557600080fd5b5061058d61072436600461478a565b6116b0565b34801561073557600080fd5b5061074961074436600461478a565b6116fb565b604080519283526020830191909152016105b5565b34801561076a57600080fd5b5061058d610779366004614c43565b611779565b34801561078a57600080fd5b506105a961079936600461478a565b601a6020526000908152604090205460ff1681565b3480156107ba57600080fd5b506105a96107c936600461478a565b60296020526000908152604090205460ff1681565b3480156107ea57600080fd5b506105d460095481565b34801561080057600080fd5b506105d4600f5481565b34801561081657600080fd5b506105a961082536600461478a565b6117d5565b34801561083657600080fd5b506105a961084536600461478a565b602a6020526000908152604090205460ff1681565b34801561086657600080fd5b5060075461087a906001600160a01b031681565b6040516001600160a01b0390911681526020016105b5565b34801561089e57600080fd5b506105d460105481565b3480156108b457600080fd5b506105a96108c33660046149f9565b611827565b3480156108d457600080fd5b506105a96108e33660046149ce565b611920565b3480156108f457600080fd5b506105d461090336600461478a565b60286020526000908152604090205481565b34801561092157600080fd5b5061058d610930366004614961565b611985565b34801561094157600080fd5b5061058d610950366004614c7b565b6119eb565b34801561096157600080fd5b506105d461097036600461478a565b60266020526000908152604090205481565b34801561098e57600080fd5b506105d461099d36600461478a565b600b6020526000908152604090205481565b3480156109bb57600080fd5b5060055461087a906001600160a01b031681565b3480156109db57600080fd5b506105a96109ea36600461478a565b611a39565b3480156109fb57600080fd5b506105a9610a0a3660046148c3565b611bbe565b348015610a1b57600080fd5b506105d4610a2a36600461478a565b611c49565b348015610a3b57600080fd5b5061058d610a4a36600461498e565b611c8a565b348015610a5b57600080fd5b506105d4610a6a3660046147c9565b602e60209081526000928352604080842090915290825290205481565b348015610a9357600080fd5b5061058d610aa236600461478a565b611d08565b348015610ab357600080fd5b506105d4600e5481565b348015610ac957600080fd5b506105a9610ad8366004614d1d565b611d54565b6105a9610aeb3660046149ce565b611dab565b348015610afc57600080fd5b506105a9610b0b36600461478a565b60156020526000908152604090205460ff1681565b348015610b2c57600080fd5b5060065461087a906001600160a01b031681565b348015610b4c57600080fd5b506105a9610b5b36600461478a565b6001600160a01b03166000908152601a602052604090205460ff1690565b348015610b8557600080fd5b506105d4610b9436600461478a565b60166020526000908152604090205481565b348015610bb257600080fd5b5061058d610bc136600461478a565b611f20565b348015610bd257600080fd5b5061058d610be1366004614c7b565b611f6e565b348015610bf257600080fd5b506105d4610c013660046147c9565b602c60209081526000928352604080842090915290825290205481565b348015610c2a57600080fd5b506105a9610c3936600461478a565b60196020526000908152604090205460ff1681565b348015610c5a57600080fd5b506105d460135481565b348015610c7057600080fd5b506105a9610c7f3660046149ce565b611fbc565b348015610c9057600080fd5b5061058d610c9f366004614cab565b61200a565b348015610cb057600080fd5b506105a9610cbf366004614c7b565b61206d565b348015610cd057600080fd5b506105d4610cdf3660046147c9565b602d60209081526000928352604080842090915290825290205481565b348015610d0857600080fd5b506105d460115481565b348015610d1e57600080fd5b5061058d610d2d366004614c7b565b6120ea565b348015610d3e57600080fd5b5060005461087a906001600160a01b031681565b348015610d5e57600080fd5b5060145461087a906001600160a01b031681565b348015610d7e57600080fd5b5060015461087a906001600160a01b031681565b348015610d9e57600080fd5b506105d460235481565b348015610db457600080fd5b5061058d610dc33660046149ce565b612138565b348015610dd457600080fd5b50610de8610de336600461478a565b6121ed565b6040516105b59190614d71565b6105d4610e0336600461478a565b612263565b348015610e1457600080fd5b5061058d610e23366004614961565b6122ff565b348015610e3457600080fd5b506022546105a990610100900460ff1681565b348015610e5357600080fd5b506012546105a99060ff1681565b348015610e6d57600080fd5b5061058d610e7c36600461498e565b61235d565b348015610e8d57600080fd5b5061058d610e9c366004614a40565b612424565b348015610ead57600080fd5b5061058d610ebc3660046149ce565b6125e3565b6105d4610ecf36600461478a565b61265f565b348015610ee057600080fd5b506105a9610eef3660046149ce565b612999565b348015610f0057600080fd5b5061058d610f0f366004614ccf565b6129e7565b348015610f2057600080fd5b506105a9610f2f366004614913565b612a3b565b348015610f4057600080fd5b506105d4610f4f3660046147c9565b612b96565b348015610f6057600080fd5b5061058d610f6f36600461478a565b612cfc565b348015610f8057600080fd5b506105d460215481565b348015610f9657600080fd5b506105d4610fa536600461478a565b612d72565b348015610fb657600080fd5b5061058d610fc5366004614b0c565b612db3565b348015610fd657600080fd5b5061058d610fe536600461478a565b612f4f565b348015610ff657600080fd5b5061058d611005366004614961565b612fba565b34801561101657600080fd5b506105d461302e565b34801561102b57600080fd5b5061058d61103a36600461478a565b613043565b34801561104b57600080fd5b5061058d61105a366004614961565b61308f565b34801561106b57600080fd5b506105d461107a366004614801565b613103565b34801561108b57600080fd5b5061058d61109a366004614c7b565b613250565b3480156110ab57600080fd5b506105d46110ba36600461478a565b602b6020526000908152604090205481565b3480156110d857600080fd5b5061058d61329e565b3480156110ed57600080fd5b506105d460045481565b34801561110357600080fd5b506105d461111236600461478a565b601e6020526000908152604090205481565b34801561113057600080fd5b506105d461113f36600461478a565b60246020526000908152604090205481565b34801561115d57600080fd5b5061058d61116c366004614961565b61344b565b34801561117d57600080fd5b506105a961118c36600461478a565b601b6020526000908152604090205460ff1681565b3480156111ad57600080fd5b5061058d6111bc36600461478a565b6134bf565b3480156111cd57600080fd5b5060035461087a906001600160a01b031681565b3480156111ed57600080fd5b5061058d6111fc366004614961565b613535565b34801561120d57600080fd5b5060205461087a906001600160a01b031681565b34801561122d57600080fd5b5061058d61123c36600461478a565b6135a9565b34801561124d57600080fd5b506105d461125c36600461478a565b60256020526000908152604090205481565b34801561127a57600080fd5b506105d4600d5481565b34801561129057600080fd5b506105d461129f36600461478a565b60176020526000908152604090205481565b3480156112bd57600080fd5b50600a5461087a906001600160a01b031681565b3480156112dd57600080fd5b506105d46112ec36600461478a565b601d6020526000908152604090205481565b34801561130a57600080fd5b5061058d611319366004614961565b6135f5565b34801561132a57600080fd5b506105d461133936600461484b565b613669565b34801561134a57600080fd5b5060025461087a906001600160a01b031681565b60008061136a83613784565b90508015611542576020546000906001600160a01b03161580159061139d57506020546001600160a01b03858116911614155b1561145157604051635969e8b160e11b81526001600160a01b038516600482015261271090309063b2d3d1629060240160206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190614c93565b6114279084614ece565b6114319190614eae565b9050806009546114419190614e96565b60095561144e8183614eed565b91505b6000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148c57600080fd5b505afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190614c93565b6114d684670de0b6b3a7640000614ece565b6114e09190614eae565b90506114ed858483613b36565b60208054604080518681526001600160a01b039283169381019390935282018490528616907fb16df239702313d1569dacac57261f5e749e8c8c5ec346f9816b9cdb2e157bef9060600160405180910390a250505b92915050565b6001600160a01b03811660009081526017602052604081205461156d57601354611542565b506001600160a01b031660009081526017602052604090205490565b6001600160a01b0381166000908152601660205260408120546115ae57600e54611542565b506001600160a01b031660009081526016602052604090205490565b6014546001600160a01b03163314806115f757503360009081526015602052604090205460ff1615156001145b61161c5760405162461bcd60e51b815260040161161390614e14565b60405180910390fd5b6001600160a01b03166000908152601e6020908152604080832094909455601f90529190912055565b6014546001600160a01b031633148061167257503360009081526015602052604090205460ff1615156001145b61168e5760405162461bcd60e51b815260040161161390614e14565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633146116da5760405162461bcd60e51b815260040161161390614de8565b6001600160a01b03166000908152601560205260409020805460ff19169055565b6010546011546001600160a01b0383166000908152601e60205260409020541561173b576001600160a01b0383166000908152601e602052604090205491505b6001600160a01b0383166000908152601f60205260409020541561177457506001600160a01b0382166000908152601f60205260409020545b915091565b6014546001600160a01b03163314806117a657503360009081526015602052604090205460ff1615156001145b6117c25760405162461bcd60e51b815260040161161390614e14565b6012805460ff1916911515919091179055565b6014546000906001600160a01b031633146118025760405162461bcd60e51b815260040161161390614de8565b50602080546001600160a01b0383166001600160a01b03199091161790556001919050565b6014546000906001600160a01b031633146118545760405162461bcd60e51b815260040161161390614de8565b6001600160a01b038516600090815260166020526040902054841461188f576001600160a01b03851660009081526016602052604090208490555b6001600160a01b03851660009081526019602052604090205460ff161515831515146118da576001600160a01b0385166000908152601960205260409020805460ff19168415151790555b6001600160a01b0385166000908152601c60205260409020548214611915576001600160a01b0385166000908152601c602052604090208290555b506001949350505050565b6014546000906001600160a01b0316331461194d5760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b0316331461196457600080fd5b506001600160a01b0391909116600090815260266020526040902055600190565b6014546001600160a01b031633146119af5760405162461bcd60e51b815260040161161390614de8565b600580546001600160a01b039093166001600160a01b031990931692909217909155602280549115156101000261ff0019909216919091179055565b6014546001600160a01b0316331480611a1857503360009081526015602052604090205460ff1615156001145b611a345760405162461bcd60e51b815260040161161390614e14565b600f55565b6001600160a01b03811660009081526018602052604081205460ff1615611a6257506000919050565b6001600160a01b03821660009081526019602052604090205460ff16151560011415611a9057506001919050565b60015460408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611ad757600080fd5b505afa158015611aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0f91906147ad565b6001600160a01b03161480611ba957506001546040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611b6657600080fd5b505afa158015611b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9e91906147ad565b6001600160a01b0316145b15611bb657506001919050565b506000919050565b6014546000906001600160a01b03163314611beb5760405162461bcd60e51b815260040161161390614de8565b506001600160a01b039485166000818152602c602090815260408083209790981680835296815287822095909555818152602d85528681208682528552868120939093558252602e8352848220938252929091529190912055600190565b6001600160a01b0381166000908152601c6020526040812054611c6e57600d54611542565b506001600160a01b03166000908152601c602052604090205490565b6014546001600160a01b0316331480611cb757503360009081526015602052604090205460ff1615156001145b611cd35760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03929092166000908152601860209081526040808320805460ff191694151594909417909355601c90522055565b6014546001600160a01b03163314611d325760405162461bcd60e51b815260040161161390614de8565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6014546000906001600160a01b03163314611d815760405162461bcd60e51b815260040161161390614de8565b50600c97909755600d95909555600e93909355600f91909155601055601155602155602355600190565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526000916001600160a01b0316906323b872dd90606401602060405180830381600087803b158015611dfe57600080fd5b505af1158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190614c5f565b506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaa9190614c93565b611ebc84670de0b6b3a7640000614ece565b611ec69190614eae565b9050611ed3848483613b36565b836001600160a01b03167fc806057c97446168e9539522779562d04cd483f86d8e72cf9885ce9cabbc627584604051611f0e91815260200190565b60405180910390a25060019392505050565b6014546001600160a01b03163314611f4a5760405162461bcd60e51b815260040161161390614de8565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6014546001600160a01b0316331480611f9b57503360009081526015602052604090205460ff1615156001145b611fb75760405162461bcd60e51b815260040161161390614e14565b600c55565b6014546000906001600160a01b03163314611fe95760405162461bcd60e51b815260040161161390614de8565b506001600160a01b0391909116600090815260276020526040902055600190565b6014546001600160a01b031633148061203757503360009081526015602052604090205460ff1615156001145b6120535760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03166000908152600b6020526040902055565b6007546000906001600160a01b031633146120ca5760405162461bcd60e51b815260206004820152601e60248201527f75706461746546656574617465203a204e4f545f415554484f52495a454400006044820152606401611613565b81156120e257816021546120de9190614e96565b6021555b506001919050565b6014546001600160a01b031633148061211757503360009081526015602052604090205460ff1615156001145b6121335760405162461bcd60e51b815260040161161390614e14565b600d55565b6014546001600160a01b031633146121625760405162461bcd60e51b815260040161161390614de8565b60145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b1580156121b057600080fd5b505af11580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190614c5f565b505050565b6001600160a01b0381166000908152602f602090815260409182902080548351818402810184019094528084526060939283018282801561225757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612239575b50505050509050919050565b6000806122703334613bdb565b60075460405163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905292935091169063a9059cbb90604401602060405180830381600087803b1580156122c057600080fd5b505af11580156122d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f89190614c5f565b5092915050565b6014546001600160a01b031633146123295760405162461bcd60e51b815260040161161390614de8565b600680546001600160a01b0319166001600160a01b0393909316929092179091556022805460ff1916911515919091179055565b6014546001600160a01b031633148061238a57503360009081526015602052604090205460ff1615156001145b6123a65760405162461bcd60e51b815260040161161390614e14565b6000546001600160a01b03163314806123d357503360009081526015602052604090205460ff1615156001145b6123ef5760405162461bcd60e51b815260040161161390614dbe565b6001600160a01b03929092166000908152601960209081526040808320805460ff191694151594909417909355601c90522055565b6014546001600160a01b0316331461244e5760405162461bcd60e51b815260040161161390614de8565b60005b85518110156125db57306001600160a01b0316634daa922787838151811061248957634e487b7160e01b600052603260045260246000fd5b60200260200101518784815181106124b157634e487b7160e01b600052603260045260246000fd5b60200260200101518785815181106124d957634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061250157634e487b7160e01b600052603260045260246000fd5b602002602001015187878151811061252957634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a401602060405180830381600087803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c89190614c5f565b50806125d381614f04565b915050612451565b505050505050565b6014546001600160a01b031633148061261057503360009081526015602052604090205460ff1615156001145b61262c5760405162461bcd60e51b815260040161161390614e14565b600c54811161263b578061263f565b600c545b6001600160a01b0390921660009081526016602052604090209190915550565b60006001600160a01b03821633146126b15760405162461bcd60e51b8152602060048201526015602482015274556e6966693a20496e76616c696420706172616d7360581b6044820152606401611613565b604051634908d8ab60e01b81523360048201523090634908d8ab9060240160206040518083038186803b1580156126e757600080fd5b505afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614c5f565b61272b57506000919050565b336000908152602660209081526040808320429055602990915290205460ff16151560011480612762575060125460ff1615156001145b156127b957600061277161302e565b336000908152602b602052604090205490915061278f908290614e96565b336000908152602b60205260409020556023546127ad908290614e96565b60235550600092915050565b60006127cc336127c761302e565b613bdb565b6020549091506000906001600160a01b0316158015906127f757506020546001600160a01b03163314155b156128a257604051635969e8b160e11b815233600482015261271090309063b2d3d1629060240160206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e9190614c93565b6128789084614ece565b6128829190614eae565b9050806009546128929190614e96565b60095561289f8183614eed565b91505b6000336001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128dd57600080fd5b505afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129159190614c93565b61292784670de0b6b3a7640000614ece565b6129319190614eae565b905061293e858483613b36565b60208054604080518681526001600160a01b039092169282019290925290810183905233907fb16df239702313d1569dacac57261f5e749e8c8c5ec346f9816b9cdb2e157bef9060600160405180910390a250909392505050565b6014546000906001600160a01b031633146129c65760405162461bcd60e51b815260040161161390614de8565b506001600160a01b0391909116600090815260256020526040902055600190565b6014546001600160a01b0316331480612a1457503360009081526015602052604090205460ff1615156001145b612a305760405162461bcd60e51b815260040161161390614e14565b601091909155601155565b6014546000906001600160a01b03163314612a685760405162461bcd60e51b815260040161161390614de8565b306001600160a01b0316638dd950026040518163ffffffff1660e01b815260040160206040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad991906147ad565b6001600160a01b03168260018451612af19190614eed565b81518110612b0f57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614612b635760405162461bcd60e51b8152602060048201526013602482015272103932b8bab4b932903a37903132902ba1272160691b6044820152606401611613565b6001600160a01b0383166000908152602f602090815260409091208351612b8c928501906145d5565b5060019392505050565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908316906370a082319060240160206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190614c93565b612c1f57506000611542565b6040516370a0823160e01b81526001600160a01b038481166004830152670de0b6b3a764000091908416906370a082319060240160206040518083038186803b158015612c6b57600080fd5b505afa158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca39190614c93565b6001600160a01b038085166000818152602c60209081526040808320948a16835293815283822054928252602490529190912054612ce19190614eed565b612ceb9190614ece565b612cf59190614eae565b9050611542565b6014546001600160a01b03163314612d265760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b03163314612d505760405162461bcd60e51b815260040161161390614dbe565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600b6020526040812054612d9757600f54611542565b506001600160a01b03166000908152600b602052604090205490565b6014546001600160a01b03163314612ddd5760405162461bcd60e51b815260040161161390614de8565b60005b8851811015612f4457612f31898281518110612e0c57634e487b7160e01b600052603260045260246000fd5b6020026020010151898381518110612e3457634e487b7160e01b600052603260045260246000fd5b6020026020010151898481518110612e5c57634e487b7160e01b600052603260045260246000fd5b6020026020010151898581518110612e8457634e487b7160e01b600052603260045260246000fd5b6020026020010151898681518110612eac57634e487b7160e01b600052603260045260246000fd5b6020026020010151898781518110612ed457634e487b7160e01b600052603260045260246000fd5b6020026020010151898881518110612efc57634e487b7160e01b600052603260045260246000fd5b6020026020010151898981518110612f2457634e487b7160e01b600052603260045260246000fd5b6020026020010151613f61565b5080612f3c81614f04565b915050612de0565b505050505050505050565b6014546001600160a01b0316331480612f7c57503360009081526015602052604090205460ff1615156001145b612f985760405162461bcd60e51b815260040161161390614e14565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480612fe757503360009081526015602052604090205460ff1615156001145b6130035760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b60006023544761303e9190614eed565b905090565b6014546001600160a01b0316331461306d5760405162461bcd60e51b815260040161161390614de8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b03163314806130bc57503360009081526015602052604090205460ff1615156001145b6130d85760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000336001600160a01b0385161461312d5760405162461bcd60e51b815260040161161390614dbe565b6040516303b94c2760e01b81526001600160a01b038316600482015230906303b94c2790602401602060405180830381600087803b15801561316e57600080fd5b505af1158015613182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a69190614c93565b506040516370a0823160e01b81526001600160a01b038581166004830152600091908416906370a082319060240160206040518083038186803b1580156131ec57600080fd5b505afa158015613200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132249190614c93565b9050600061323386858761411d565b9050613246600080600185868b8a61423c565b5095945050505050565b6014546001600160a01b031633148061327d57503360009081526015602052604090205460ff1615156001145b6132995760405162461bcd60e51b815260040161161390614e14565b600e55565b6009541561344957602254610100900460ff161561343f57600760009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb306001600160a01b031663f58d97496040518163ffffffff1660e01b815260040160206040518083038186803b15801561331357600080fd5b505afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b91906147ad565b6009546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561339457600080fd5b505af11580156133a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cc9190614c5f565b50600554600954604051633cbab62360e01b81526001600160a01b0390921691633cbab623916134029160040190815260200190565b600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b50506000600955506134499050565b61344761433a565b505b565b6014546001600160a01b031633148061347857503360009081526015602052604090205460ff1615156001145b6134945760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6014546001600160a01b031633146134e95760405162461bcd60e51b815260040161161390614de8565b6014546001600160a01b031633146135135760405162461bcd60e51b815260040161161390614dbe565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061356257503360009081526015602052604090205460ff1615156001145b61357e5760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6014546001600160a01b031633146135d35760405162461bcd60e51b815260040161161390614de8565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061362257503360009081526015602052604090205460ff1615156001145b61363e5760405162461bcd60e51b815260040161161390614e14565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6040516303b94c2760e01b815233600482015260009030906303b94c2790602401602060405180830381600087803b1580156136a457600080fd5b505af11580156136b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136dc9190614c93565b506040516370a0823160e01b81526001600160a01b038816600482015260009033906370a082319060240160206040518083038186803b15801561371f57600080fd5b505afa158015613733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137579190614c93565b9050600061376689338b61411d565b9050613777868686858b8e3361423c565b5098975050505050505050565b6001600160a01b0381166000908152602b60205260408120546137a957506000919050565b604051634908d8ab60e01b81526001600160a01b03831660048201523090634908d8ab9060240160206040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138209190614c5f565b61382c57506000919050565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561387057600080fd5b505afa158015613884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a89190614c93565b6040516327bc554160e11b81526001600160a01b0385166004820152909150600090612710903090634f78aa829060240160206040518083038186803b1580156138f157600080fd5b505afa158015613905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139299190614c93565b6001600160a01b0386166000908152602b602052604090205461394c9190614ece565b6139569190614eae565b6007546040516340c10f1960e01b8152306004820152602481018390529192506001600160a01b0316906340c10f199083906044016020604051808303818588803b1580156139a457600080fd5b505af11580156139b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139dd9190614c5f565b506001600160a01b0384166000908152602b6020526040902054811015613a68576001600160a01b0384166000908152602b6020526040812054613a22908390614eed565b90508015613a66576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613a64573d6000803e3d6000fd5b505b505b6001600160a01b0384166000908152602b6020526040902054602354613a8e9190614eed565b6023556001600160a01b038481166000908152602b60205260408082209190915560075490516370a0823160e01b8152306004820152849291909116906370a082319060240160206040518083038186803b158015613aec57600080fd5b505afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190614c93565b613b2e9190614eed565b949350505050565b6001600160a01b038316600090815260246020526040902054613b5a908290614e96565b6001600160a01b038416600090815260246020908152604080832093909355602590522054613b8a908390614e96565b6001600160a01b038416600090815260256020908152604080832093909355602790522054613bba908390614e96565b6001600160a01b039093166000908152602760205260409020929092555050565b6000808211613c2c5760405162461bcd60e51b815260206004820152601b60248201527f547279696e6720746f206d696e74207769746820302076616c756500000000006044820152606401611613565b604051634908d8ab60e01b81526001600160a01b03841660048201523090634908d8ab9060240160206040518083038186803b158015613c6b57600080fd5b505afa158015613c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca39190614c5f565b613cef5760405162461bcd60e51b815260206004820152601760248201527f4572726f723a204f4e4c592077686974656c69737465640000000000000000006044820152606401611613565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015613d3357600080fd5b505afa158015613d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6b9190614c93565b6040516327bc554160e11b81526001600160a01b0386166004820152909150612710903090634f78aa829060240160206040518083038186803b158015613db157600080fd5b505afa158015613dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de99190614c93565b613df39085614ece565b613dfd9190614eae565b6007546040516340c10f1960e01b8152306004820152602481018390529194506001600160a01b0316906340c10f199085906044016020604051808303818588803b158015613e4b57600080fd5b505af1158015613e5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e849190614c5f565b506000613e8f61302e565b90508015613ed3576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613ed1573d6000803e3d6000fd5b505b6007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a082319060240160206040518083038186803b158015613f1657600080fd5b505afa158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190614c93565b613f589190614eed565b95945050505050565b6001600160a01b0388166000908152602460205260408120548814613f9c576001600160a01b03891660009081526024602052604090208890555b6001600160a01b0389166000908152602560205260409020548714613fd7576001600160a01b03891660009081526025602052604090208790555b6001600160a01b0389166000908152602660205260409020548614614012576001600160a01b03891660009081526026602052604090208690555b6001600160a01b038916600090815260276020526040902054851461404d576001600160a01b03891660009081526027602052604090208590555b6001600160a01b0389166000908152602860205260409020548414614088576001600160a01b03891660009081526028602052604090208490555b6001600160a01b03891660009081526029602052604090205460ff161515831515146140d3576001600160a01b0389166000908152602960205260409020805460ff19168415151790555b6001600160a01b0389166000908152602b6020526040902054821461410e576001600160a01b0389166000908152602b602052604090208290555b50600198975050505050505050565b60405163b02ee53960e01b81526001600160a01b038085166004830152831660248201526000908190309063b02ee5399060440160206040518083038186803b15801561416957600080fd5b505afa15801561417d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a19190614c93565b905080156142315760075460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156141f757600080fd5b505af115801561420b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061422f9190614c5f565b505b613b2e84868361445c565b6000306001600160a01b031663cb99ef116040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505060225460ff1615915061432c9050576006546040516305a1a43960e11b815289151560048201528815156024820152871515604482015260648101879052608481018690526001600160a01b0385811660a483015284811660c483015290911690630b4348729060e401600060405180830381600087803b15801561431357600080fd5b505af1158015614327573d6000803e3d6000fd5b505050505b506001979650505050505050565b6020546000906001600160a01b0316156144565760208054604080516318160ddd60e01b815290516000936001600160a01b03909316926318160ddd9260048082019391829003018186803b15801561439257600080fd5b505afa1580156143a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ca9190614c93565b6009546143df90670de0b6b3a7640000614ece565b6143e99190614eae565b602054600954919250614408916001600160a01b039091169083613b36565b60006009819055602080546040519283526001600160a01b0316917fc806057c97446168e9539522779562d04cd483f86d8e72cf9885ce9cabbc6275910160405180910390a2600191505090565b50600090565b801561451e576001600160a01b038316600090815260276020526040902054614486908290614eed565b6001600160a01b03808516600090815260276020908152604080832094909455602e815283822092861682529190915220546144c3908290614e96565b6001600160a01b038085166000818152602e602090815260408083209488168352938152838220949094559081526028909252902054614504908290614e96565b6001600160a01b0384166000908152602860205260409020555b6001600160a01b03831660009081526024602052604090205415801561456757506001600160a01b038084166000908152602c6020908152604080832093861683529290522054155b15614589576001600160a01b0383166000908152602460205260409020600190555b506001600160a01b03918216600081815260246020908152604080832054602c83528184209590961680845294825280832095909555918152602d825283812092815291905220429055565b82805482825590600052602060002090810192821561462a579160200282015b8281111561462a57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906145f5565b5061463692915061463a565b5090565b5b80821115614636576000815560010161463b565b600082601f83011261465f578081fd5b8135602061467461466f83614e72565b614e41565b80838252828201915082860187848660051b8901011115614693578586fd5b855b858110156146ba5781356146a881614f4b565b84529284019290840190600101614695565b5090979650505050505050565b600082601f8301126146d7578081fd5b813560206146e761466f83614e72565b80838252828201915082860187848660051b8901011115614706578586fd5b855b858110156146ba57813561471b81614f60565b84529284019290840190600101614708565b600082601f83011261473d578081fd5b8135602061474d61466f83614e72565b80838252828201915082860187848660051b890101111561476c578586fd5b855b858110156146ba5781358452928401929084019060010161476e565b60006020828403121561479b578081fd5b81356147a681614f4b565b9392505050565b6000602082840312156147be578081fd5b81516147a681614f4b565b600080604083850312156147db578081fd5b82356147e681614f4b565b915060208301356147f681614f4b565b809150509250929050565b600080600060608486031215614815578081fd5b833561482081614f4b565b9250602084013561483081614f4b565b9150604084013561484081614f4b565b809150509250925092565b60008060008060008060c08789031215614863578182fd5b863561486e81614f4b565b9550602087013561487e81614f4b565b945060408701359350606087013561489581614f60565b925060808701356148a581614f60565b915060a08701356148b581614f60565b809150509295509295509295565b600080600080600060a086880312156148da578081fd5b85356148e581614f4b565b945060208601356148f581614f4b565b94979496505050506040830135926060810135926080909101359150565b60008060408385031215614925578182fd5b823561493081614f4b565b9150602083013567ffffffffffffffff81111561494b578182fd5b6149578582860161464f565b9150509250929050565b60008060408385031215614973578182fd5b823561497e81614f4b565b915060208301356147f681614f60565b6000806000606084860312156149a2578081fd5b83356149ad81614f4b565b925060208401356149bd81614f60565b929592945050506040919091013590565b600080604083850312156149e0578182fd5b82356149eb81614f4b565b946020939093013593505050565b60008060008060808587031215614a0e578182fd5b8435614a1981614f4b565b9350602085013592506040850135614a3081614f60565b9396929550929360600135925050565b600080600080600060a08688031215614a57578283fd5b853567ffffffffffffffff80821115614a6e578485fd5b614a7a89838a0161464f565b96506020880135915080821115614a8f578485fd5b614a9b89838a0161464f565b95506040880135915080821115614ab0578485fd5b614abc89838a0161472d565b94506060880135915080821115614ad1578283fd5b614add89838a0161472d565b93506080880135915080821115614af2578283fd5b50614aff8882890161472d565b9150509295509295909350565b600080600080600080600080610100898b031215614b28578586fd5b883567ffffffffffffffff80821115614b3f578788fd5b614b4b8c838d0161464f565b995060208b0135915080821115614b60578788fd5b614b6c8c838d0161472d565b985060408b0135915080821115614b81578788fd5b614b8d8c838d0161472d565b975060608b0135915080821115614ba2578384fd5b614bae8c838d0161472d565b965060808b0135915080821115614bc3578384fd5b614bcf8c838d0161472d565b955060a08b0135915080821115614be4578384fd5b614bf08c838d0161472d565b945060c08b0135915080821115614c05578384fd5b614c118c838d016146c7565b935060e08b0135915080821115614c26578283fd5b50614c338b828c0161472d565b9150509295985092959890939650565b600060208284031215614c54578081fd5b81356147a681614f60565b600060208284031215614c70578081fd5b81516147a681614f60565b600060208284031215614c8c578081fd5b5035919050565b600060208284031215614ca4578081fd5b5051919050565b60008060408385031215614cbd578182fd5b8235915060208301356147f681614f4b565b60008060408385031215614ce1578182fd5b50508035926020909101359150565b600080600060608486031215614d04578081fd5b8335925060208401359150604084013561484081614f4b565b600080600080600080600080610100898b031215614d39578182fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6020808252825182820181905260009190848201906040850190845b81811015614db25783516001600160a01b031683529284019291840191600101614d8d565b50909695505050505050565b60208082526010908201526f2ab734b3349d102327a92124a22222a760811b604082015260600190565b6020808252601290820152712ab734b334901d1027b7363c9027bbb732b960711b604082015260600190565b602080825260139082015272556e696669203a204f6e6c792041646d696e7360681b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e6a57614e6a614f35565b604052919050565b600067ffffffffffffffff821115614e8c57614e8c614f35565b5060051b60200190565b60008219821115614ea957614ea9614f1f565b500190565b600082614ec957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614ee857614ee8614f1f565b500290565b600082821015614eff57614eff614f1f565b500390565b6000600019821415614f1857614f18614f1f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461344757600080fd5b801515811461344757600080fdfea26469706673582212209ff27d447a2eb43d12587fea238aa281ba0a8ba0f94c538f4acf4d6c5ff84bcd64736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000049b4d34edcc985fea2a8fbcc11ec575283d10d87

-----Decoded View---------------
Arg [0] : _wbnb (address): 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270
Arg [1] : _up_address (address): 0x49B4D34eDCC985fEa2A8fBCC11Ec575283D10D87

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : 00000000000000000000000049b4d34edcc985fea2a8fbcc11ec575283d10d87


Deployed Bytecode Sourcemap

1859:23296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3410:36;;;;;;;;;;-1:-1:-1;3410:36:0;;;;;;;;;;;15942:14:1;;15935:22;15917:41;;15905:2;15890:18;3410:36:0;;;;;;;;2330:25;;;;;;;;;;;;;;;;;;;20297::1;;;20285:2;20270:18;2330:25:0;20252:76:1;12230:918:0;;;;;;;;;;-1:-1:-1;12230:918:0;;;;;:::i;:::-;;:::i;3699:46::-;;;;;;;;;;-1:-1:-1;3699:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;7984:156;;;;;;;;;;-1:-1:-1;7984:156:0;;;;;:::i;:::-;;:::i;7668:146::-;;;;;;;;;;-1:-1:-1;7668:146:0;;;;;:::i;:::-;;:::i;3112:42::-;;;;;;;;;;-1:-1:-1;3112:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;9370:200;;;;;;;;;;-1:-1:-1;9370:200:0;;;;;:::i;:::-;;:::i;3260:50::-;;;;;;;;;;-1:-1:-1;3260:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;7224:107;;;;;;;;;;-1:-1:-1;7224:107:0;;;;;:::i;:::-;;:::i;8248:96::-;;;;;;;;;;-1:-1:-1;8248:96:0;;;;;:::i;:::-;;:::i;8473:419::-;;;;;;;;;;-1:-1:-1;8473:419:0;;;;;:::i;:::-;;:::i;:::-;;;;20857:25:1;;;20913:2;20898:18;;20891:34;;;;20830:18;8473:419:0;20812:119:1;6556::0;;;;;;;;;;-1:-1:-1;6556:119:0;;;;;:::i;:::-;;:::i;3015:41::-;;;;;;;;;;-1:-1:-1;3015:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3824:44;;;;;;;;;;-1:-1:-1;3824:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2193:42;;;;;;;;;;;;;;;;2480:31;;;;;;;;;;;;;;;;16004:152;;;;;;;;;;-1:-1:-1;16004:152:0;;;;;:::i;:::-;;:::i;3875:47::-;;;;;;;;;;-1:-1:-1;3875:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2131:18;;;;;;;;;;-1:-1:-1;2131:18:0;;;;-1:-1:-1;;;;;2131:18:0;;;;;;-1:-1:-1;;;;;13575:32:1;;;13557:51;;13545:2;13530:18;2131::0;13512:102:1;2542:39:0;;;;;;;;;;;;;;;;17902:553;;;;;;;;;;-1:-1:-1;17902:553:0;;;;;:::i;:::-;;:::i;9865:194::-;;;;;;;;;;-1:-1:-1;9865:194:0;;;;;:::i;:::-;;:::i;3772:45::-;;;;;;;;;;-1:-1:-1;3772:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;21283:164;;;;;;;;;;-1:-1:-1;21283:164:0;;;;;:::i;:::-;;:::i;6995:93::-;;;;;;;;;;-1:-1:-1;6995:93:0;;;;;:::i;:::-;;:::i;3648:44::-;;;;;;;;;;-1:-1:-1;3648:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;2281:42;;;;;;;;;;-1:-1:-1;2281:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;2063:26;;;;;;;;;;-1:-1:-1;2063:26:0;;;;-1:-1:-1;;;;;2063:26:0;;;24528:511;;;;;;;;;;-1:-1:-1;24528:511:0;;;;;:::i;:::-;;:::i;19672:375::-;;;;;;;;;;-1:-1:-1;19672:375:0;;;;;:::i;:::-;;:::i;9211:151::-;;;;;;;;;;-1:-1:-1;9211:151:0;;;;;:::i;:::-;;:::i;5617:198::-;;;;;;;;;;-1:-1:-1;5617:198:0;;;;;:::i;:::-;;:::i;4142:69::-;;;;;;;;;;-1:-1:-1;4142:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7458:80;;;;;;;;;;-1:-1:-1;7458:80:0;;;;;:::i;:::-;;:::i;2432:26::-;;;;;;;;;;;;;;;;18463:749;;;;;;;;;;-1:-1:-1;18463:749:0;;;;;:::i;:::-;;:::i;15274:394::-;;;;;;:::i;:::-;;:::i;2761:37::-;;;;;;;;;;-1:-1:-1;2761:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2096:28;;;;;;;;;;-1:-1:-1;2096:28:0;;;;-1:-1:-1;;;;;2096:28:0;;;8352:113;;;;;;;;;;-1:-1:-1;8352:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;8440:15:0;8416:4;8440:15;;;:9;:15;;;;;;;;;8352:113;2805:40;;;;;;;;;;-1:-1:-1;2805:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;8148:92;;;;;;;;;;-1:-1:-1;8148:92:0;;;;;:::i;:::-;;:::i;6807:81::-;;;;;;;;;;-1:-1:-1;6807:81:0;;;;;:::i;:::-;;:::i;3995:64::-;;;;;;;;;;-1:-1:-1;3995:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2956:52;;;;;;;;;;-1:-1:-1;2956:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2691:34;;;;;;;;;;;;;;;;10069:158;;;;;;;;;;-1:-1:-1;10069:158:0;;;;;:::i;:::-;;:::i;7096:118::-;;;;;;;;;;-1:-1:-1;7096:118:0;;;;;:::i;:::-;;:::i;23856:273::-;;;;;;;;;;-1:-1:-1;23856:273:0;;;;;:::i;:::-;;:::i;4066:69::-;;;;;;;;;;-1:-1:-1;4066:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2595:42;;;;;;;;;;;;;;;;9100:103;;;;;;;;;;-1:-1:-1;9100:103:0;;;;;:::i;:::-;;:::i;1893:24::-;;;;;;;;;;-1:-1:-1;1893:24:0;;;;-1:-1:-1;;;;;1893:24:0;;;2732:20;;;;;;;;;;-1:-1:-1;2732:20:0;;;;-1:-1:-1;;;;;2732:20:0;;;1924:19;;;;;;;;;;-1:-1:-1;1924:19:0;;;;-1:-1:-1;;;;;1924:19:0;;;3491:43;;;;;;;;;;;;;;;;21766:142;;;;;;;;;;-1:-1:-1;21766:142:0;;;;;:::i;:::-;;:::i;24137:130::-;;;;;;;;;;-1:-1:-1;24137:130:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11869:207::-;;;;;;:::i;:::-;;:::i;21455:190::-;;;;;;;;;;-1:-1:-1;21455:190:0;;;;;:::i;:::-;;:::i;3453:31::-;;;;;;;;;;-1:-1:-1;3453:31:0;;;;;;;;;;;2644:40;;;;;;;;;;-1:-1:-1;2644:40:0;;;;;;;;5823:303;;;;;;;;;;-1:-1:-1;5823:303:0;;;;;:::i;:::-;;:::i;19224:440::-;;;;;;;;;;-1:-1:-1;19224:440:0;;;;;:::i;:::-;;:::i;5479:130::-;;;;;;;;;;-1:-1:-1;5479:130:0;;;;;:::i;:::-;;:::i;13156:1550::-;;;;;;:::i;:::-;;:::i;9705:152::-;;;;;;;;;;-1:-1:-1;9705:152:0;;;;;:::i;:::-;;:::i;8900:192::-;;;;;;;;;;-1:-1:-1;8900:192:0;;;;;:::i;:::-;;:::i;24275:245::-;;;;;;;;;;-1:-1:-1;24275:245:0;;;;;:::i;:::-;;:::i;20055:384::-;;;;;;;;;;-1:-1:-1;20055:384:0;;;;;:::i;:::-;;:::i;5095:161::-;;;;;;;;;;-1:-1:-1;5095:161:0;;;;;:::i;:::-;;:::i;3369:34::-;;;;;;;;;;;;;;;;7822:154;;;;;;;;;;-1:-1:-1;7822:154:0;;;;;:::i;:::-;;:::i;16164:581::-;;;;;;;;;;-1:-1:-1;16164:581:0;;;;;:::i;:::-;;:::i;7341:109::-;;;;;;;;;;-1:-1:-1;7341:109:0;;;;;:::i;:::-;;:::i;6270:140::-;;;;;;;;;;-1:-1:-1;6270:140:0;;;;;:::i;:::-;;:::i;12084:138::-;;;;;;;;;;;;;:::i;7546:114::-;;;;;;;;;;-1:-1:-1;7546:114:0;;;;;:::i;:::-;;:::i;9578:119::-;;;;;;;;;;-1:-1:-1;9578:119:0;;;;;:::i;:::-;;:::i;22388:448::-;;;;;;;;;;-1:-1:-1;22388:448:0;;;;;:::i;:::-;;:::i;6896:89::-;;;;;;;;;;-1:-1:-1;6896:89:0;;;;;:::i;:::-;;:::i;3929:57::-;;;;;;;;;;-1:-1:-1;3929:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;20842:433;;;;;;;;;;;;;:::i;2017:39::-;;;;;;;;;;;;;;;;3205:48;;;;;;;;;;-1:-1:-1;3205:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;3542:49;;;;;;;;;;-1:-1:-1;3542:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;6422:126;;;;;;;;;;-1:-1:-1;6422:126:0;;;;;:::i;:::-;;:::i;3063:42::-;;;;;;;;;;-1:-1:-1;3063:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5268:201;;;;;;;;;;-1:-1:-1;5268:201:0;;;;;:::i;:::-;;:::i;1984:26::-;;;;;;;;;;-1:-1:-1;1984:26:0;;;;-1:-1:-1;;;;;1984:26:0;;;6681:118;;;;;;;;;;-1:-1:-1;6681:118:0;;;;;:::i;:::-;;:::i;3325:37::-;;;;;;;;;;-1:-1:-1;3325:37:0;;;;-1:-1:-1;;;;;3325:37:0;;;21655:103;;;;;;;;;;-1:-1:-1;21655:103:0;;;;;:::i;:::-;;:::i;3598:43::-;;;;;;;;;;-1:-1:-1;3598:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;2369:34;;;;;;;;;;;;;;;;2852:42;;;;;;;;;;-1:-1:-1;2852:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;2244:30;;;;;;;;;;-1:-1:-1;2244:30:0;;;;-1:-1:-1;;;;;2244:30:0;;;3161:37;;;;;;;;;;-1:-1:-1;3161:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;6134:128;;;;;;;;;;-1:-1:-1;6134:128:0;;;;;:::i;:::-;;:::i;21914:466::-;;;;;;;;;;-1:-1:-1;21914:466:0;;;;;:::i;:::-;;:::i;1950:27::-;;;;;;;;;;-1:-1:-1;1950:27:0;;;;-1:-1:-1;;;;;1950:27:0;;;12230:918;12285:4;12300:29;12332:20;12346:5;12332:13;:20::i;:::-;12300:52;-1:-1:-1;12365:29:0;;12362:737;;12446:22;;12408:18;;-1:-1:-1;;;;;12446:22:0;:36;;;;:71;;-1:-1:-1;12495:22:0;;-1:-1:-1;;;;;12486:31:0;;;12495:22;;12486:31;;12446:71;12442:352;;;12578:24;;-1:-1:-1;;;12578:24:0;;-1:-1:-1;;;;;13575:32:1;;12578:24:0;;;13557:51:1;12607:5:0;;12578:4;;:17;;13530:18:1;;12578:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12551:51;;:24;:51;:::i;:::-;12550:63;;;;:::i;:::-;12534:79;;12686:13;12657:26;;:42;;;;:::i;:::-;12628:26;:71;12741:40;12768:13;12741:24;:40;:::i;:::-;12714:67;;12442:352;12805:19;12875:5;-1:-1:-1;;;;;12864:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12827:33;:24;12855:4;12827:33;:::i;:::-;:69;;;;:::i;:::-;12805:91;;12908:65;12926:5;12933:24;12958:14;12908:17;:65::i;:::-;13041:22;;;12991:88;;;20535:25:1;;;-1:-1:-1;;;;;13041:22:0;;;20576:18:1;;;20569:60;;;;20645:18;;20638:34;;;12991:88:0;;;;;20523:2:1;20508:18;12991:88:0;;;;;;;12362:737;;;13116:24;12230:918;-1:-1:-1;;12230:918:0:o;7984:156::-;-1:-1:-1;;;;;8072:17:0;;8043:9;8072:17;;;:10;:17;;;;;;:60;;8116:16;;8072:60;;;-1:-1:-1;;;;;;8096:17:0;;;;;:10;:17;;;;;;;7984:156::o;7668:146::-;-1:-1:-1;;;;;7756:15:0;;7725:9;7756:15;;;:8;:15;;;;;;:50;;7796:10;;7756:50;;;-1:-1:-1;;;;;;7778:15:0;;;;;:8;:15;;;;;;;7668:146::o;9370:200::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9475:23:0::1;;::::0;;;:16:::1;:23;::::0;;;;;;;:36;;;;9522:18:::1;:25:::0;;;;;;:40;9370:200::o;7224:107::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;7298:15:::1;:25:::0;;-1:-1:-1;;;;;;7298:25:0::1;-1:-1:-1::0;;;;;7298:25:0;;;::::1;::::0;;;::::1;::::0;;7224:107::o;8248:96::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8315:13:0::1;8331:5;8315:13:::0;;;:5:::1;:13;::::0;;;;:21;;-1:-1:-1;;8315:21:0::1;::::0;;8248:96::o;8473:419::-;8593:23;;8641:25;;-1:-1:-1;;;;;8681:23:0;;8536:14;8681:23;;;:16;:23;;;;;;:27;8677:95;;-1:-1:-1;;;;;8737:23:0;;;;;;:16;:23;;;;;;;-1:-1:-1;8677:95:0;-1:-1:-1;;;;;8786:25:0;;8814:1;8786:25;;;:18;:25;;;;;;:29;8782:101;;-1:-1:-1;;;;;;8846:25:0;;;;;;:18;:25;;;;;;8782:101;8473:419;;;:::o;6556:119::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;6636:20:::1;:29:::0;;-1:-1:-1;;6636:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6556:119::o;16004:152::-;4885:5;;16076:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;16093:22:0::1;:33:::0;;-1:-1:-1;;;;;16093:33:0;::::1;-1:-1:-1::0;;;;;;16093:33:0;;::::1;;::::0;;;16004:152;;;:::o;17902:553::-;4885:5;;18037:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18057:15:0;::::1;;::::0;;;:8:::1;:15;::::0;;;;;:28;::::1;18054:98;;-1:-1:-1::0;;;;;18101:15:0;::::1;;::::0;;;:8:::1;:15;::::0;;;;:27;;;18054:98:::1;-1:-1:-1::0;;;;;18165:27:0;::::1;;::::0;;;:20:::1;:27;::::0;;;;;::::1;;:52;;::::0;::::1;;;18162:146;;-1:-1:-1::0;;;;;18233:27:0;::::1;;::::0;;;:20:::1;:27;::::0;;;;:51;;-1:-1:-1;;18233:51:0::1;::::0;::::1;;;::::0;;18162:146:::1;-1:-1:-1::0;;;;;18321:17:0;::::1;;::::0;;;:10:::1;:17;::::0;;;;;:32;::::1;18318:106;;-1:-1:-1::0;;;;;18369:17:0;::::1;;::::0;;;:10:::1;:17;::::0;;;;:31;;;18318:106:::1;-1:-1:-1::0;18443:4:0::1;17902:553:::0;;;;;;:::o;9865:194::-;4885:5;;9946:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;9986:5:::1;::::0;-1:-1:-1;;;;;9986:5:0::1;9972:10;:19;9964:28;;;::::0;::::1;;-1:-1:-1::0;;;;;;10003:17:0;;;::::1;;::::0;;;:12:::1;:17;::::0;;;;:26;10047:4:::1;::::0;9865:194::o;21283:164::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;21373:3:::1;:34:::0;;-1:-1:-1;;;;;21373:34:0;;::::1;-1:-1:-1::0;;;;;;21373:34:0;;::::1;::::0;;;::::1;::::0;;;21418:11:::1;:19:::0;;;::::1;;21373:34;21418:19;-1:-1:-1::0;;21418:19:0;;::::1;::::0;;;::::1;::::0;;21283:164::o;6995:93::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;7061:12:::1;:19:::0;6995:93::o;24528:511::-;-1:-1:-1;;;;;24648:22:0;;24583:4;24648:22;;;:15;:22;;;;;;;;24644:67;;;-1:-1:-1;24694:5:0;;24528:511;-1:-1:-1;24528:511:0:o;24644:67::-;-1:-1:-1;;;;;24727:27:0;;;;;;:20;:27;;;;;;;;:35;;:27;:35;24723:305;;;-1:-1:-1;24786:4:0;;24528:511;-1:-1:-1;24528:511:0:o;24723:305::-;24842:4;;24812:26;;;-1:-1:-1;;;24812:26:0;;;;-1:-1:-1;;;;;24842:4:0;;;;24812:24;;;;;:26;;;;;;;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24812:34:0;;:72;;;-1:-1:-1;24880:4:0;;24850:26;;;-1:-1:-1;;;24850:26:0;;;;-1:-1:-1;;;;;24880:4:0;;;;24850:24;;;;;:26;;;;;;;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24850:34:0;;24812:72;24808:220;;;-1:-1:-1;24965:4:0;;24528:511;-1:-1:-1;24528:511:0:o;24808:220::-;-1:-1:-1;25011:5:0;;24528:511;-1:-1:-1;24528:511:0:o;19672:375::-;4885:5;;19830:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;19847:19:0;;::::1;;::::0;;;:12:::1;:19;::::0;;;;;;;:26;;;::::1;::::0;;;;;;;;;:42;;;;19900:24;;;:17:::1;:24:::0;;;;;:31;;;;;;;;:52;;;;19963:24;;:17:::1;:24:::0;;;;;:31;;;;;;;;;;;:52;20035:4:::1;::::0;19672:375::o;9211:151::-;-1:-1:-1;;;;;9294:17:0;;9269:4;9294:17;;;:10;:17;;;;;;:59;;9338:15;;9294:59;;;-1:-1:-1;;;;;;9318:17:0;;;;;:10;:17;;;;;;;9211:151::o;5617:198::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5718:22:0;;;::::1;;::::0;;;:15:::1;:22;::::0;;;;;;;:31;;-1:-1:-1;;5718:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;5760:10:::1;:17:::0;;;:29;5617:198::o;7458:80::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;7518:4:::1;:12:::0;;-1:-1:-1;;;;;;7518:12:0::1;-1:-1:-1::0;;;;;7518:12:0;;;::::1;::::0;;;::::1;::::0;;7458:80::o;18463:749::-;4885:5;;18722:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;18739:6:0::1;:16:::0;;;;18774:15:::1;:34:::0;;;;18821:10:::1;:24:::0;;;;18872:12:::1;:28:::0;;;;18936:23:::1;:50:::0;19005:25:::1;:54:::0;19071:18:::1;:40:::0;19123:27:::1;:58:::0;19200:4:::1;::::0;18463:749::o;15274:394::-;15379:7;;:58;;-1:-1:-1;;;15379:58:0;;15400:10;15379:58;;;14168:34:1;15420:4:0;14218:18:1;;;14211:43;14270:18;;;14263:34;;;15362:4:0;;-1:-1:-1;;;;;15379:7:0;;:20;;14103:18:1;;15379:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15448:19;15503:5;-1:-1:-1;;;;;15492:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15470:18;:9;15483:4;15470:18;:::i;:::-;:54;;;;:::i;:::-;15448:76;;15535:52;15554:5;15562:9;15572:14;15535:17;:52::i;:::-;15621:5;-1:-1:-1;;;;;15603:35:0;;15628:9;15603:35;;;;20297:25:1;;20285:2;20270:18;;20252:76;15603:35:0;;;;;;;;-1:-1:-1;15656:4:0;;15274:394;-1:-1:-1;;;15274:394:0:o;8148:92::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8212:13:0::1;;::::0;;;:5:::1;:13;::::0;;;;:20;;-1:-1:-1;;8212:20:0::1;8228:4;8212:20;::::0;;8148:92::o;6807:81::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;6867:6:::1;:13:::0;6807:81::o;10069:158::-;4885:5;;10152:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10169:19:0;;;::::1;;::::0;;;:14:::1;:19;::::0;;;;:28;10215:4:::1;::::0;10069:158::o;7096:118::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7182:17:0::1;;::::0;;;:10:::1;:17;::::0;;;;:24;7096:118::o;23856:273::-;23955:7;;23908:4;;-1:-1:-1;;;;;23955:7:0;23933:10;:30;23925:73;;;;-1:-1:-1;;;23925:73:0;;19638:2:1;23925:73:0;;;19620:21:1;19677:2;19657:18;;;19650:30;19716:32;19696:18;;;19689:60;19766:18;;23925:73:0;19610:180:1;23925:73:0;24013:8;;24009:89;;24081:4;24059:18;;:27;;;;:::i;:::-;24038:18;:48;24009:89;-1:-1:-1;24115:4:0;;23856:273;-1:-1:-1;23856:273:0:o;9100:103::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;9171:15:::1;:24:::0;9100:103::o;21766:142::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;21876:5:::1;::::0;21854:36:::1;::::0;-1:-1:-1;;;21854:36:0;;-1:-1:-1;;;;;21876:5:0;;::::1;21854:36;::::0;::::1;15006:51:1::0;15073:18;;;15066:34;;;21854:21:0;;::::1;::::0;::::1;::::0;14979:18:1;;21854:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21766:142:::0;;:::o;24137:130::-;-1:-1:-1;;;;;24236:21:0;;;;;;:14;:21;;;;;;;;;24229:28;;;;;;;;;;;;;;;;;24195:21;;24229:28;;;24236:21;24229:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24229:28:0;;;;;;;;;;;;;;;;;;;;;;;24137:130;;;:::o;11869:207::-;11927:4;11944:13;11960:36;11974:10;11986:9;11960:13;:36::i;:::-;12007:7;;:31;;-1:-1:-1;;;12007:31:0;;-1:-1:-1;;;;;15024:32:1;;;12007:31:0;;;15006:51:1;15073:18;;;15066:34;;;11944:52:0;;-1:-1:-1;12007:7:0;;;:16;;14979:18:1;;12007:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12056:8:0;11869:207;-1:-1:-1;;11869:207:0:o;21455:190::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;21557:3:::1;:42:::0;;-1:-1:-1;;;;;;21557:42:0::1;-1:-1:-1::0;;;;;21557:42:0;;;::::1;::::0;;;::::1;::::0;;;21610:16:::1;:25:::0;;-1:-1:-1;;21610:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21455:190::o;5823:303::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;5954:9:::1;::::0;-1:-1:-1;;;;;5954:9:0::1;5940:10;:23;::::0;:52:::1;;-1:-1:-1::0;5973:10:0::1;5967:17;::::0;;;:5:::1;:17;::::0;;;;;::::1;;:25;;:17:::0;:25:::1;5940:52;5932:81;;;;-1:-1:-1::0;;;5932:81:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6024:27:0;;;::::1;;::::0;;;:20:::1;:27;::::0;;;;;;;:36;;-1:-1:-1;;6024:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;6071:10:::1;:17:::0;;;:29;5823:303::o;19224:440::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;19448:6:::1;19469:186;19480:6;:13;19476:1;:17;19469:186;;;19510:4;-1:-1:-1::0;;;;;19510:26:0::1;;19537:6;19544:1;19537:9;;;;;;-1:-1:-1::0;;;19537:9:0::1;;;;;;;;;;;;;;;19548:6;19555:1;19548:9;;;;;;-1:-1:-1::0;;;19548:9:0::1;;;;;;;;;;;;;;;19559:14;19574:1;19559:17;;;;;;-1:-1:-1::0;;;19559:17:0::1;;;;;;;;;;;;;;;19578:19;19598:1;19578:22;;;;;;-1:-1:-1::0;;;19578:22:0::1;;;;;;;;;;;;;;;19602:19;19622:1;19602:22;;;;;;-1:-1:-1::0;;;19602:22:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;19510:115:::1;::::0;-1:-1:-1;;;;;;19510:115:0::1;::::0;;;;;;-1:-1:-1;;;;;14623:15:1;;;19510:115:0::1;::::0;::::1;14605:34:1::0;14675:15;;;;14655:18;;;14648:43;14707:18;;;14700:34;;;;14750:18;;;14743:34;14793:19;;;14786:35;14539:19;;19510:115:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19640:3:0;::::1;::::0;::::1;:::i;:::-;;;;19469:186;;;4938:1;19224:440:::0;;;;;:::o;5479:130::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;5579:6:::1;;5572:4;:13;:29;;5597:4;5572:29;;;5588:6;;5572:29;-1:-1:-1::0;;;;;5554:15:0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;:47;;;;-1:-1:-1;5479:130:0:o;13156:1550::-;13208:4;-1:-1:-1;;;;;13233:17:0;;13240:10;13233:17;13225:51;;;;-1:-1:-1;;;13225:51:0;;18241:2:1;13225:51:0;;;18223:21:1;18280:2;18260:18;;;18253:30;-1:-1:-1;;;18299:18:1;;;18292:51;18360:18;;13225:51:0;18213:171:1;13225:51:0;13292:27;;-1:-1:-1;;;13292:27:0;;13308:10;13292:27;;;13557:51:1;13292:4:0;;:15;;13530:18:1;;13292:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13287:69;;-1:-1:-1;13343:1:0;;13156:1550;-1:-1:-1;13156:1550:0:o;13287:69::-;13380:10;13367:24;;;;:12;:24;;;;;;;;13394:15;13367:42;;13423:13;:25;;;;;;;;:33;;:25;:33;;:65;;-1:-1:-1;13460:20:0;;;;:28;;:20;:28;13423:65;13420:1277;;;13540:15;13558:23;:21;:23::i;:::-;13666:10;13639:38;;;;:26;:38;;;;;;13540:41;;-1:-1:-1;13639:52:0;;13540:41;;13639:52;:::i;:::-;13624:10;13597:38;;;;:26;:38;;;;;:94;13736:27;;:40;;13766:10;;13736:40;:::i;:::-;13706:27;:70;-1:-1:-1;13798:1:0;;13156:1550;-1:-1:-1;;13156:1550:0:o;13420:1277::-;13846:29;13878:50;13892:10;13904:23;:21;:23::i;:::-;13878:13;:50::i;:::-;13978:22;;13846:82;;-1:-1:-1;13940:18:0;;-1:-1:-1;;;;;13978:22:0;:36;;;;:76;;-1:-1:-1;14032:22:0;;-1:-1:-1;;;;;14032:22:0;14018:10;:36;;13978:76;13974:362;;;14115:29;;-1:-1:-1;;;14115:29:0;;14133:10;14115:29;;;13557:51:1;14149:5:0;;14115:4;;:17;;13530:18:1;;14115:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14088:56;;:24;:56;:::i;:::-;14087:68;;;;:::i;:::-;14071:84;;14228:13;14199:26;;:42;;;;:::i;:::-;14170:26;:71;14283:40;14310:13;14283:24;:40;:::i;:::-;14256:67;;13974:362;14347:19;14417:10;-1:-1:-1;;;;;14406:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14369:33;:24;14397:4;14369:33;:::i;:::-;:74;;;;:::i;:::-;14347:96;;14455:63;14473:3;14478:24;14503:14;14455:17;:63::i;:::-;14591:22;;;14536:93;;;20535:25:1;;;-1:-1:-1;;;;;14591:22:0;;;20576:18:1;;;20569:60;;;;20645:18;;;20638:34;;;14553:10:0;;14536:93;;20523:2:1;20508:18;14536:93:0;;;;;;;-1:-1:-1;14650:24:0;;13156:1550;-1:-1:-1;;;13156:1550:0:o;9705:152::-;4885:5;;9784:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9802:16:0;;;::::1;;::::0;;;:11:::1;:16;::::0;;;;:25;9845:4:::1;::::0;9705:152::o;8900:192::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;8997:23:::1;:36:::0;;;;9044:25:::1;:40:::0;8900:192::o;24275:245::-;4885:5;;24363:4;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;24415:4:::1;-1:-1:-1::0;;;;;24415:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24388:38:0::1;:5;24409:1;24394:5;:12;:16;;;;:::i;:::-;24388:23;;;;;;-1:-1:-1::0;;;24388:23:0::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24388:38:0::1;;24380:70;;;::::0;-1:-1:-1;;;24380:70:0;;17893:2:1;24380:70:0::1;::::0;::::1;17875:21:1::0;17932:2;17912:18;;;17905:30;-1:-1:-1;;;17951:18:1;;;17944:49;18010:18;;24380:70:0::1;17865:169:1::0;24380:70:0::1;-1:-1:-1::0;;;;;24461:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;;;:29;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;24508:4:0::1;::::0;24275:245;-1:-1:-1;;;24275:245:0:o;20055:384::-;20162:34;;-1:-1:-1;;;20162:34:0;;-1:-1:-1;;;;;13575:32:1;;;20162:34:0;;;13557:51:1;20133:7:0;;20162:27;;;;;;13530:18:1;;20162:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20157:269;;-1:-1:-1;20229:1:0;20222:8;;20157:269;20339:34;;-1:-1:-1;;;20339:34:0;;-1:-1:-1;;;;;13575:32:1;;;20339:34:0;;;13557:51:1;20378:4:0;;20339:27;;;;;;13530:18:1;;20339:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20307:19:0;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;;;;20279:24;;;:17;:24;;;;;;;:55;;20307:26;20279:55;:::i;:::-;20278:96;;;;:::i;:::-;:105;;;;:::i;:::-;20271:112;;;;5095:161;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;5189:5:::1;::::0;-1:-1:-1;;;;;5189:5:0::1;5175:10;:19;5167:48;;;;-1:-1:-1::0;;;5167:48:0::1;;;;;;;:::i;:::-;5226:9;:22:::0;;-1:-1:-1;;;;;;5226:22:0::1;-1:-1:-1::0;;;;;5226:22:0;;;::::1;::::0;;;::::1;::::0;;5095:161::o;7822:154::-;-1:-1:-1;;;;;7912:17:0;;7881:9;7912:17;;;:10;:17;;;;;;:56;;7956:12;;7912:56;;;-1:-1:-1;;;;;;7936:17:0;;;;;:10;:17;;;;;;;7822:154::o;16164:581::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;16476:6:::1;16497:239;16508:6;:13;16504:1;:17;16497:239;;;16538:168;16557:6;16564:1;16557:9;;;;;;-1:-1:-1::0;;;16557:9:0::1;;;;;;;;;;;;;;;16568:16;16585:1;16568:19;;;;;;-1:-1:-1::0;;;16568:19:0::1;;;;;;;;;;;;;;;16589:10;16600:1;16589:13;;;;;;-1:-1:-1::0;;;16589:13:0::1;;;;;;;;;;;;;;;16604:11;16616:1;16604:14;;;;;;-1:-1:-1::0;;;16604:14:0::1;;;;;;;;;;;;;;;16620:13;16634:1;16620:16;;;;;;-1:-1:-1::0;;;16620:16:0::1;;;;;;;;;;;;;;;16638:12;16651:1;16638:15;;;;;;-1:-1:-1::0;;;16638:15:0::1;;;;;;;;;;;;;;;16657:14;16672:1;16657:17;;;;;;-1:-1:-1::0;;;16657:17:0::1;;;;;;;;;;;;;;;16675:27;16703:1;16675:30;;;;;;-1:-1:-1::0;;;16675:30:0::1;;;;;;;;;;;;;;;16538:18;:168::i;:::-;-1:-1:-1::0;16721:3:0;::::1;::::0;::::1;:::i;:::-;;;;16497:239;;;4938:1;16164:581:::0;;;;;;;;:::o;7341:109::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;7416:11:::1;:26:::0;;-1:-1:-1;;;;;;7416:26:0::1;-1:-1:-1::0;;;;;7416:26:0;;;::::1;::::0;;;::::1;::::0;;7341:109::o;6270:140::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6364:27:0;;;::::1;;::::0;;;:20:::1;:27;::::0;;;;:36;;-1:-1:-1;;6364:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6270:140::o;12084:138::-;12137:4;12186:27;;12162:21;:51;;;;:::i;:::-;12154:60;;12084:138;:::o;7546:114::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;7624:12:::1;:28:::0;;-1:-1:-1;;;;;;7624:28:0::1;-1:-1:-1::0;;;;;7624:28:0;;;::::1;::::0;;;::::1;::::0;;7546:114::o;9578:119::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9664:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:25;;-1:-1:-1;;9664:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9578:119::o;22388:448::-;22472:4;22497:10;-1:-1:-1;;;;;22497:19:0;;;22489:48;;;;-1:-1:-1;;;22489:48:0;;;;;;;:::i;:::-;22548:26;;-1:-1:-1;;;22548:26:0;;-1:-1:-1;;;;;13575:32:1;;22548:26:0;;;13557:51:1;22548:4:0;;:18;;13530::1;;22548:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22609:34:0;;-1:-1:-1;;;22609:34:0;;-1:-1:-1;;;;;13575:32:1;;;22609:34:0;;;13557:51:1;22585:21:0;;22609:27;;;;;;13530:18:1;;22609:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22585:58;;22654:14;22671:35;22680:5;22687;22693:12;22671:8;:35::i;:::-;22654:52;;22717:84;22732:5;22739;22746:4;22752:16;22770;22788:5;22795;22717:14;:84::i;:::-;-1:-1:-1;22819:9:0;22388:448;-1:-1:-1;;;;;22388:448:0:o;6896:89::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;6960:10:::1;:17:::0;6896:89::o;20842:433::-;20895:26;;:30;20891:375;;20946:11;;;;;;;20942:311;;;20978:7;;;;;;;;;-1:-1:-1;;;;;20978:7:0;-1:-1:-1;;;;;20978:16:0;;20995:4;-1:-1:-1;;;;;20995:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21019:26;;20978:68;;-1:-1:-1;;;;;;20978:68:0;;;;;;;-1:-1:-1;;;;;15024:32:1;;;20978:68:0;;;15006:51:1;15073:18;;;15066:34;14979:18;;20978:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21065:3:0;;21080:26;;21065:42;;-1:-1:-1;;;21065:42:0;;-1:-1:-1;;;;;21065:3:0;;;;:14;;:42;;;;20297:25:1;;;20285:2;20270:18;;20252:76;21065:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21158:1:0;21129:26;:30;-1:-1:-1;20942:311:0;;-1:-1:-1;20942:311:0;;21210:27;:25;:27::i;:::-;;20942:311;20842:433::o;6422:126::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6509:20:0;;;::::1;;::::0;;;:13:::1;:20;::::0;;;;:29;;-1:-1:-1;;6509:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6422:126::o;5268:201::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;5380:5:::1;::::0;-1:-1:-1;;;;;5380:5:0::1;5366:10;:19;5358:49;;;;-1:-1:-1::0;;;5358:49:0::1;;;;;;;:::i;:::-;5418:7;:43:::0;;-1:-1:-1;;;;;;5418:43:0::1;-1:-1:-1::0;;;;;5418:43:0;;;::::1;::::0;;;::::1;::::0;;5268:201::o;6681:118::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6764:16:0;;;::::1;;::::0;;;:9:::1;:16;::::0;;;;:25;;-1:-1:-1;;6764:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6681:118::o;21655:103::-;4885:5;;-1:-1:-1;;;;;4885:5:0;4894:10;4885:19;4877:50;;;;-1:-1:-1;;;4877:50:0;;;;;;;:::i;:::-;21731:5:::1;:17:::0;;-1:-1:-1;;;;;;21731:17:0::1;-1:-1:-1::0;;;;;21731:17:0;;;::::1;::::0;;;::::1;::::0;;21655:103::o;6134:128::-;4995:5;;-1:-1:-1;;;;;4995:5:0;5004:10;4995:19;;:49;;-1:-1:-1;5025:10:0;5019:17;;;;:5;:17;;;;;;;;:25;;:17;:25;4995:49;4987:82;;;;-1:-1:-1;;;4987:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6221:22:0;;;::::1;;::::0;;;:15:::1;:22;::::0;;;;:31;;-1:-1:-1;;6221:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6134:128::o;21914:466::-;22067:31;;-1:-1:-1;;;22067:31:0;;22087:10;22067:31;;;13557:51:1;22050:4:0;;22067;;:18;;13530::1;;22067:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22135:39:0;;-1:-1:-1;;;22135:39:0;;-1:-1:-1;;;;;13575:32:1;;22135:39:0;;;13557:51:1;22111:21:0;;22146:10;;22135:32;;13530:18:1;;22135:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22111:63;;22185:14;22202:33;22211:5;22218:10;22229:5;22202:8;:33::i;:::-;22185:50;;22246:99;22261:10;22273:12;22287:8;22297:16;22315:10;22327:5;22334:10;22246:14;:99::i;:::-;-1:-1:-1;22363:9:0;21914:466;-1:-1:-1;;;;;;;;21914:466:0:o;10878:950::-;-1:-1:-1;;;;;10954:33:0;;10934:4;10954:33;;;:26;:33;;;;;;10951:78;;-1:-1:-1;11016:1:0;;10878:950;-1:-1:-1;10878:950:0:o;10951:78::-;11042:22;;-1:-1:-1;;;11042:22:0;;-1:-1:-1;;;;;13575:32:1;;11042:22:0;;;13557:51:1;11042:4:0;;:15;;13530:18:1;;11042:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11039:71;;-1:-1:-1;11096:1:0;;10878:950;-1:-1:-1;10878:950:0:o;11039:71::-;11143:7;;:32;;-1:-1:-1;;;11143:32:0;;11169:4;11143:32;;;13557:51:1;11120:20:0;;-1:-1:-1;;;;;11143:7:0;;:17;;13530:18:1;;11143:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11238:23;;-1:-1:-1;;;11238:23:0;;-1:-1:-1;;;;;13575:32:1;;11238:23:0;;;13557:51:1;11120:55:0;;-1:-1:-1;11186:12:0;;11264:5;;11238:4;;:16;;13530:18:1;;11238:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11201:33:0;;;;;;:26;:33;;;;;;:60;;;;:::i;:::-;:68;;;;:::i;:::-;11280:7;;:77;;-1:-1:-1;;;11280:77:0;;11342:4;11280:77;;;15006:51:1;15073:18;;;15066:34;;;11186:83:0;;-1:-1:-1;;;;;;11280:7:0;;:12;;11186:83;;14979:18:1;;11280:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;11371:33:0;;;;;;:26;:33;;;;;;:43;-1:-1:-1;11368:211:0;;;-1:-1:-1;;;;;11444:33:0;;11431:9;11444:33;;;:26;:33;;;;;;:43;;11480:7;;11444:43;:::i;:::-;11431:56;-1:-1:-1;11506:8:0;;11502:54;;11532:7;;11516:40;;-1:-1:-1;;;;;11532:7:0;;;;11516:40;;;;;11551:4;;11532:7;11516:40;11532:7;11516:40;11551:4;11532:7;11516:40;;;;;;;;;;;;;;;;;;;;;11502:54;11368:211;;-1:-1:-1;;;;;11648:33:0;;;;;;:26;:33;;;;;;11619:27;;:62;;11648:33;11619:62;:::i;:::-;11589:27;:92;-1:-1:-1;;;;;11692:33:0;;;11728:1;11692:33;;;:26;:33;;;;;;:37;;;;11749:7;;:32;;-1:-1:-1;;;11749:32:0;;11775:4;11749:32;;;13557:51:1;11784:15:0;;11749:7;;;;;:17;;13530:18:1;;11749:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;11741:59;10878:950;-1:-1:-1;;;;10878:950:0:o;15680:316::-;-1:-1:-1;;;;;15805:24:0;;;;;;:17;:24;;;;;;:43;;15833:14;;15805:43;:::i;:::-;-1:-1:-1;;;;;15778:24:0;;;;;;:17;:24;;;;;;;;:70;;;;15880:11;:18;;;;:32;;15902:9;;15880:32;:::i;:::-;-1:-1:-1;;;;;15859:18:0;;;;;;:11;:18;;;;;;;;:53;;;;15947:14;:21;;;;:35;;15972:9;;15947:35;:::i;:::-;-1:-1:-1;;;;;15923:21:0;;;;;;;:14;:21;;;;;:59;;;;-1:-1:-1;;15680:316:0:o;10239:631::-;10308:4;10343:1;10333:7;:11;10325:51;;;;-1:-1:-1;;;10325:51:0;;19997:2:1;10325:51:0;;;19979:21:1;20036:2;20016:18;;;20009:30;20075:29;20055:18;;;20048:57;20122:18;;10325:51:0;19969:177:1;10325:51:0;10411:22;;-1:-1:-1;;;10411:22:0;;-1:-1:-1;;;;;13575:32:1;;10411:22:0;;;13557:51:1;10411:4:0;;:15;;13530:18:1;;10411:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10403:58;;;;-1:-1:-1;;;10403:58:0;;18938:2:1;10403:58:0;;;18920:21:1;18977:2;18957:18;;;18950:30;19016:25;18996:18;;;18989:53;19059:18;;10403:58:0;18910:173:1;10403:58:0;10495:7;;:32;;-1:-1:-1;;;10495:32:0;;10521:4;10495:32;;;13557:51:1;10472:20:0;;-1:-1:-1;;;;;10495:7:0;;:17;;13530:18:1;;10495:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10558:23;;-1:-1:-1;;;10558:23:0;;-1:-1:-1;;;;;13575:32:1;;10558:23:0;;;13557:51:1;10472:55:0;;-1:-1:-1;10584:5:0;;10558:4;;:16;;13530:18:1;;10558:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10548:33;;:7;:33;:::i;:::-;:41;;;;:::i;:::-;10600:7;;:77;;-1:-1:-1;;;10600:77:0;;10662:4;10600:77;;;15006:51:1;15073:18;;;15066:34;;;10538:51:0;;-1:-1:-1;;;;;;10600:7:0;;:12;;10538:51;;14979:18:1;;10600:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10690:9;10702:23;:21;:23::i;:::-;10690:35;-1:-1:-1;10740:8:0;;10736:54;;10766:7;;10750:40;;-1:-1:-1;;;;;10766:7:0;;;;10750:40;;;;;10785:4;;10766:7;10750:40;10766:7;10750:40;10785:4;10766:7;10750:40;;;;;;;;;;;;;;;;;;;;;10736:54;10809:7;;:32;;-1:-1:-1;;;10809:32:0;;10835:4;10809:32;;;13557:51:1;10844:15:0;;-1:-1:-1;;;;;10809:7:0;;:17;;13530:18:1;;10809:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;10801:59;10239:631;-1:-1:-1;;;;;10239:631:0:o;16753:1139::-;-1:-1:-1;;;;;16981:24:0;;16961:4;16981:24;;;:17;:24;;;;;;:43;;16978:128;;-1:-1:-1;;;;;17040:24:0;;;;;;:17;:24;;;;;:42;;;16978:128;-1:-1:-1;;;;;17119:18:0;;;;;;:11;:18;;;;;;:31;;17116:92;;-1:-1:-1;;;;;17166:18:0;;;;;;:11;:18;;;;;:30;;;17116:92;-1:-1:-1;;;;;17221:19:0;;;;;;:12;:19;;;;;;:33;;17218:96;;-1:-1:-1;;;;;17270:19:0;;;;;;:12;:19;;;;;:32;;;17218:96;-1:-1:-1;;;;;17327:21:0;;;;;;:14;:21;;;;;;:37;;17324:116;;-1:-1:-1;;;;;17380:21:0;;;;;;:14;:21;;;;;:36;;;17324:116;-1:-1:-1;;;;;17453:20:0;;;;;;:13;:20;;;;;;:35;;17450:109;;-1:-1:-1;;;;;17504:20:0;;;;;;:13;:20;;;;;:34;;;17450:109;-1:-1:-1;;;;;17572:20:0;;;;;;:13;:20;;;;;;;;:38;;;;;;17569:115;;-1:-1:-1;;;;;17626:20:0;;;;;;:13;:20;;;;;:37;;-1:-1:-1;;17626:37:0;;;;;;;17569:115;-1:-1:-1;;;;;17697:33:0;;;;;;:26;:33;;;;;;:64;;17694:167;;-1:-1:-1;;;;;17777:33:0;;;;;;:26;:33;;;;;:63;;;17694:167;-1:-1:-1;17880:4:0;16753:1139;;;;;;;;;;:::o;22844:342::-;22965:35;;-1:-1:-1;;;22965:35:0;;-1:-1:-1;;;;;13849:15:1;;;22965:35:0;;;13831:34:1;13901:15;;13881:18;;;13874:43;22931:4:0;;;;22965;;:21;;13766:18:1;;22965:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22948:52;-1:-1:-1;23015:13:0;;23011:87;;23045:7;;:41;;-1:-1:-1;;;23045:41:0;;-1:-1:-1;;;;;15024:32:1;;;23045:41:0;;;15006:51:1;15073:18;;;15066:34;;;23045:7:0;;;;:16;;14979:18:1;;23045:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23011:87;23108:43;23127:5;23134;23141:9;23108:18;:43::i;20451:383::-;20607:4;20624;-1:-1:-1;;;;;20624:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20665:16:0;;;;20661:144;;-1:-1:-1;20661:144:0;;-1:-1:-1;20661:144:0;20698:3;;:92;;-1:-1:-1;;;20698:92:0;;16291:14:1;;16284:22;20698:92:0;;;16266:41:1;16350:14;;16343:22;16323:18;;;16316:50;16409:14;;16402:22;16382:18;;;16375:50;16441:18;;;16434:34;;;16484:19;;;16477:35;;;-1:-1:-1;;;;;16587:15:1;;;16566:19;;;16559:44;16640:15;;;16619:19;;;16612:44;20698:3:0;;;;:18;;16238:19:1;;20698:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20661:144;-1:-1:-1;20822:4:0;20451:383;;;;;;;;;:::o;14714:552::-;14789:22;;14768:4;;-1:-1:-1;;;;;14789:22:0;:36;14785:451;;14914:22;;;14903:48;;;-1:-1:-1;;;14903:48:0;;;;14842:19;;-1:-1:-1;;;;;14914:22:0;;;;14903:46;;:48;;;;;;;;;;;14914:22;14903:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14864:26;;:35;;14894:4;14864:35;:::i;:::-;:88;;;;:::i;:::-;14986:22;;15011:26;;14842:110;;-1:-1:-1;14967:86:0;;-1:-1:-1;;;;;14986:22:0;;;;14842:110;14967:17;:86::i;:::-;15108:1;15079:26;:30;;;15147:22;;;15129:69;;20297:25:1;;;-1:-1:-1;;;;;15147:22:0;;15129:69;;20270:18:1;15129:69:0;;;;;;;15220:4;15213:11;;;14714:552;:::o;14785:451::-;-1:-1:-1;15253:5:0;;14714:552::o;23194:654::-;23293:14;;23289:275;;-1:-1:-1;;;;;23348:21:0;;;;;;:14;:21;;;;;;:36;;23373:10;;23348:36;:::i;:::-;-1:-1:-1;;;;;23324:21:0;;;;;;;:14;:21;;;;;;;;:60;;;;23433:17;:24;;;;;:31;;;;;;;;;;;:46;;23468:10;;23433:46;:::i;:::-;-1:-1:-1;;;;;23399:24:0;;;;;;;:17;:24;;;;;;;;:31;;;;;;;;;;;:80;;;;23517:20;;;:13;:20;;;;;;:35;;23541:10;;23517:35;:::i;:::-;-1:-1:-1;;;;;23494:20:0;;;;;;:13;:20;;;;;:58;23289:275;-1:-1:-1;;;;;23577:24:0;;;;;;:17;:24;;;;;;:30;:65;;;;-1:-1:-1;;;;;;23611:19:0;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;;:31;23577:65;23574:143;;;-1:-1:-1;;;;;23677:24:0;;;;;;:17;:24;;;;;23704:1;23677:28;;23574:143;-1:-1:-1;;;;;;23756:24:0;;;;;;;:17;:24;;;;;;;;;23727:12;:19;;;;;:26;;;;;;;;;;;;;:53;;;;23791:24;;;:17;:24;;;;;:31;;;;;;;23825:15;23791:49;;23194:654::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:768:1;68:5;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;183:6;170:20;209:4;233:60;249:43;289:2;249:43;:::i;:::-;233:60;:::i;:::-;315:3;339:2;334:3;327:15;367:2;362:3;358:12;351:19;;402:2;394:6;390:15;454:3;449:2;443;440:1;436:10;428:6;424:23;420:32;417:41;414:2;;;475:5;468;461:20;414:2;501:5;515:238;529:2;526:1;523:9;515:238;;;600:3;587:17;617:31;642:5;617:31;:::i;:::-;661:18;;699:12;;;;731;;;;547:1;540:9;515:238;;;-1:-1:-1;771:5:1;;78:704;-1:-1:-1;;;;;;;78:704:1:o;787:762::-;838:5;891:3;884:4;876:6;872:17;868:27;858:2;;913:5;906;899:20;858:2;953:6;940:20;979:4;1003:60;1019:43;1059:2;1019:43;:::i;1003:60::-;1085:3;1109:2;1104:3;1097:15;1137:2;1132:3;1128:12;1121:19;;1172:2;1164:6;1160:15;1224:3;1219:2;1213;1210:1;1206:10;1198:6;1194:23;1190:32;1187:41;1184:2;;;1245:5;1238;1231:20;1184:2;1271:5;1285:235;1299:2;1296:1;1293:9;1285:235;;;1370:3;1357:17;1387:28;1409:5;1387:28;:::i;:::-;1428:18;;1466:12;;;;1498;;;;1317:1;1310:9;1285:235;;1554:693;1608:5;1661:3;1654:4;1646:6;1642:17;1638:27;1628:2;;1683:5;1676;1669:20;1628:2;1723:6;1710:20;1749:4;1773:60;1789:43;1829:2;1789:43;:::i;1773:60::-;1855:3;1879:2;1874:3;1867:15;1907:2;1902:3;1898:12;1891:19;;1942:2;1934:6;1930:15;1994:3;1989:2;1983;1980:1;1976:10;1968:6;1964:23;1960:32;1957:41;1954:2;;;2015:5;2008;2001:20;1954:2;2041:5;2055:163;2069:2;2066:1;2063:9;2055:163;;;2126:17;;2114:30;;2164:12;;;;2196;;;;2087:1;2080:9;2055:163;;2252:257;2311:6;2364:2;2352:9;2343:7;2339:23;2335:32;2332:2;;;2385:6;2377;2370:22;2332:2;2429:9;2416:23;2448:31;2473:5;2448:31;:::i;:::-;2498:5;2322:187;-1:-1:-1;;;2322:187:1:o;2514:261::-;2584:6;2637:2;2625:9;2616:7;2612:23;2608:32;2605:2;;;2658:6;2650;2643:22;2605:2;2695:9;2689:16;2714:31;2739:5;2714:31;:::i;2780:398::-;2848:6;2856;2909:2;2897:9;2888:7;2884:23;2880:32;2877:2;;;2930:6;2922;2915:22;2877:2;2974:9;2961:23;2993:31;3018:5;2993:31;:::i;:::-;3043:5;-1:-1:-1;3100:2:1;3085:18;;3072:32;3113:33;3072:32;3113:33;:::i;:::-;3165:7;3155:17;;;2867:311;;;;;:::o;3183:539::-;3260:6;3268;3276;3329:2;3317:9;3308:7;3304:23;3300:32;3297:2;;;3350:6;3342;3335:22;3297:2;3394:9;3381:23;3413:31;3438:5;3413:31;:::i;:::-;3463:5;-1:-1:-1;3520:2:1;3505:18;;3492:32;3533:33;3492:32;3533:33;:::i;:::-;3585:7;-1:-1:-1;3644:2:1;3629:18;;3616:32;3657:33;3616:32;3657:33;:::i;:::-;3709:7;3699:17;;;3287:435;;;;;:::o;3727:874::-;3822:6;3830;3838;3846;3854;3862;3915:3;3903:9;3894:7;3890:23;3886:33;3883:2;;;3937:6;3929;3922:22;3883:2;3981:9;3968:23;4000:31;4025:5;4000:31;:::i;:::-;4050:5;-1:-1:-1;4107:2:1;4092:18;;4079:32;4120:33;4079:32;4120:33;:::i;:::-;4172:7;-1:-1:-1;4226:2:1;4211:18;;4198:32;;-1:-1:-1;4282:2:1;4267:18;;4254:32;4295:30;4254:32;4295:30;:::i;:::-;4344:7;-1:-1:-1;4403:3:1;4388:19;;4375:33;4417:30;4375:33;4417:30;:::i;:::-;4466:7;-1:-1:-1;4525:3:1;4510:19;;4497:33;4539:30;4497:33;4539:30;:::i;:::-;4588:7;4578:17;;;3873:728;;;;;;;;:::o;4606:604::-;4701:6;4709;4717;4725;4733;4786:3;4774:9;4765:7;4761:23;4757:33;4754:2;;;4808:6;4800;4793:22;4754:2;4852:9;4839:23;4871:31;4896:5;4871:31;:::i;:::-;4921:5;-1:-1:-1;4978:2:1;4963:18;;4950:32;4991:33;4950:32;4991:33;:::i;:::-;4744:466;;5043:7;;-1:-1:-1;;;;5097:2:1;5082:18;;5069:32;;5148:2;5133:18;;5120:32;;5199:3;5184:19;;;5171:33;;-1:-1:-1;4744:466:1:o;5215:503::-;5308:6;5316;5369:2;5357:9;5348:7;5344:23;5340:32;5337:2;;;5390:6;5382;5375:22;5337:2;5434:9;5421:23;5453:31;5478:5;5453:31;:::i;:::-;5503:5;-1:-1:-1;5559:2:1;5544:18;;5531:32;5586:18;5575:30;;5572:2;;;5623:6;5615;5608:22;5572:2;5651:61;5704:7;5695:6;5684:9;5680:22;5651:61;:::i;:::-;5641:71;;;5327:391;;;;;:::o;5723:392::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:2;;;5870:6;5862;5855:22;5817:2;5914:9;5901:23;5933:31;5958:5;5933:31;:::i;:::-;5983:5;-1:-1:-1;6040:2:1;6025:18;;6012:32;6053:30;6012:32;6053:30;:::i;6120:460::-;6194:6;6202;6210;6263:2;6251:9;6242:7;6238:23;6234:32;6231:2;;;6284:6;6276;6269:22;6231:2;6328:9;6315:23;6347:31;6372:5;6347:31;:::i;:::-;6397:5;-1:-1:-1;6454:2:1;6439:18;;6426:32;6467:30;6426:32;6467:30;:::i;:::-;6221:359;;6516:7;;-1:-1:-1;;;6570:2:1;6555:18;;;;6542:32;;6221:359::o;6585:325::-;6653:6;6661;6714:2;6702:9;6693:7;6689:23;6685:32;6682:2;;;6735:6;6727;6720:22;6682:2;6779:9;6766:23;6798:31;6823:5;6798:31;:::i;:::-;6848:5;6900:2;6885:18;;;;6872:32;;-1:-1:-1;;;6672:238:1:o;6915:529::-;6998:6;7006;7014;7022;7075:3;7063:9;7054:7;7050:23;7046:33;7043:2;;;7097:6;7089;7082:22;7043:2;7141:9;7128:23;7160:31;7185:5;7160:31;:::i;:::-;7210:5;-1:-1:-1;7262:2:1;7247:18;;7234:32;;-1:-1:-1;7318:2:1;7303:18;;7290:32;7331:30;7290:32;7331:30;:::i;:::-;7033:411;;;;-1:-1:-1;7380:7:1;;7434:2;7419:18;7406:32;;-1:-1:-1;;7033:411:1:o;7449:1335::-;7669:6;7677;7685;7693;7701;7754:3;7742:9;7733:7;7729:23;7725:33;7722:2;;;7776:6;7768;7761:22;7722:2;7821:9;7808:23;7850:18;7891:2;7883:6;7880:14;7877:2;;;7912:6;7904;7897:22;7877:2;7940:61;7993:7;7984:6;7973:9;7969:22;7940:61;:::i;:::-;7930:71;;8054:2;8043:9;8039:18;8026:32;8010:48;;8083:2;8073:8;8070:16;8067:2;;;8104:6;8096;8089:22;8067:2;8132:63;8187:7;8176:8;8165:9;8161:24;8132:63;:::i;:::-;8122:73;;8248:2;8237:9;8233:18;8220:32;8204:48;;8277:2;8267:8;8264:16;8261:2;;;8298:6;8290;8283:22;8261:2;8326:63;8381:7;8370:8;8359:9;8355:24;8326:63;:::i;:::-;8316:73;;8442:2;8431:9;8427:18;8414:32;8398:48;;8471:2;8461:8;8458:16;8455:2;;;8492:6;8484;8477:22;8455:2;8520:63;8575:7;8564:8;8553:9;8549:24;8520:63;:::i;:::-;8510:73;;8636:3;8625:9;8621:19;8608:33;8592:49;;8666:2;8656:8;8653:16;8650:2;;;8687:6;8679;8672:22;8650:2;;8715:63;8770:7;8759:8;8748:9;8744:24;8715:63;:::i;:::-;8705:73;;;7712:1072;;;;;;;;:::o;8789:2040::-;9108:6;9116;9124;9132;9140;9148;9156;9164;9217:3;9205:9;9196:7;9192:23;9188:33;9185:2;;;9239:6;9231;9224:22;9185:2;9284:9;9271:23;9313:18;9354:2;9346:6;9343:14;9340:2;;;9375:6;9367;9360:22;9340:2;9403:61;9456:7;9447:6;9436:9;9432:22;9403:61;:::i;:::-;9393:71;;9517:2;9506:9;9502:18;9489:32;9473:48;;9546:2;9536:8;9533:16;9530:2;;;9567:6;9559;9552:22;9530:2;9595:63;9650:7;9639:8;9628:9;9624:24;9595:63;:::i;:::-;9585:73;;9711:2;9700:9;9696:18;9683:32;9667:48;;9740:2;9730:8;9727:16;9724:2;;;9761:6;9753;9746:22;9724:2;9789:63;9844:7;9833:8;9822:9;9818:24;9789:63;:::i;:::-;9779:73;;9905:2;9894:9;9890:18;9877:32;9861:48;;9934:2;9924:8;9921:16;9918:2;;;9955:6;9947;9940:22;9918:2;9983:63;10038:7;10027:8;10016:9;10012:24;9983:63;:::i;:::-;9973:73;;10099:3;10088:9;10084:19;10071:33;10055:49;;10129:2;10119:8;10116:16;10113:2;;;10150:6;10142;10135:22;10113:2;10178:63;10233:7;10222:8;10211:9;10207:24;10178:63;:::i;:::-;10168:73;;10294:3;10283:9;10279:19;10266:33;10250:49;;10324:2;10314:8;10311:16;10308:2;;;10345:6;10337;10330:22;10308:2;10373:63;10428:7;10417:8;10406:9;10402:24;10373:63;:::i;:::-;10363:73;;10489:3;10478:9;10474:19;10461:33;10445:49;;10519:2;10509:8;10506:16;10503:2;;;10540:6;10532;10525:22;10503:2;10568:60;10620:7;10609:8;10598:9;10594:24;10568:60;:::i;:::-;10558:70;;10681:3;10670:9;10666:19;10653:33;10637:49;;10711:2;10701:8;10698:16;10695:2;;;10732:6;10724;10717:22;10695:2;;10760:63;10815:7;10804:8;10793:9;10789:24;10760:63;:::i;:::-;10750:73;;;9175:1654;;;;;;;;;;;:::o;10834:251::-;10890:6;10943:2;10931:9;10922:7;10918:23;10914:32;10911:2;;;10964:6;10956;10949:22;10911:2;11008:9;10995:23;11027:28;11049:5;11027:28;:::i;11090:255::-;11157:6;11210:2;11198:9;11189:7;11185:23;11181:32;11178:2;;;11231:6;11223;11216:22;11178:2;11268:9;11262:16;11287:28;11309:5;11287:28;:::i;11350:190::-;11409:6;11462:2;11450:9;11441:7;11437:23;11433:32;11430:2;;;11483:6;11475;11468:22;11430:2;-1:-1:-1;11511:23:1;;11420:120;-1:-1:-1;11420:120:1:o;11545:194::-;11615:6;11668:2;11656:9;11647:7;11643:23;11639:32;11636:2;;;11689:6;11681;11674:22;11636:2;-1:-1:-1;11717:16:1;;11626:113;-1:-1:-1;11626:113:1:o;11744:325::-;11812:6;11820;11873:2;11861:9;11852:7;11848:23;11844:32;11841:2;;;11894:6;11886;11879:22;11841:2;11935:9;11922:23;11912:33;;11995:2;11984:9;11980:18;11967:32;12008:31;12033:5;12008:31;:::i;12074:258::-;12142:6;12150;12203:2;12191:9;12182:7;12178:23;12174:32;12171:2;;;12224:6;12216;12209:22;12171:2;-1:-1:-1;;12252:23:1;;;12322:2;12307:18;;;12294:32;;-1:-1:-1;12161:171:1:o;12337:393::-;12414:6;12422;12430;12483:2;12471:9;12462:7;12458:23;12454:32;12451:2;;;12504:6;12496;12489:22;12451:2;12545:9;12532:23;12522:33;;12602:2;12591:9;12587:18;12574:32;12564:42;;12656:2;12645:9;12641:18;12628:32;12669:31;12694:5;12669:31;:::i;12735:671::-;12857:6;12865;12873;12881;12889;12897;12905;12913;12966:3;12954:9;12945:7;12941:23;12937:33;12934:2;;;12988:6;12980;12973:22;12934:2;-1:-1:-1;;13016:23:1;;;13086:2;13071:18;;13058:32;;-1:-1:-1;13137:2:1;13122:18;;13109:32;;13188:2;13173:18;;13160:32;;-1:-1:-1;13239:3:1;13224:19;;13211:33;;-1:-1:-1;13291:3:1;13276:19;;13263:33;;-1:-1:-1;13343:3:1;13328:19;;13315:33;;-1:-1:-1;13395:3:1;13380:19;13367:33;;-1:-1:-1;12924:482:1;-1:-1:-1;12924:482:1:o;15111:661::-;15282:2;15334:21;;;15404:13;;15307:18;;;15426:22;;;15253:4;;15282:2;15505:15;;;;15479:2;15464:18;;;15253:4;15551:195;15565:6;15562:1;15559:13;15551:195;;;15630:13;;-1:-1:-1;;;;;15626:39:1;15614:52;;15721:15;;;;15686:12;;;;15662:1;15580:9;15551:195;;;-1:-1:-1;15763:3:1;;15262:510;-1:-1:-1;;;;;;15262:510:1:o;17346:340::-;17548:2;17530:21;;;17587:2;17567:18;;;17560:30;-1:-1:-1;;;17621:2:1;17606:18;;17599:46;17677:2;17662:18;;17520:166::o;18389:342::-;18591:2;18573:21;;;18630:2;18610:18;;;18603:30;-1:-1:-1;;;18664:2:1;18649:18;;18642:48;18722:2;18707:18;;18563:168::o;19088:343::-;19290:2;19272:21;;;19329:2;19309:18;;;19302:30;-1:-1:-1;;;19363:2:1;19348:18;;19341:49;19422:2;19407:18;;19262:169::o;20936:275::-;21007:2;21001:9;21072:2;21053:13;;-1:-1:-1;;21049:27:1;21037:40;;21107:18;21092:34;;21128:22;;;21089:62;21086:2;;;21154:18;;:::i;:::-;21190:2;21183:22;20981:230;;-1:-1:-1;20981:230:1:o;21216:183::-;21276:4;21309:18;21301:6;21298:30;21295:2;;;21331:18;;:::i;:::-;-1:-1:-1;21376:1:1;21372:14;21388:4;21368:25;;21285:114::o;21404:128::-;21444:3;21475:1;21471:6;21468:1;21465:13;21462:2;;;21481:18;;:::i;:::-;-1:-1:-1;21517:9:1;;21452:80::o;21537:217::-;21577:1;21603;21593:2;;-1:-1:-1;;;21628:31:1;;21682:4;21679:1;21672:15;21710:4;21635:1;21700:15;21593:2;-1:-1:-1;21739:9:1;;21583:171::o;21759:168::-;21799:7;21865:1;21861;21857:6;21853:14;21850:1;21847:21;21842:1;21835:9;21828:17;21824:45;21821:2;;;21872:18;;:::i;:::-;-1:-1:-1;21912:9:1;;21811:116::o;21932:125::-;21972:4;22000:1;21997;21994:8;21991:2;;;22005:18;;:::i;:::-;-1:-1:-1;22042:9:1;;21981:76::o;22062:135::-;22101:3;-1:-1:-1;;22122:17:1;;22119:2;;;22142:18;;:::i;:::-;-1:-1:-1;22189:1:1;22178:13;;22109:88::o;22202:127::-;22263:10;22258:3;22254:20;22251:1;22244:31;22294:4;22291:1;22284:15;22318:4;22315:1;22308:15;22334:127;22395:10;22390:3;22386:20;22383:1;22376:31;22426:4;22423:1;22416:15;22450:4;22447:1;22440:15;22466:131;-1:-1:-1;;;;;22541:31:1;;22531:42;;22521:2;;22587:1;22584;22577:12;22602:118;22688:5;22681:13;22674:21;22667:5;22664:32;22654:2;;22710:1;22707;22700:12

Swarm Source

ipfs://9ff27d447a2eb43d12587fea238aa281ba0a8ba0f94c538f4acf4d6c5ff84bcd

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.