ETH Price: $2,346.39 (+1.10%)

Token

Serum (SERUM)
 

Overview

Max Total Supply

367 SERUM

Holders

203

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
wallienx.eth
Balance
5 SERUM
0x40fdbc49daf882fb6244dbde916ae6fd9fd5184a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ApeSerum

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-18
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-02
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-09
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0; 
abstract contract ReentrancyGuard { 
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
   _status = _ENTERED;

        _;
        _status = _NOT_ENTERED;
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
 
    function toString(uint256 value) internal pure returns (string memory) { 
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
 
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
 
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    } 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 
library Address { 
    function isContract(address account) internal view returns (bool) { 
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    } 
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
 
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    } 
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
 
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
 
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    } 
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
 
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
 
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
 
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
 
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else { 
            if (returndata.length > 0) { 

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
interface IERC721Receiver { 
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
 
interface IERC165 { 
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
 
abstract contract ERC165 is IERC165 { 
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
} 
interface IERC721 is IERC165 { 
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); 
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); 
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved); 
    function balanceOf(address owner) external view returns (uint256 balance); 
    function ownerOf(uint256 tokenId) external view returns (address owner); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function approve(address to, uint256 tokenId) external;
 
    function getApproved(uint256 tokenId) external view returns (address operator); 
    function setApprovalForAll(address operator, bool _approved) external; 
    function isApprovedForAll(address owner, address operator) external view returns (bool); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
} 
interface IERC721Enumerable is IERC721 { 
    function totalSupply() external view returns (uint256); 
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); 
    function tokenByIndex(uint256 index) external view returns (uint256);
}  
interface IERC721Metadata is IERC721 { 
    function name() external view returns (string memory); 
    function symbol() external view returns (string memory); 
    function tokenURI(uint256 tokenId) external view returns (string memory);
} 
contract ERC721A is
  Context,
  ERC165,
  IERC721,
  IERC721Metadata,
  IERC721Enumerable
{
  using Address for address;
  using Strings for uint256;

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }

  uint256 private currentIndex = 0;

  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize; 
  string private _name; 
  string private _symbol; 
  mapping(uint256 => TokenOwnership) private _ownerships; 
  mapping(address => AddressData) private _addressData; 
  mapping(uint256 => address) private _tokenApprovals; 
  mapping(address => mapping(address => bool)) private _operatorApprovals; 
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 maxBatchSize_,
    uint256 collectionSize_
  ) {
    require(
      collectionSize_ > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
    collectionSize = collectionSize_;
  } 
  function totalSupply() public view override returns (uint256) {
    return currentIndex;
  } 
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  } 
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 0;
    address currOwnershipAddr = address(0);
    for (uint256 i = 0; i < numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert("ERC721A: unable to get token of owner by index");
  } 
  function supportsInterface(bytes4 interfaceId)
    public
    view
    virtual
    override(ERC165, IERC165)
    returns (bool)
  {
    return
      interfaceId == type(IERC721).interfaceId ||
      interfaceId == type(IERC721Metadata).interfaceId ||
      interfaceId == type(IERC721Enumerable).interfaceId ||
      super.supportsInterface(interfaceId);
  } 
  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }

  function _numberMinted(address owner) internal view returns (uint256) {
    require(
      owner != address(0),
      "ERC721A: number minted query for the zero address"
    );
    return uint256(_addressData[owner].numberMinted);
  }

  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }

    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }

    revert("ERC721A: unable to determine the owner of token");
  } 
  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  } 
  function name() public view virtual override returns (string memory) {
    return _name;
  } 
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  } 
  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );

    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString(),_getUriExtension()))
        : "";
  } 
  function _baseURI() internal view virtual returns (string memory) {
    return "";
  }

  function _getUriExtension() internal view virtual returns (string memory) {
    return "";
  }
 
  function approve(address to, uint256 tokenId) public override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");

    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: approve caller is not owner nor approved for all"
    );

    _approve(to, tokenId, owner);
  } 
  function getApproved(uint256 tokenId) public view override returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  } 
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: approve to caller");

    _operatorApprovals[_msgSender()][operator] = approved;
    emit ApprovalForAll(_msgSender(), operator, approved);
  }
 
  function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    override
    returns (bool)
  {
    return _operatorApprovals[owner][operator];
  }
 
  function transferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    _transfer(from, to, tokenId);
  } 
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, "");
  } 
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      "ERC721A: transfer to non ERC721Receiver implementer"
    );
  } 
  function _exists(uint256 tokenId) internal view returns (bool) {
    return tokenId < currentIndex;
  }

  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, "");
  } 
  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), "ERC721A: mint to the zero address"); 
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

    _beforeTokenTransfers(address(0), to, startTokenId, quantity);

    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 updatedIndex = startTokenId;

    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        "ERC721A: transfer to non ERC721Receiver implementer"
      );
      updatedIndex++;
    }

    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  } 
  function _transfer(
    address from,
    address to,
    uint256 tokenId
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);

    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));

    require(
      isApprovedOrOwner,
      "ERC721A: transfer caller is not owner nor approved"
    );

    require(
      prevOwnership.addr == from,
      "ERC721A: transfer from incorrect owner"
    );
    require(to != address(0), "ERC721A: transfer to the zero address");

    _beforeTokenTransfers(from, to, tokenId, 1); 
    _approve(address(0), tokenId, prevOwnership.addr);

    _addressData[from].balance -= 1;
    _addressData[to].balance += 1;
    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); 
    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(
          prevOwnership.addr,
          prevOwnership.startTimestamp
        );
      }
    }

    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  } 
  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }

  uint256 public nextOwnerToExplicitlySet = 0; 
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    } 
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  } 
  function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) private returns (bool) {
    if (to.isContract()) {
      try
        IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data)
      returns (bytes4 retval) {
        return retval == IERC721Receiver(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721A: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  } 
  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {} 
  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}

contract ApeSerum is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;


  uint256 public MAX_PER_Transtion = 20; // maximam amount that user can mint
  uint256 public MAX_PER_Address = 5; // maximam amount that user can mint

  uint256 public  PRICE = 0.03 ether; //0.025 ether 
  uint256 public  reserved = 10;

  uint256 private constant TotalCollectionSize_ = 3100; // total number of nfts
  uint256 private constant MaxMintPerBatch_ = 5; //max mint per traction

  string private _baseTokenURI;
  mapping(uint => bool) public tokenIdClaimed;

  uint public status = 2; //0-pause 1-whitelist 2-public

  address public phase1Add = 0xa4d13D872d78Dc2E538B1279D9d0322fD04f0e52;


  constructor() ERC721A("Serum","SERUM", MaxMintPerBatch_, TotalCollectionSize_) {
      _baseTokenURI = "";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
 function setphase1Add(address a) public onlyOwner{
   phase1Add = a;
 }
    function ClaimFree() public {
        uint256 owned = IERC721Enumerable(phase1Add).balanceOf(msg.sender);
        uint count=0;
        require(owned > 4, "Require at least 5 unclaimed Baby Doodle Apes");
        for (uint256 index = 0; index < owned; index++) {
            if(!tokenIdClaimed[IERC721Enumerable(phase1Add).tokenOfOwnerByIndex(msg.sender, index)]){
                count++;
                tokenIdClaimed[IERC721Enumerable(phase1Add).tokenOfOwnerByIndex(msg.sender, index)]=true;
            }
        }
        require(count >= 5,"Not eligiable for free claims");
        if(count > 9) _safeMint(msg.sender, 2);
        else if(count > 4) _safeMint(msg.sender, 1);
    }

  function mint(uint256 quantity) external payable callerIsUser {
    require( status == 2 , "Sale is not Active");
    require(totalSupply() + quantity <= TotalCollectionSize_ - reserved, "reached max supply");
    require(  quantity <= MAX_PER_Transtion,"can not mint this many");
    require(msg.value >= PRICE * quantity, "Need to send more ETH.");
    _safeMint(msg.sender, quantity);
  }

   function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
    require(_exists(tokenId),"ERC721Metadata: URI query for nonexistent token");
    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString()))
        : "";
  }

  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }
  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
  function withdraw() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function getMintPrice() public view returns(uint256)
  {
      return PRICE;
  }
  function changeMAX_PER_Transtion(uint256 q) external onlyOwner
  {
      MAX_PER_Transtion = q;
  }
  function setStatus(uint256 s)external onlyOwner{
      status = s;
  }
  function setReserved(uint256 r)external onlyOwner{
      reserved = r;
  }
  function getReserved() public view returns(uint256){
      return reserved;
  }
  function getStatus()public view returns(uint){
      return status;
  }
  function giveaway(address a, uint q)public onlyOwner{
    _safeMint(a, q);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ClaimFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MAX_PER_Address","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_Transtion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"changeMAX_PER_Transtion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"q","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phase1Add","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"r","type":"uint256"}],"name":"setReserved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setphase1Add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556014600a556005600b55666a94d74f430000600c55600a600d55600260105573a4d13d872d78dc2e538b1279d9d0322fd04f0e52601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008f57600080fd5b506040518060400160405280600581526020017f536572756d0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f534552554d0000000000000000000000000000000000000000000000000000008152506005610c1c62000121620001156200022960201b60201c565b6200023160201b60201c565b6000811162000167576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015e9062000415565b60405180910390fd5b60008211620001ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a490620003f3565b60405180910390fd5b8360029080519060200190620001c5929190620002f5565b508260039080519060200190620001de929190620002f5565b508160a08181525050806080818152505050505050600160098190555060405180602001604052806000815250600e908051906020019062000222929190620002f5565b506200054b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620003039062000448565b90600052602060002090601f01602090048101928262000327576000855562000373565b82601f106200034257805160ff191683800117855562000373565b8280016001018555821562000373579182015b828111156200037257825182559160200191906001019062000355565b5b50905062000382919062000386565b5090565b5b80821115620003a157600081600090555060010162000387565b5090565b6000620003b460278362000437565b9150620003c182620004ad565b604082019050919050565b6000620003db602e8362000437565b9150620003e882620004fc565b604082019050919050565b600060208201905081810360008301526200040e81620003a5565b9050919050565b600060208201905081810360008301526200043081620003cc565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200046157607f821691505b602082108114156200047857620004776200047e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a05161516b6200057c6000396000818161289f015281816128c8015261304701526000505061516b6000f3fe6080604052600436106102515760003560e01c806369ba1a7511610139578063af7b26e9116100b6578063d7224ba01161007a578063d7224ba01461088f578063d8fb80e5146108ba578063dc33e681146108f7578063e985e9c514610934578063f2fde38b14610971578063fe60d12c1461099a57610251565b8063af7b26e9146107be578063b104d2d6146107e7578063b88d4fde146107fe578063c87b56dd14610827578063d04950a11461086457610251565b80639231ab2a116100fd5780639231ab2a146106e657806395d89b4114610723578063a0712d681461074e578063a22cb4651461076a578063a7f93ebd1461079357610251565b806369ba1a751461061357806370a082311461063c578063715018a6146106795780638d859f3e146106905780638da5cb5b146106bb57610251565b80632d6e71b6116101d257806342842e0e1161019657806342842e0e146104f35780634e69d5601461051c5780634f6ccce71461054757806355f804b314610584578063561e1c07146105ad5780636352211e146105d657610251565b80632d6e71b6146104225780632f2ffc571461044b5780632f745c59146104765780633ccfd60b146104b35780633fd17366146104ca57610251565b80630d9639ba116102195780630d9639ba1461034d5780630fab699d1461037857806318160ddd146103a3578063200d2ed2146103ce57806323b872dd146103f957610251565b806301ffc9a714610256578063050225ea1461029357806306fdde03146102bc578063081812fc146102e7578063095ea7b314610324575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190613882565b6109c5565b60405161028a9190613fa2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190613842565b610b0f565b005b3480156102c857600080fd5b506102d1610b99565b6040516102de9190613fbd565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613925565b610c2b565b60405161031b9190613f12565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613842565b610cb0565b005b34801561035957600080fd5b50610362610dc9565b60405161036f91906143ba565b60405180910390f35b34801561038457600080fd5b5061038d610dd3565b60405161039a9190613f12565b60405180910390f35b3480156103af57600080fd5b506103b8610df9565b6040516103c591906143ba565b60405180910390f35b3480156103da57600080fd5b506103e3610e03565b6040516103f091906143ba565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061372c565b610e09565b005b34801561042e57600080fd5b5061044960048036038101906104449190613925565b610e19565b005b34801561045757600080fd5b50610460610e9f565b60405161046d91906143ba565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190613842565b610ea5565b6040516104aa91906143ba565b60405180910390f35b3480156104bf57600080fd5b506104c86110a3565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190613925565b611224565b005b3480156104ff57600080fd5b5061051a6004803603810190610515919061372c565b6112aa565b005b34801561052857600080fd5b506105316112ca565b60405161053e91906143ba565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190613925565b6112d4565b60405161057b91906143ba565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906138dc565b611327565b005b3480156105b957600080fd5b506105d460048036038101906105cf91906136bf565b6113bd565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190613925565b61147d565b60405161060a9190613f12565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613925565b611493565b005b34801561064857600080fd5b50610663600480360381019061065e91906136bf565b611519565b60405161067091906143ba565b60405180910390f35b34801561068557600080fd5b5061068e611602565b005b34801561069c57600080fd5b506106a561168a565b6040516106b291906143ba565b60405180910390f35b3480156106c757600080fd5b506106d0611690565b6040516106dd9190613f12565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190613925565b6116b9565b60405161071a919061439f565b60405180910390f35b34801561072f57600080fd5b506107386116d1565b6040516107459190613fbd565b60405180910390f35b61076860048036038101906107639190613925565b611763565b005b34801561077657600080fd5b50610791600480360381019061078c9190613802565b61191c565b005b34801561079f57600080fd5b506107a8611a9d565b6040516107b591906143ba565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190613925565b611aa7565b005b3480156107f357600080fd5b506107fc611b2d565b005b34801561080a57600080fd5b506108256004803603810190610820919061377f565b611e6f565b005b34801561083357600080fd5b5061084e60048036038101906108499190613925565b611ecb565b60405161085b9190613fbd565b60405180910390f35b34801561087057600080fd5b50610879611f72565b60405161088691906143ba565b60405180910390f35b34801561089b57600080fd5b506108a4611f78565b6040516108b191906143ba565b60405180910390f35b3480156108c657600080fd5b506108e160048036038101906108dc9190613925565b611f7e565b6040516108ee9190613fa2565b60405180910390f35b34801561090357600080fd5b5061091e600480360381019061091991906136bf565b611f9e565b60405161092b91906143ba565b60405180910390f35b34801561094057600080fd5b5061095b600480360381019061095691906136ec565b611fb0565b6040516109689190613fa2565b60405180910390f35b34801561097d57600080fd5b50610998600480360381019061099391906136bf565b612044565b005b3480156109a657600080fd5b506109af61213c565b6040516109bc91906143ba565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a9057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610af857507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b085750610b0782612142565b5b9050919050565b610b176121ac565b73ffffffffffffffffffffffffffffffffffffffff16610b35611690565b73ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b829061417f565b60405180910390fd5b610b9582826121b4565b5050565b606060028054610ba890614749565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490614749565b8015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b5050505050905090565b6000610c36826121d2565b610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c9061435f565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cbb8261147d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d239061421f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d4b6121ac565b73ffffffffffffffffffffffffffffffffffffffff161480610d7a5750610d7981610d746121ac565b611fb0565b5b610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906140ff565b60405180910390fd5b610dc48383836121e0565b505050565b6000600d54905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b60105481565b610e14838383612292565b505050565b610e216121ac565b73ffffffffffffffffffffffffffffffffffffffff16610e3f611690565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c9061417f565b60405180910390fd5b80600d8190555050565b600b5481565b6000610eb083611519565b8210610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890613fdf565b60405180910390fd5b6000610efb610df9565b905060008060005b83811015611061576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ff557806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104d578684141561103e57819550505050505061109d565b8380611049906147ac565b9450505b508080611059906147ac565b915050610f03565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906142ff565b60405180910390fd5b92915050565b6110ab6121ac565b73ffffffffffffffffffffffffffffffffffffffff166110c9611690565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061417f565b60405180910390fd5b60026009541415611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c9061431f565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff164760405161119390613efd565b60006040518083038185875af1925050503d80600081146111d0576040519150601f19603f3d011682016040523d82523d6000602084013e6111d5565b606091505b5050905080611219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112109061423f565b60405180910390fd5b506001600981905550565b61122c6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661124a611690565b73ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112979061417f565b60405180910390fd5b80600c8190555050565b6112c583838360405180602001604052806000815250611e6f565b505050565b6000601054905090565b60006112de610df9565b821061131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061405f565b60405180910390fd5b819050919050565b61132f6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661134d611690565b73ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061417f565b60405180910390fd5b80600e90805190602001906113b9929190613484565b5050565b6113c56121ac565b73ffffffffffffffffffffffffffffffffffffffff166113e3611690565b73ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114309061417f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006114888261284b565b600001519050919050565b61149b6121ac565b73ffffffffffffffffffffffffffffffffffffffff166114b9611690565b73ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115069061417f565b60405180910390fd5b8060108190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115819061411f565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61160a6121ac565b73ffffffffffffffffffffffffffffffffffffffff16611628611690565b73ffffffffffffffffffffffffffffffffffffffff161461167e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116759061417f565b60405180910390fd5b6116886000612a4e565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116c161350a565b6116ca8261284b565b9050919050565b6060600380546116e090614749565b80601f016020809104026020016040519081016040528092919081815260200182805461170c90614749565b80156117595780601f1061172e57610100808354040283529160200191611759565b820191906000526020600020905b81548152906001019060200180831161173c57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8906140df565b60405180910390fd5b600260105414611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d906140bf565b60405180910390fd5b600d54610c1c6118269190614605565b8161182f610df9565b61183991906144f0565b111561187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061413f565b60405180910390fd5b600a548111156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906142df565b60405180910390fd5b80600c546118cd9190614577565b34101561190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119069061427f565b60405180910390fd5b61191933826121b4565b50565b6119246121ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906141bf565b60405180910390fd5b806007600061199f6121ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a4c6121ac565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a919190613fa2565b60405180910390a35050565b6000600c54905090565b611aaf6121ac565b73ffffffffffffffffffffffffffffffffffffffff16611acd611690565b73ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a9061417f565b60405180910390fd5b80600a8190555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611b8a9190613f12565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190613952565b9050600060048211611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061403f565b60405180910390fd5b60005b82811015611df757600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5933856040518363ffffffff1660e01b8152600401611c8d929190613f79565b60206040518083038186803b158015611ca557600080fd5b505afa158015611cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdd9190613952565b815260200190815260200160002060009054906101000a900460ff16611de4578180611d08906147ac565b9250506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5933866040518363ffffffff1660e01b8152600401611d6e929190613f79565b60206040518083038186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbe9190613952565b815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611def906147ac565b915050611c24565b506005811015611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e33906141ff565b60405180910390fd5b6009811115611e5557611e503360026121b4565b611e6b565b6004811115611e6a57611e693360016121b4565b5b5b5050565b611e7a848484612292565b611e8684848484612b12565b611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc9061425f565b60405180910390fd5b50505050565b6060611ed6826121d2565b611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c9061419f565b60405180910390fd5b6000611f1f612ca9565b90506000815111611f3f5760405180602001604052806000815250611f6a565b80611f4984612d3b565b604051602001611f5a929190613ed9565b6040516020818303038152906040525b915050919050565b600a5481565b60085481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611fa982612e9c565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61204c6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661206a611690565b73ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b79061417f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212790613fff565b60405180910390fd5b61213981612a4e565b50565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6121ce828260405180602001604052806000815250612f85565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061229d8261284b565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166122c46121ac565b73ffffffffffffffffffffffffffffffffffffffff16148061232057506122e96121ac565b73ffffffffffffffffffffffffffffffffffffffff1661230884610c2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233c575061233b82600001516123366121ac565b611fb0565b5b90508061237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906141df565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e79061415f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124579061407f565b60405180910390fd5b61246d8585856001613465565b61247d60008484600001516121e0565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124eb91906145d1565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661258f91906144aa565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461269591906144f0565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127db5761270b816121d2565b156127da576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612843868686600161346b565b505050505050565b61285361350a565b61285c826121d2565b61289b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128929061401f565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106128ff5760017f0000000000000000000000000000000000000000000000000000000000000000846128f29190614605565b6128fc91906144f0565b90505b60008390505b818110612a0d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129f957809350505050612a49565b508080612a059061471f565b915050612905565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a409061433f565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b338473ffffffffffffffffffffffffffffffffffffffff16613471565b15612c9c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b5c6121ac565b8786866040518563ffffffff1660e01b8152600401612b7e9493929190613f2d565b602060405180830381600087803b158015612b9857600080fd5b505af1925050508015612bc957506040513d601f19601f82011682018060405250810190612bc691906138af565b60015b612c4c573d8060008114612bf9576040519150601f19603f3d011682016040523d82523d6000602084013e612bfe565b606091505b50600081511415612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b9061425f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ca1565b600190505b949350505050565b6060600e8054612cb890614749565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce490614749565b8015612d315780601f10612d0657610100808354040283529160200191612d31565b820191906000526020600020905b815481529060010190602001808311612d1457829003601f168201915b5050505050905090565b60606000821415612d83576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e97565b600082905060005b60008214612db5578080612d9e906147ac565b915050600a82612dae9190614546565b9150612d8b565b60008167ffffffffffffffff811115612dd157612dd06148e2565b5b6040519080825280601f01601f191660200182016040528015612e035781602001600182028036833780820191505090505b5090505b60008514612e9057600182612e1c9190614605565b9150600a85612e2b91906147f5565b6030612e3791906144f0565b60f81b818381518110612e4d57612e4c6148b3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e899190614546565b9450612e07565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f049061409f565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff3906142bf565b60405180910390fd5b613005816121d2565b15613045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303c9061429f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008311156130a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309f9061437f565b60405180910390fd5b6130b56000858386613465565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516131b291906144aa565b6fffffffffffffffffffffffffffffffff1681526020018583602001516131d991906144aa565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561344857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46133e86000888488612b12565b613427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341e9061425f565b60405180910390fd5b8180613432906147ac565b9250508080613440906147ac565b915050613377565b508060018190555061345d600087858861346b565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b82805461349090614749565b90600052602060002090601f0160209004810192826134b257600085556134f9565b82601f106134cb57805160ff19168380011785556134f9565b828001600101855582156134f9579182015b828111156134f85782518255916020019190600101906134dd565b5b5090506135069190613544565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561355d576000816000905550600101613545565b5090565b600061357461356f846143fa565b6143d5565b9050828152602081018484840111156135905761358f614916565b5b61359b8482856146dd565b509392505050565b60006135b66135b18461442b565b6143d5565b9050828152602081018484840111156135d2576135d1614916565b5b6135dd8482856146dd565b509392505050565b6000813590506135f4816150d9565b92915050565b600081359050613609816150f0565b92915050565b60008135905061361e81615107565b92915050565b60008151905061363381615107565b92915050565b600082601f83011261364e5761364d614911565b5b813561365e848260208601613561565b91505092915050565b600082601f83011261367c5761367b614911565b5b813561368c8482602086016135a3565b91505092915050565b6000813590506136a48161511e565b92915050565b6000815190506136b98161511e565b92915050565b6000602082840312156136d5576136d4614920565b5b60006136e3848285016135e5565b91505092915050565b6000806040838503121561370357613702614920565b5b6000613711858286016135e5565b9250506020613722858286016135e5565b9150509250929050565b60008060006060848603121561374557613744614920565b5b6000613753868287016135e5565b9350506020613764868287016135e5565b925050604061377586828701613695565b9150509250925092565b6000806000806080858703121561379957613798614920565b5b60006137a7878288016135e5565b94505060206137b8878288016135e5565b93505060406137c987828801613695565b925050606085013567ffffffffffffffff8111156137ea576137e961491b565b5b6137f687828801613639565b91505092959194509250565b6000806040838503121561381957613818614920565b5b6000613827858286016135e5565b9250506020613838858286016135fa565b9150509250929050565b6000806040838503121561385957613858614920565b5b6000613867858286016135e5565b925050602061387885828601613695565b9150509250929050565b60006020828403121561389857613897614920565b5b60006138a68482850161360f565b91505092915050565b6000602082840312156138c5576138c4614920565b5b60006138d384828501613624565b91505092915050565b6000602082840312156138f2576138f1614920565b5b600082013567ffffffffffffffff8111156139105761390f61491b565b5b61391c84828501613667565b91505092915050565b60006020828403121561393b5761393a614920565b5b600061394984828501613695565b91505092915050565b60006020828403121561396857613967614920565b5b6000613976848285016136aa565b91505092915050565b61398881614639565b82525050565b61399781614639565b82525050565b6139a68161464b565b82525050565b60006139b78261445c565b6139c18185614472565b93506139d18185602086016146ec565b6139da81614925565b840191505092915050565b60006139f082614467565b6139fa818561448e565b9350613a0a8185602086016146ec565b613a1381614925565b840191505092915050565b6000613a2982614467565b613a33818561449f565b9350613a438185602086016146ec565b80840191505092915050565b6000613a5c60228361448e565b9150613a6782614936565b604082019050919050565b6000613a7f60268361448e565b9150613a8a82614985565b604082019050919050565b6000613aa2602a8361448e565b9150613aad826149d4565b604082019050919050565b6000613ac5602d8361448e565b9150613ad082614a23565b604082019050919050565b6000613ae860238361448e565b9150613af382614a72565b604082019050919050565b6000613b0b60258361448e565b9150613b1682614ac1565b604082019050919050565b6000613b2e60318361448e565b9150613b3982614b10565b604082019050919050565b6000613b5160128361448e565b9150613b5c82614b5f565b602082019050919050565b6000613b74601e8361448e565b9150613b7f82614b88565b602082019050919050565b6000613b9760398361448e565b9150613ba282614bb1565b604082019050919050565b6000613bba602b8361448e565b9150613bc582614c00565b604082019050919050565b6000613bdd60128361448e565b9150613be882614c4f565b602082019050919050565b6000613c0060268361448e565b9150613c0b82614c78565b604082019050919050565b6000613c2360208361448e565b9150613c2e82614cc7565b602082019050919050565b6000613c46602f8361448e565b9150613c5182614cf0565b604082019050919050565b6000613c69601a8361448e565b9150613c7482614d3f565b602082019050919050565b6000613c8c60328361448e565b9150613c9782614d68565b604082019050919050565b6000613caf601d8361448e565b9150613cba82614db7565b602082019050919050565b6000613cd260228361448e565b9150613cdd82614de0565b604082019050919050565b6000613cf5600083614483565b9150613d0082614e2f565b600082019050919050565b6000613d1860108361448e565b9150613d2382614e32565b602082019050919050565b6000613d3b60338361448e565b9150613d4682614e5b565b604082019050919050565b6000613d5e60168361448e565b9150613d6982614eaa565b602082019050919050565b6000613d81601d8361448e565b9150613d8c82614ed3565b602082019050919050565b6000613da460218361448e565b9150613daf82614efc565b604082019050919050565b6000613dc760168361448e565b9150613dd282614f4b565b602082019050919050565b6000613dea602e8361448e565b9150613df582614f74565b604082019050919050565b6000613e0d601f8361448e565b9150613e1882614fc3565b602082019050919050565b6000613e30602f8361448e565b9150613e3b82614fec565b604082019050919050565b6000613e53602d8361448e565b9150613e5e8261503b565b604082019050919050565b6000613e7660228361448e565b9150613e818261508a565b604082019050919050565b604082016000820151613ea2600085018261397f565b506020820151613eb56020850182613eca565b50505050565b613ec4816146bf565b82525050565b613ed3816146c9565b82525050565b6000613ee58285613a1e565b9150613ef18284613a1e565b91508190509392505050565b6000613f0882613ce8565b9150819050919050565b6000602082019050613f27600083018461398e565b92915050565b6000608082019050613f42600083018761398e565b613f4f602083018661398e565b613f5c6040830185613ebb565b8181036060830152613f6e81846139ac565b905095945050505050565b6000604082019050613f8e600083018561398e565b613f9b6020830184613ebb565b9392505050565b6000602082019050613fb7600083018461399d565b92915050565b60006020820190508181036000830152613fd781846139e5565b905092915050565b60006020820190508181036000830152613ff881613a4f565b9050919050565b6000602082019050818103600083015261401881613a72565b9050919050565b6000602082019050818103600083015261403881613a95565b9050919050565b6000602082019050818103600083015261405881613ab8565b9050919050565b6000602082019050818103600083015261407881613adb565b9050919050565b6000602082019050818103600083015261409881613afe565b9050919050565b600060208201905081810360008301526140b881613b21565b9050919050565b600060208201905081810360008301526140d881613b44565b9050919050565b600060208201905081810360008301526140f881613b67565b9050919050565b6000602082019050818103600083015261411881613b8a565b9050919050565b6000602082019050818103600083015261413881613bad565b9050919050565b6000602082019050818103600083015261415881613bd0565b9050919050565b6000602082019050818103600083015261417881613bf3565b9050919050565b6000602082019050818103600083015261419881613c16565b9050919050565b600060208201905081810360008301526141b881613c39565b9050919050565b600060208201905081810360008301526141d881613c5c565b9050919050565b600060208201905081810360008301526141f881613c7f565b9050919050565b6000602082019050818103600083015261421881613ca2565b9050919050565b6000602082019050818103600083015261423881613cc5565b9050919050565b6000602082019050818103600083015261425881613d0b565b9050919050565b6000602082019050818103600083015261427881613d2e565b9050919050565b6000602082019050818103600083015261429881613d51565b9050919050565b600060208201905081810360008301526142b881613d74565b9050919050565b600060208201905081810360008301526142d881613d97565b9050919050565b600060208201905081810360008301526142f881613dba565b9050919050565b6000602082019050818103600083015261431881613ddd565b9050919050565b6000602082019050818103600083015261433881613e00565b9050919050565b6000602082019050818103600083015261435881613e23565b9050919050565b6000602082019050818103600083015261437881613e46565b9050919050565b6000602082019050818103600083015261439881613e69565b9050919050565b60006040820190506143b46000830184613e8c565b92915050565b60006020820190506143cf6000830184613ebb565b92915050565b60006143df6143f0565b90506143eb828261477b565b919050565b6000604051905090565b600067ffffffffffffffff821115614415576144146148e2565b5b61441e82614925565b9050602081019050919050565b600067ffffffffffffffff821115614446576144456148e2565b5b61444f82614925565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006144b582614683565b91506144c083614683565b9250826fffffffffffffffffffffffffffffffff038211156144e5576144e4614826565b5b828201905092915050565b60006144fb826146bf565b9150614506836146bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561453b5761453a614826565b5b828201905092915050565b6000614551826146bf565b915061455c836146bf565b92508261456c5761456b614855565b5b828204905092915050565b6000614582826146bf565b915061458d836146bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145c6576145c5614826565b5b828202905092915050565b60006145dc82614683565b91506145e783614683565b9250828210156145fa576145f9614826565b5b828203905092915050565b6000614610826146bf565b915061461b836146bf565b92508282101561462e5761462d614826565b5b828203905092915050565b60006146448261469f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561470a5780820151818401526020810190506146ef565b83811115614719576000848401525b50505050565b600061472a826146bf565b9150600082141561473e5761473d614826565b5b600182039050919050565b6000600282049050600182168061476157607f821691505b6020821081141561477557614774614884565b5b50919050565b61478482614925565b810181811067ffffffffffffffff821117156147a3576147a26148e2565b5b80604052505050565b60006147b7826146bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147ea576147e9614826565b5b600182019050919050565b6000614800826146bf565b915061480b836146bf565b92508261481b5761481a614855565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f52657175697265206174206c65617374203520756e636c61696d65642042616260008201527f7920446f6f646c65204170657300000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e6f7420656c69676961626c6520666f72206672656520636c61696d73000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6150e281614639565b81146150ed57600080fd5b50565b6150f98161464b565b811461510457600080fd5b50565b61511081614657565b811461511b57600080fd5b50565b615127816146bf565b811461513257600080fd5b5056fea264697066735822122038c345f5e839dca45d0a76b8d028806832526ec1696e7ebcd4d65ea9b969420c64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102515760003560e01c806369ba1a7511610139578063af7b26e9116100b6578063d7224ba01161007a578063d7224ba01461088f578063d8fb80e5146108ba578063dc33e681146108f7578063e985e9c514610934578063f2fde38b14610971578063fe60d12c1461099a57610251565b8063af7b26e9146107be578063b104d2d6146107e7578063b88d4fde146107fe578063c87b56dd14610827578063d04950a11461086457610251565b80639231ab2a116100fd5780639231ab2a146106e657806395d89b4114610723578063a0712d681461074e578063a22cb4651461076a578063a7f93ebd1461079357610251565b806369ba1a751461061357806370a082311461063c578063715018a6146106795780638d859f3e146106905780638da5cb5b146106bb57610251565b80632d6e71b6116101d257806342842e0e1161019657806342842e0e146104f35780634e69d5601461051c5780634f6ccce71461054757806355f804b314610584578063561e1c07146105ad5780636352211e146105d657610251565b80632d6e71b6146104225780632f2ffc571461044b5780632f745c59146104765780633ccfd60b146104b35780633fd17366146104ca57610251565b80630d9639ba116102195780630d9639ba1461034d5780630fab699d1461037857806318160ddd146103a3578063200d2ed2146103ce57806323b872dd146103f957610251565b806301ffc9a714610256578063050225ea1461029357806306fdde03146102bc578063081812fc146102e7578063095ea7b314610324575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190613882565b6109c5565b60405161028a9190613fa2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190613842565b610b0f565b005b3480156102c857600080fd5b506102d1610b99565b6040516102de9190613fbd565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613925565b610c2b565b60405161031b9190613f12565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613842565b610cb0565b005b34801561035957600080fd5b50610362610dc9565b60405161036f91906143ba565b60405180910390f35b34801561038457600080fd5b5061038d610dd3565b60405161039a9190613f12565b60405180910390f35b3480156103af57600080fd5b506103b8610df9565b6040516103c591906143ba565b60405180910390f35b3480156103da57600080fd5b506103e3610e03565b6040516103f091906143ba565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061372c565b610e09565b005b34801561042e57600080fd5b5061044960048036038101906104449190613925565b610e19565b005b34801561045757600080fd5b50610460610e9f565b60405161046d91906143ba565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190613842565b610ea5565b6040516104aa91906143ba565b60405180910390f35b3480156104bf57600080fd5b506104c86110a3565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190613925565b611224565b005b3480156104ff57600080fd5b5061051a6004803603810190610515919061372c565b6112aa565b005b34801561052857600080fd5b506105316112ca565b60405161053e91906143ba565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190613925565b6112d4565b60405161057b91906143ba565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906138dc565b611327565b005b3480156105b957600080fd5b506105d460048036038101906105cf91906136bf565b6113bd565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190613925565b61147d565b60405161060a9190613f12565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613925565b611493565b005b34801561064857600080fd5b50610663600480360381019061065e91906136bf565b611519565b60405161067091906143ba565b60405180910390f35b34801561068557600080fd5b5061068e611602565b005b34801561069c57600080fd5b506106a561168a565b6040516106b291906143ba565b60405180910390f35b3480156106c757600080fd5b506106d0611690565b6040516106dd9190613f12565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190613925565b6116b9565b60405161071a919061439f565b60405180910390f35b34801561072f57600080fd5b506107386116d1565b6040516107459190613fbd565b60405180910390f35b61076860048036038101906107639190613925565b611763565b005b34801561077657600080fd5b50610791600480360381019061078c9190613802565b61191c565b005b34801561079f57600080fd5b506107a8611a9d565b6040516107b591906143ba565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190613925565b611aa7565b005b3480156107f357600080fd5b506107fc611b2d565b005b34801561080a57600080fd5b506108256004803603810190610820919061377f565b611e6f565b005b34801561083357600080fd5b5061084e60048036038101906108499190613925565b611ecb565b60405161085b9190613fbd565b60405180910390f35b34801561087057600080fd5b50610879611f72565b60405161088691906143ba565b60405180910390f35b34801561089b57600080fd5b506108a4611f78565b6040516108b191906143ba565b60405180910390f35b3480156108c657600080fd5b506108e160048036038101906108dc9190613925565b611f7e565b6040516108ee9190613fa2565b60405180910390f35b34801561090357600080fd5b5061091e600480360381019061091991906136bf565b611f9e565b60405161092b91906143ba565b60405180910390f35b34801561094057600080fd5b5061095b600480360381019061095691906136ec565b611fb0565b6040516109689190613fa2565b60405180910390f35b34801561097d57600080fd5b50610998600480360381019061099391906136bf565b612044565b005b3480156109a657600080fd5b506109af61213c565b6040516109bc91906143ba565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a9057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610af857507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b085750610b0782612142565b5b9050919050565b610b176121ac565b73ffffffffffffffffffffffffffffffffffffffff16610b35611690565b73ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b829061417f565b60405180910390fd5b610b9582826121b4565b5050565b606060028054610ba890614749565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490614749565b8015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b5050505050905090565b6000610c36826121d2565b610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c9061435f565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cbb8261147d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d239061421f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d4b6121ac565b73ffffffffffffffffffffffffffffffffffffffff161480610d7a5750610d7981610d746121ac565b611fb0565b5b610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906140ff565b60405180910390fd5b610dc48383836121e0565b505050565b6000600d54905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b60105481565b610e14838383612292565b505050565b610e216121ac565b73ffffffffffffffffffffffffffffffffffffffff16610e3f611690565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c9061417f565b60405180910390fd5b80600d8190555050565b600b5481565b6000610eb083611519565b8210610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890613fdf565b60405180910390fd5b6000610efb610df9565b905060008060005b83811015611061576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ff557806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104d578684141561103e57819550505050505061109d565b8380611049906147ac565b9450505b508080611059906147ac565b915050610f03565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906142ff565b60405180910390fd5b92915050565b6110ab6121ac565b73ffffffffffffffffffffffffffffffffffffffff166110c9611690565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061417f565b60405180910390fd5b60026009541415611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c9061431f565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff164760405161119390613efd565b60006040518083038185875af1925050503d80600081146111d0576040519150601f19603f3d011682016040523d82523d6000602084013e6111d5565b606091505b5050905080611219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112109061423f565b60405180910390fd5b506001600981905550565b61122c6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661124a611690565b73ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112979061417f565b60405180910390fd5b80600c8190555050565b6112c583838360405180602001604052806000815250611e6f565b505050565b6000601054905090565b60006112de610df9565b821061131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061405f565b60405180910390fd5b819050919050565b61132f6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661134d611690565b73ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061417f565b60405180910390fd5b80600e90805190602001906113b9929190613484565b5050565b6113c56121ac565b73ffffffffffffffffffffffffffffffffffffffff166113e3611690565b73ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114309061417f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006114888261284b565b600001519050919050565b61149b6121ac565b73ffffffffffffffffffffffffffffffffffffffff166114b9611690565b73ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115069061417f565b60405180910390fd5b8060108190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115819061411f565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61160a6121ac565b73ffffffffffffffffffffffffffffffffffffffff16611628611690565b73ffffffffffffffffffffffffffffffffffffffff161461167e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116759061417f565b60405180910390fd5b6116886000612a4e565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116c161350a565b6116ca8261284b565b9050919050565b6060600380546116e090614749565b80601f016020809104026020016040519081016040528092919081815260200182805461170c90614749565b80156117595780601f1061172e57610100808354040283529160200191611759565b820191906000526020600020905b81548152906001019060200180831161173c57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8906140df565b60405180910390fd5b600260105414611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d906140bf565b60405180910390fd5b600d54610c1c6118269190614605565b8161182f610df9565b61183991906144f0565b111561187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061413f565b60405180910390fd5b600a548111156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906142df565b60405180910390fd5b80600c546118cd9190614577565b34101561190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119069061427f565b60405180910390fd5b61191933826121b4565b50565b6119246121ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906141bf565b60405180910390fd5b806007600061199f6121ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a4c6121ac565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a919190613fa2565b60405180910390a35050565b6000600c54905090565b611aaf6121ac565b73ffffffffffffffffffffffffffffffffffffffff16611acd611690565b73ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a9061417f565b60405180910390fd5b80600a8190555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611b8a9190613f12565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190613952565b9050600060048211611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061403f565b60405180910390fd5b60005b82811015611df757600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5933856040518363ffffffff1660e01b8152600401611c8d929190613f79565b60206040518083038186803b158015611ca557600080fd5b505afa158015611cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdd9190613952565b815260200190815260200160002060009054906101000a900460ff16611de4578180611d08906147ac565b9250506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5933866040518363ffffffff1660e01b8152600401611d6e929190613f79565b60206040518083038186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbe9190613952565b815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611def906147ac565b915050611c24565b506005811015611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e33906141ff565b60405180910390fd5b6009811115611e5557611e503360026121b4565b611e6b565b6004811115611e6a57611e693360016121b4565b5b5b5050565b611e7a848484612292565b611e8684848484612b12565b611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc9061425f565b60405180910390fd5b50505050565b6060611ed6826121d2565b611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c9061419f565b60405180910390fd5b6000611f1f612ca9565b90506000815111611f3f5760405180602001604052806000815250611f6a565b80611f4984612d3b565b604051602001611f5a929190613ed9565b6040516020818303038152906040525b915050919050565b600a5481565b60085481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611fa982612e9c565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61204c6121ac565b73ffffffffffffffffffffffffffffffffffffffff1661206a611690565b73ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b79061417f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212790613fff565b60405180910390fd5b61213981612a4e565b50565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6121ce828260405180602001604052806000815250612f85565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061229d8261284b565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166122c46121ac565b73ffffffffffffffffffffffffffffffffffffffff16148061232057506122e96121ac565b73ffffffffffffffffffffffffffffffffffffffff1661230884610c2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233c575061233b82600001516123366121ac565b611fb0565b5b90508061237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906141df565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e79061415f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124579061407f565b60405180910390fd5b61246d8585856001613465565b61247d60008484600001516121e0565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124eb91906145d1565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661258f91906144aa565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461269591906144f0565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127db5761270b816121d2565b156127da576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612843868686600161346b565b505050505050565b61285361350a565b61285c826121d2565b61289b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128929061401f565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000583106128ff5760017f0000000000000000000000000000000000000000000000000000000000000005846128f29190614605565b6128fc91906144f0565b90505b60008390505b818110612a0d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129f957809350505050612a49565b508080612a059061471f565b915050612905565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a409061433f565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b338473ffffffffffffffffffffffffffffffffffffffff16613471565b15612c9c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b5c6121ac565b8786866040518563ffffffff1660e01b8152600401612b7e9493929190613f2d565b602060405180830381600087803b158015612b9857600080fd5b505af1925050508015612bc957506040513d601f19601f82011682018060405250810190612bc691906138af565b60015b612c4c573d8060008114612bf9576040519150601f19603f3d011682016040523d82523d6000602084013e612bfe565b606091505b50600081511415612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b9061425f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ca1565b600190505b949350505050565b6060600e8054612cb890614749565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce490614749565b8015612d315780601f10612d0657610100808354040283529160200191612d31565b820191906000526020600020905b815481529060010190602001808311612d1457829003601f168201915b5050505050905090565b60606000821415612d83576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e97565b600082905060005b60008214612db5578080612d9e906147ac565b915050600a82612dae9190614546565b9150612d8b565b60008167ffffffffffffffff811115612dd157612dd06148e2565b5b6040519080825280601f01601f191660200182016040528015612e035781602001600182028036833780820191505090505b5090505b60008514612e9057600182612e1c9190614605565b9150600a85612e2b91906147f5565b6030612e3791906144f0565b60f81b818381518110612e4d57612e4c6148b3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e899190614546565b9450612e07565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f049061409f565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff3906142bf565b60405180910390fd5b613005816121d2565b15613045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303c9061429f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000058311156130a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309f9061437f565b60405180910390fd5b6130b56000858386613465565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516131b291906144aa565b6fffffffffffffffffffffffffffffffff1681526020018583602001516131d991906144aa565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561344857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46133e86000888488612b12565b613427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341e9061425f565b60405180910390fd5b8180613432906147ac565b9250508080613440906147ac565b915050613377565b508060018190555061345d600087858861346b565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b82805461349090614749565b90600052602060002090601f0160209004810192826134b257600085556134f9565b82601f106134cb57805160ff19168380011785556134f9565b828001600101855582156134f9579182015b828111156134f85782518255916020019190600101906134dd565b5b5090506135069190613544565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561355d576000816000905550600101613545565b5090565b600061357461356f846143fa565b6143d5565b9050828152602081018484840111156135905761358f614916565b5b61359b8482856146dd565b509392505050565b60006135b66135b18461442b565b6143d5565b9050828152602081018484840111156135d2576135d1614916565b5b6135dd8482856146dd565b509392505050565b6000813590506135f4816150d9565b92915050565b600081359050613609816150f0565b92915050565b60008135905061361e81615107565b92915050565b60008151905061363381615107565b92915050565b600082601f83011261364e5761364d614911565b5b813561365e848260208601613561565b91505092915050565b600082601f83011261367c5761367b614911565b5b813561368c8482602086016135a3565b91505092915050565b6000813590506136a48161511e565b92915050565b6000815190506136b98161511e565b92915050565b6000602082840312156136d5576136d4614920565b5b60006136e3848285016135e5565b91505092915050565b6000806040838503121561370357613702614920565b5b6000613711858286016135e5565b9250506020613722858286016135e5565b9150509250929050565b60008060006060848603121561374557613744614920565b5b6000613753868287016135e5565b9350506020613764868287016135e5565b925050604061377586828701613695565b9150509250925092565b6000806000806080858703121561379957613798614920565b5b60006137a7878288016135e5565b94505060206137b8878288016135e5565b93505060406137c987828801613695565b925050606085013567ffffffffffffffff8111156137ea576137e961491b565b5b6137f687828801613639565b91505092959194509250565b6000806040838503121561381957613818614920565b5b6000613827858286016135e5565b9250506020613838858286016135fa565b9150509250929050565b6000806040838503121561385957613858614920565b5b6000613867858286016135e5565b925050602061387885828601613695565b9150509250929050565b60006020828403121561389857613897614920565b5b60006138a68482850161360f565b91505092915050565b6000602082840312156138c5576138c4614920565b5b60006138d384828501613624565b91505092915050565b6000602082840312156138f2576138f1614920565b5b600082013567ffffffffffffffff8111156139105761390f61491b565b5b61391c84828501613667565b91505092915050565b60006020828403121561393b5761393a614920565b5b600061394984828501613695565b91505092915050565b60006020828403121561396857613967614920565b5b6000613976848285016136aa565b91505092915050565b61398881614639565b82525050565b61399781614639565b82525050565b6139a68161464b565b82525050565b60006139b78261445c565b6139c18185614472565b93506139d18185602086016146ec565b6139da81614925565b840191505092915050565b60006139f082614467565b6139fa818561448e565b9350613a0a8185602086016146ec565b613a1381614925565b840191505092915050565b6000613a2982614467565b613a33818561449f565b9350613a438185602086016146ec565b80840191505092915050565b6000613a5c60228361448e565b9150613a6782614936565b604082019050919050565b6000613a7f60268361448e565b9150613a8a82614985565b604082019050919050565b6000613aa2602a8361448e565b9150613aad826149d4565b604082019050919050565b6000613ac5602d8361448e565b9150613ad082614a23565b604082019050919050565b6000613ae860238361448e565b9150613af382614a72565b604082019050919050565b6000613b0b60258361448e565b9150613b1682614ac1565b604082019050919050565b6000613b2e60318361448e565b9150613b3982614b10565b604082019050919050565b6000613b5160128361448e565b9150613b5c82614b5f565b602082019050919050565b6000613b74601e8361448e565b9150613b7f82614b88565b602082019050919050565b6000613b9760398361448e565b9150613ba282614bb1565b604082019050919050565b6000613bba602b8361448e565b9150613bc582614c00565b604082019050919050565b6000613bdd60128361448e565b9150613be882614c4f565b602082019050919050565b6000613c0060268361448e565b9150613c0b82614c78565b604082019050919050565b6000613c2360208361448e565b9150613c2e82614cc7565b602082019050919050565b6000613c46602f8361448e565b9150613c5182614cf0565b604082019050919050565b6000613c69601a8361448e565b9150613c7482614d3f565b602082019050919050565b6000613c8c60328361448e565b9150613c9782614d68565b604082019050919050565b6000613caf601d8361448e565b9150613cba82614db7565b602082019050919050565b6000613cd260228361448e565b9150613cdd82614de0565b604082019050919050565b6000613cf5600083614483565b9150613d0082614e2f565b600082019050919050565b6000613d1860108361448e565b9150613d2382614e32565b602082019050919050565b6000613d3b60338361448e565b9150613d4682614e5b565b604082019050919050565b6000613d5e60168361448e565b9150613d6982614eaa565b602082019050919050565b6000613d81601d8361448e565b9150613d8c82614ed3565b602082019050919050565b6000613da460218361448e565b9150613daf82614efc565b604082019050919050565b6000613dc760168361448e565b9150613dd282614f4b565b602082019050919050565b6000613dea602e8361448e565b9150613df582614f74565b604082019050919050565b6000613e0d601f8361448e565b9150613e1882614fc3565b602082019050919050565b6000613e30602f8361448e565b9150613e3b82614fec565b604082019050919050565b6000613e53602d8361448e565b9150613e5e8261503b565b604082019050919050565b6000613e7660228361448e565b9150613e818261508a565b604082019050919050565b604082016000820151613ea2600085018261397f565b506020820151613eb56020850182613eca565b50505050565b613ec4816146bf565b82525050565b613ed3816146c9565b82525050565b6000613ee58285613a1e565b9150613ef18284613a1e565b91508190509392505050565b6000613f0882613ce8565b9150819050919050565b6000602082019050613f27600083018461398e565b92915050565b6000608082019050613f42600083018761398e565b613f4f602083018661398e565b613f5c6040830185613ebb565b8181036060830152613f6e81846139ac565b905095945050505050565b6000604082019050613f8e600083018561398e565b613f9b6020830184613ebb565b9392505050565b6000602082019050613fb7600083018461399d565b92915050565b60006020820190508181036000830152613fd781846139e5565b905092915050565b60006020820190508181036000830152613ff881613a4f565b9050919050565b6000602082019050818103600083015261401881613a72565b9050919050565b6000602082019050818103600083015261403881613a95565b9050919050565b6000602082019050818103600083015261405881613ab8565b9050919050565b6000602082019050818103600083015261407881613adb565b9050919050565b6000602082019050818103600083015261409881613afe565b9050919050565b600060208201905081810360008301526140b881613b21565b9050919050565b600060208201905081810360008301526140d881613b44565b9050919050565b600060208201905081810360008301526140f881613b67565b9050919050565b6000602082019050818103600083015261411881613b8a565b9050919050565b6000602082019050818103600083015261413881613bad565b9050919050565b6000602082019050818103600083015261415881613bd0565b9050919050565b6000602082019050818103600083015261417881613bf3565b9050919050565b6000602082019050818103600083015261419881613c16565b9050919050565b600060208201905081810360008301526141b881613c39565b9050919050565b600060208201905081810360008301526141d881613c5c565b9050919050565b600060208201905081810360008301526141f881613c7f565b9050919050565b6000602082019050818103600083015261421881613ca2565b9050919050565b6000602082019050818103600083015261423881613cc5565b9050919050565b6000602082019050818103600083015261425881613d0b565b9050919050565b6000602082019050818103600083015261427881613d2e565b9050919050565b6000602082019050818103600083015261429881613d51565b9050919050565b600060208201905081810360008301526142b881613d74565b9050919050565b600060208201905081810360008301526142d881613d97565b9050919050565b600060208201905081810360008301526142f881613dba565b9050919050565b6000602082019050818103600083015261431881613ddd565b9050919050565b6000602082019050818103600083015261433881613e00565b9050919050565b6000602082019050818103600083015261435881613e23565b9050919050565b6000602082019050818103600083015261437881613e46565b9050919050565b6000602082019050818103600083015261439881613e69565b9050919050565b60006040820190506143b46000830184613e8c565b92915050565b60006020820190506143cf6000830184613ebb565b92915050565b60006143df6143f0565b90506143eb828261477b565b919050565b6000604051905090565b600067ffffffffffffffff821115614415576144146148e2565b5b61441e82614925565b9050602081019050919050565b600067ffffffffffffffff821115614446576144456148e2565b5b61444f82614925565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006144b582614683565b91506144c083614683565b9250826fffffffffffffffffffffffffffffffff038211156144e5576144e4614826565b5b828201905092915050565b60006144fb826146bf565b9150614506836146bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561453b5761453a614826565b5b828201905092915050565b6000614551826146bf565b915061455c836146bf565b92508261456c5761456b614855565b5b828204905092915050565b6000614582826146bf565b915061458d836146bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145c6576145c5614826565b5b828202905092915050565b60006145dc82614683565b91506145e783614683565b9250828210156145fa576145f9614826565b5b828203905092915050565b6000614610826146bf565b915061461b836146bf565b92508282101561462e5761462d614826565b5b828203905092915050565b60006146448261469f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561470a5780820151818401526020810190506146ef565b83811115614719576000848401525b50505050565b600061472a826146bf565b9150600082141561473e5761473d614826565b5b600182039050919050565b6000600282049050600182168061476157607f821691505b6020821081141561477557614774614884565b5b50919050565b61478482614925565b810181811067ffffffffffffffff821117156147a3576147a26148e2565b5b80604052505050565b60006147b7826146bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147ea576147e9614826565b5b600182019050919050565b6000614800826146bf565b915061480b836146bf565b92508261481b5761481a614855565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f52657175697265206174206c65617374203520756e636c61696d65642042616260008201527f7920446f6f646c65204170657300000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e6f7420656c69676961626c6520666f72206672656520636c61696d73000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6150e281614639565b81146150ed57600080fd5b50565b6150f98161464b565b811461510457600080fd5b50565b61511081614657565b811461511b57600080fd5b50565b615127816146bf565b811461513257600080fd5b5056fea264697066735822122038c345f5e839dca45d0a76b8d028806832526ec1696e7ebcd4d65ea9b969420c64736f6c63430008070033

Deployed Bytecode Sourcemap

19992:3842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11309:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23751:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12881:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14082:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23589:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20635:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10279:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20575:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14765:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23509:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20167:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10560:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22958:176;;;;;;;;;;;;;:::i;:::-;;23138:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14912:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23674:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10378:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22482:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20945:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12758:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23433:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11684:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2768:103;;;;;;;;;;;;;:::i;:::-;;20245:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22807:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12980:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21730:397;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14291:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23240:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23327:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21024:700;;;;;;;;;;;;;:::i;:::-;;15074:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22134:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20088:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18204:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20525;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22696:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14572:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2880:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20299:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11309:370;11436:4;11481:25;11466:40;;;:11;:40;;;;:99;;;;11532:33;11517:48;;;:11;:48;;;;11466:99;:160;;;;11591:35;11576:50;;;:11;:50;;;;11466:160;:207;;;;11637:36;11661:11;11637:23;:36::i;:::-;11466:207;11452:221;;11309:370;;;:::o;23751:80::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23810:15:::1;23820:1;23823;23810:9;:15::i;:::-;23751:80:::0;;:::o;12881:94::-;12935:13;12964:5;12957:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:94;:::o;14082:204::-;14150:7;14174:16;14182:7;14174;:16::i;:::-;14166:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14256:15;:24;14272:7;14256:24;;;;;;;;;;;;;;;;;;;;;14249:31;;14082:204;;;:::o;13698:379::-;13767:13;13783:24;13799:7;13783:15;:24::i;:::-;13767:40;;13828:5;13822:11;;:2;:11;;;;13814:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13913:5;13897:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13922:37;13939:5;13946:12;:10;:12::i;:::-;13922:16;:37::i;:::-;13897:62;13881:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;14043:28;14052:2;14056:7;14065:5;14043:8;:28::i;:::-;13760:317;13698:379;;:::o;23589:81::-;23632:7;23656:8;;23649:15;;23589:81;:::o;20635:69::-;;;;;;;;;;;;;:::o;10279:94::-;10332:7;10355:12;;10348:19;;10279:94;:::o;20575:22::-;;;;:::o;14765:142::-;14873:28;14883:4;14889:2;14893:7;14873:9;:28::i;:::-;14765:142;;;:::o;23509:76::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23578:1:::1;23567:8;:12;;;;23509:76:::0;:::o;20167:34::-;;;;:::o;10560:744::-;10669:7;10704:16;10714:5;10704:9;:16::i;:::-;10696:5;:24;10688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10766:22;10791:13;:11;:13::i;:::-;10766:38;;10811:19;10841:25;10891:9;10886:350;10910:14;10906:1;:18;10886:350;;;10940:31;10974:11;:14;10986:1;10974:14;;;;;;;;;;;10940:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11027:1;11001:28;;:9;:14;;;:28;;;10997:89;;11062:9;:14;;;11042:34;;10997:89;11119:5;11098:26;;:17;:26;;;11094:135;;;11156:5;11141:11;:20;11137:59;;;11183:1;11176:8;;;;;;;;;11137:59;11206:13;;;;;:::i;:::-;;;;11094:135;10931:305;10926:3;;;;;:::i;:::-;;;;10886:350;;;;11242:56;;;;;;;;;;:::i;:::-;;;;;;;;10560:744;;;;;:::o;22958:176::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;327:1:::1;473:7;;:19;;465:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;327:1;534:7;:18;;;;23018:12:::2;23036:10;:15;;23059:21;23036:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23017:68;;;23100:7;23092:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;23010:124;283:1:::1;577:7;:22;;;;22958:176::o:0;23138:98::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23221:9:::1;23213:5;:17;;;;23138:98:::0;:::o;14912:157::-;15024:39;15041:4;15047:2;15051:7;15024:39;;;;;;;;;;;;:16;:39::i;:::-;14912:157;;;:::o;23674:73::-;23714:4;23735:6;;23728:13;;23674:73;:::o;10378:177::-;10445:7;10477:13;:11;:13::i;:::-;10469:5;:21;10461:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10544:5;10537:12;;10378:177;;;:::o;22482:98::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22567:7:::1;22551:13;:23;;;;;;;;;;;;:::i;:::-;;22482:98:::0;:::o;20945:73::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21012:1:::1;21000:9;;:13;;;;;;;;;;;;;;;;;;20945:73:::0;:::o;12758:118::-;12822:7;12845:20;12857:7;12845:11;:20::i;:::-;:25;;;12838:32;;12758:118;;;:::o;23433:72::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23498:1:::1;23489:6;:10;;;;23433:72:::0;:::o;11684:211::-;11748:7;11789:1;11772:19;;:5;:19;;;;11764:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11861:12;:19;11874:5;11861:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11853:36;;11846:43;;11684:211;;;:::o;2768:103::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2833:30:::1;2860:1;2833:18;:30::i;:::-;2768:103::o:0;20245:34::-;;;;:::o;2545:87::-;2591:7;2618:6;;;;;;;;;;;2611:13;;2545:87;:::o;22807:147::-;22888:21;;:::i;:::-;22928:20;22940:7;22928:11;:20::i;:::-;22921:27;;22807:147;;;:::o;12980:98::-;13036:13;13065:7;13058:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12980:98;:::o;21730:397::-;20883:10;20870:23;;:9;:23;;;20862:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21818:1:::1;21808:6;;:11;21799:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;21909:8;;20383:4;21886:31;;;;:::i;:::-;21874:8;21858:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:59;;21850:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;21969:17;;21957:8;:29;;21947:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22048:8;22040:5;;:16;;;;:::i;:::-;22027:9;:29;;22019:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22090:31;22100:10;22112:8;22090:9;:31::i;:::-;21730:397:::0;:::o;14291:274::-;14394:12;:10;:12::i;:::-;14382:24;;:8;:24;;;;14374:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:8;14446:18;:32;14465:12;:10;:12::i;:::-;14446:32;;;;;;;;;;;;;;;:42;14479:8;14446:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14540:8;14511:48;;14526:12;:10;:12::i;:::-;14511:48;;;14550:8;14511:48;;;;;;:::i;:::-;;;;;;;;14291:274;;:::o;23240:83::-;23284:7;23312:5;;23305:12;;23240:83;:::o;23327:102::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23422:1:::1;23402:17;:21;;;;23327:102:::0;:::o;21024:700::-;21063:13;21097:9;;;;;;;;;;;21079:38;;;21118:10;21079:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21063:66;;21140:10;21179:1;21171:5;:9;21163:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21246:13;21241:311;21273:5;21265;:13;21241:311;;;21308:14;:83;21341:9;;;;;;;;;;;21323:48;;;21372:10;21384:5;21323:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21308:83;;;;;;;;;;;;;;;;;;;;;21304:237;;21411:7;;;;;:::i;:::-;;;;21521:4;21437:14;:83;21470:9;;;;;;;;;;;21452:48;;;21501:10;21513:5;21452:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21437:83;;;;;;;;;;;;:88;;;;;;;;;;;;;;;;;;21304:237;21280:7;;;;;:::i;:::-;;;;21241:311;;;;21579:1;21570:5;:10;;21562:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:1;21627:5;:9;21624:92;;;21638:24;21648:10;21660:1;21638:9;:24::i;:::-;21624:92;;;21689:1;21681:5;:9;21678:38;;;21692:24;21702:10;21714:1;21692:9;:24::i;:::-;21678:38;21624:92;21052:672;;21024:700::o;15074:311::-;15211:28;15221:4;15227:2;15231:7;15211:9;:28::i;:::-;15262:48;15285:4;15291:2;15295:7;15304:5;15262:22;:48::i;:::-;15246:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;15074:311;;;;:::o;22134:342::-;22207:13;22237:16;22245:7;22237;:16::i;:::-;22229:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22311:21;22335:10;:8;:10::i;:::-;22311:34;;22390:1;22372:7;22366:21;:25;:104;;;;;;;;;;;;;;;;;22427:7;22436:18;:7;:16;:18::i;:::-;22410:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22366:104;22352:118;;;22134:342;;;:::o;20088:37::-;;;;:::o;18204:43::-;;;;:::o;20525:::-;;;;;;;;;;;;;;;;;;;;;;:::o;22696:107::-;22754:7;22777:20;22791:5;22777:13;:20::i;:::-;22770:27;;22696:107;;;:::o;14572:186::-;14694:4;14717:18;:25;14736:5;14717:25;;;;;;;;;;;;;;;:35;14743:8;14717:35;;;;;;;;;;;;;;;;;;;;;;;;;14710:42;;14572:186;;;;:::o;2880:201::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2989:1:::1;2969:22;;:8;:22;;;;2961:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3045:28;3064:8;3045:18;:28::i;:::-;2880:201:::0;:::o;20299:29::-;;;;:::o;7198:157::-;7283:4;7322:25;7307:40;;;:11;:40;;;;7300:47;;7198:157;;;:::o;2088:98::-;2141:7;2168:10;2161:17;;2088:98;:::o;15501:::-;15566:27;15576:2;15580:8;15566:27;;;;;;;;;;;;:9;:27::i;:::-;15501:98;;:::o;15390:105::-;15447:4;15477:12;;15467:7;:22;15460:29;;15390:105;;;:::o;18026:172::-;18150:2;18123:15;:24;18139:7;18123:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18184:7;18180:2;18164:28;;18173:5;18164:28;;;;;;;;;;;;18026:172;;;:::o;16761:1260::-;16858:35;16896:20;16908:7;16896:11;:20::i;:::-;16858:58;;16925:22;16967:13;:18;;;16951:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;17020:12;:10;:12::i;:::-;16996:36;;:20;17008:7;16996:11;:20::i;:::-;:36;;;16951:81;:142;;;;17043:50;17060:13;:18;;;17080:12;:10;:12::i;:::-;17043:16;:50::i;:::-;16951:142;16925:169;;17119:17;17103:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17251:4;17229:26;;:13;:18;;;:26;;;17213:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17340:1;17326:16;;:2;:16;;;;17318:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17393:43;17415:4;17421:2;17425:7;17434:1;17393:21;:43::i;:::-;17444:49;17461:1;17465:7;17474:13;:18;;;17444:8;:49::i;:::-;17532:1;17502:12;:18;17515:4;17502:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17568:1;17540:12;:16;17553:2;17540:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17599:43;;;;;;;;17614:2;17599:43;;;;;;17625:15;17599:43;;;;;17576:11;:20;17588:7;17576:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17650:19;17682:1;17672:7;:11;;;;:::i;:::-;17650:33;;17735:1;17694:43;;:11;:24;17706:11;17694:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17690:236;;;17752:20;17760:11;17752:7;:20::i;:::-;17748:171;;;17812:97;;;;;;;;17839:13;:18;;;17812:97;;;;;;17870:13;:28;;;17812:97;;;;;17785:11;:24;17797:11;17785:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17748:171;17690:236;17958:7;17954:2;17939:27;;17948:4;17939:27;;;;;;;;;;;;17973:42;17994:4;18000:2;18004:7;18013:1;17973:20;:42::i;:::-;16851:1170;;;16761:1260;;;:::o;12147:606::-;12223:21;;:::i;:::-;12264:16;12272:7;12264;:16::i;:::-;12256:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12336:26;12384:12;12373:7;:23;12369:93;;12453:1;12438:12;12428:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12407:47;;12369:93;12475:12;12490:7;12475:22;;12470:212;12507:18;12499:4;:26;12470:212;;12544:31;12578:11;:17;12590:4;12578:17;;;;;;;;;;;12544:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12634:1;12608:28;;:9;:14;;;:28;;;12604:71;;12656:9;12649:16;;;;;;;12604:71;12535:147;12527:6;;;;;:::i;:::-;;;;12470:212;;;;12690:57;;;;;;;;;;:::i;:::-;;;;;;;;12147:606;;;;:::o;3090:191::-;3164:16;3183:6;;;;;;;;;;;3164:25;;3209:8;3200:6;;:17;;;;;;;;;;;;;;;;;;3264:8;3233:40;;3254:8;3233:40;;;;;;;;;;;;3153:128;3090:191;:::o;19004:690::-;19141:4;19158:15;:2;:13;;;:15::i;:::-;19154:535;;;19213:2;19197:36;;;19234:12;:10;:12::i;:::-;19248:4;19254:7;19263:5;19197:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19184:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19445:1;19428:6;:13;:18;19424:215;;;19461:61;;;;;;;;;;:::i;:::-;;;;;;;;19424:215;19607:6;19601:13;19592:6;19588:2;19584:15;19577:38;19184:464;19329:45;;;19319:55;;;:6;:55;;;;19312:62;;;;;19154:535;19677:4;19670:11;;19004:690;;;;;;;:::o;22584:108::-;22644:13;22673;22666:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22584:108;:::o;705:533::-;761:13;801:1;792:5;:10;788:53;;;819:10;;;;;;;;;;;;;;;;;;;;;788:53;851:12;866:5;851:20;;882:14;907:78;922:1;914:4;:9;907:78;;940:8;;;;;:::i;:::-;;;;971:2;963:10;;;;;:::i;:::-;;;907:78;;;995:19;1027:6;1017:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:39;;1045:154;1061:1;1052:5;:10;1045:154;;1089:1;1079:11;;;;;:::i;:::-;;;1156:2;1148:5;:10;;;;:::i;:::-;1135:2;:24;;;;:::i;:::-;1122:39;;1105:6;1112;1105:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1185:2;1176:11;;;;;:::i;:::-;;;1045:154;;;1223:6;1209:21;;;;;705:533;;;;:::o;11901:240::-;11962:7;12011:1;11994:19;;:5;:19;;;;11978:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12102:12;:19;12115:5;12102:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;12094:41;;12087:48;;11901:240;;;:::o;15604:1152::-;15709:20;15732:12;;15709:35;;15773:1;15759:16;;:2;:16;;;;15751:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15830:21;15838:12;15830:7;:21::i;:::-;15829:22;15821:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15912:12;15900:8;:24;;15892:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15972:61;16002:1;16006:2;16010:12;16024:8;15972:21;:61::i;:::-;16042:30;16075:12;:16;16088:2;16075:16;;;;;;;;;;;;;;;16042:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16117:119;;;;;;;;16167:8;16137:11;:19;;;:39;;;;:::i;:::-;16117:119;;;;;;16220:8;16185:11;:24;;;:44;;;;:::i;:::-;16117:119;;;;;16098:12;:16;16111:2;16098:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16271:43;;;;;;;;16286:2;16271:43;;;;;;16297:15;16271:43;;;;;16243:11;:25;16255:12;16243:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16323:20;16346:12;16323:35;;16372:9;16367:281;16391:8;16387:1;:12;16367:281;;;16445:12;16441:2;16420:38;;16437:1;16420:38;;;;;;;;;;;;16485:59;16516:1;16520:2;16524:12;16538:5;16485:22;:59::i;:::-;16467:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16626:14;;;;;:::i;:::-;;;;16401:3;;;;;:::i;:::-;;;;16367:281;;;;16671:12;16656;:27;;;;16690:60;16719:1;16723:2;16727:12;16741:8;16690:20;:60::i;:::-;15702:1054;;;15604:1152;;;:::o;19699:141::-;;;;;:::o;19845:140::-;;;;;:::o;3313:197::-;3373:4;3391:12;3458:7;3446:20;3438:28;;3501:1;3494:4;:8;3487:15;;;3313:197;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:143::-;2334:5;2365:6;2359:13;2350:22;;2381:33;2408:5;2381:33;:::i;:::-;2277:143;;;;:::o;2426:329::-;2485:6;2534:2;2522:9;2513:7;2509:23;2505:32;2502:119;;;2540:79;;:::i;:::-;2502:119;2660:1;2685:53;2730:7;2721:6;2710:9;2706:22;2685:53;:::i;:::-;2675:63;;2631:117;2426:329;;;;:::o;2761:474::-;2829:6;2837;2886:2;2874:9;2865:7;2861:23;2857:32;2854:119;;;2892:79;;:::i;:::-;2854:119;3012:1;3037:53;3082:7;3073:6;3062:9;3058:22;3037:53;:::i;:::-;3027:63;;2983:117;3139:2;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3110:118;2761:474;;;;;:::o;3241:619::-;3318:6;3326;3334;3383:2;3371:9;3362:7;3358:23;3354:32;3351:119;;;3389:79;;:::i;:::-;3351:119;3509:1;3534:53;3579:7;3570:6;3559:9;3555:22;3534:53;:::i;:::-;3524:63;;3480:117;3636:2;3662:53;3707:7;3698:6;3687:9;3683:22;3662:53;:::i;:::-;3652:63;;3607:118;3764:2;3790:53;3835:7;3826:6;3815:9;3811:22;3790:53;:::i;:::-;3780:63;;3735:118;3241:619;;;;;:::o;3866:943::-;3961:6;3969;3977;3985;4034:3;4022:9;4013:7;4009:23;4005:33;4002:120;;;4041:79;;:::i;:::-;4002:120;4161:1;4186:53;4231:7;4222:6;4211:9;4207:22;4186:53;:::i;:::-;4176:63;;4132:117;4288:2;4314:53;4359:7;4350:6;4339:9;4335:22;4314:53;:::i;:::-;4304:63;;4259:118;4416:2;4442:53;4487:7;4478:6;4467:9;4463:22;4442:53;:::i;:::-;4432:63;;4387:118;4572:2;4561:9;4557:18;4544:32;4603:18;4595:6;4592:30;4589:117;;;4625:79;;:::i;:::-;4589:117;4730:62;4784:7;4775:6;4764:9;4760:22;4730:62;:::i;:::-;4720:72;;4515:287;3866:943;;;;;;;:::o;4815:468::-;4880:6;4888;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5063:1;5088:53;5133:7;5124:6;5113:9;5109:22;5088:53;:::i;:::-;5078:63;;5034:117;5190:2;5216:50;5258:7;5249:6;5238:9;5234:22;5216:50;:::i;:::-;5206:60;;5161:115;4815:468;;;;;:::o;5289:474::-;5357:6;5365;5414:2;5402:9;5393:7;5389:23;5385:32;5382:119;;;5420:79;;:::i;:::-;5382:119;5540:1;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5511:117;5667:2;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5638:118;5289:474;;;;;:::o;5769:327::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6002:1;6027:52;6071:7;6062:6;6051:9;6047:22;6027:52;:::i;:::-;6017:62;;5973:116;5769:327;;;;:::o;6102:349::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:63;6426:7;6417:6;6406:9;6402:22;6371:63;:::i;:::-;6361:73;;6317:127;6102:349;;;;:::o;6457:509::-;6526:6;6575:2;6563:9;6554:7;6550:23;6546:32;6543:119;;;6581:79;;:::i;:::-;6543:119;6729:1;6718:9;6714:17;6701:31;6759:18;6751:6;6748:30;6745:117;;;6781:79;;:::i;:::-;6745:117;6886:63;6941:7;6932:6;6921:9;6917:22;6886:63;:::i;:::-;6876:73;;6672:287;6457:509;;;;:::o;6972:329::-;7031:6;7080:2;7068:9;7059:7;7055:23;7051:32;7048:119;;;7086:79;;:::i;:::-;7048:119;7206:1;7231:53;7276:7;7267:6;7256:9;7252:22;7231:53;:::i;:::-;7221:63;;7177:117;6972:329;;;;:::o;7307:351::-;7377:6;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:64;7633:7;7624:6;7613:9;7609:22;7577:64;:::i;:::-;7567:74;;7523:128;7307:351;;;;:::o;7664:108::-;7741:24;7759:5;7741:24;:::i;:::-;7736:3;7729:37;7664:108;;:::o;7778:118::-;7865:24;7883:5;7865:24;:::i;:::-;7860:3;7853:37;7778:118;;:::o;7902:109::-;7983:21;7998:5;7983:21;:::i;:::-;7978:3;7971:34;7902:109;;:::o;8017:360::-;8103:3;8131:38;8163:5;8131:38;:::i;:::-;8185:70;8248:6;8243:3;8185:70;:::i;:::-;8178:77;;8264:52;8309:6;8304:3;8297:4;8290:5;8286:16;8264:52;:::i;:::-;8341:29;8363:6;8341:29;:::i;:::-;8336:3;8332:39;8325:46;;8107:270;8017:360;;;;:::o;8383:364::-;8471:3;8499:39;8532:5;8499:39;:::i;:::-;8554:71;8618:6;8613:3;8554:71;:::i;:::-;8547:78;;8634:52;8679:6;8674:3;8667:4;8660:5;8656:16;8634:52;:::i;:::-;8711:29;8733:6;8711:29;:::i;:::-;8706:3;8702:39;8695:46;;8475:272;8383:364;;;;:::o;8753:377::-;8859:3;8887:39;8920:5;8887:39;:::i;:::-;8942:89;9024:6;9019:3;8942:89;:::i;:::-;8935:96;;9040:52;9085:6;9080:3;9073:4;9066:5;9062:16;9040:52;:::i;:::-;9117:6;9112:3;9108:16;9101:23;;8863:267;8753:377;;;;:::o;9136:366::-;9278:3;9299:67;9363:2;9358:3;9299:67;:::i;:::-;9292:74;;9375:93;9464:3;9375:93;:::i;:::-;9493:2;9488:3;9484:12;9477:19;;9136:366;;;:::o;9508:::-;9650:3;9671:67;9735:2;9730:3;9671:67;:::i;:::-;9664:74;;9747:93;9836:3;9747:93;:::i;:::-;9865:2;9860:3;9856:12;9849:19;;9508:366;;;:::o;9880:::-;10022:3;10043:67;10107:2;10102:3;10043:67;:::i;:::-;10036:74;;10119:93;10208:3;10119:93;:::i;:::-;10237:2;10232:3;10228:12;10221:19;;9880:366;;;:::o;10252:::-;10394:3;10415:67;10479:2;10474:3;10415:67;:::i;:::-;10408:74;;10491:93;10580:3;10491:93;:::i;:::-;10609:2;10604:3;10600:12;10593:19;;10252:366;;;:::o;10624:::-;10766:3;10787:67;10851:2;10846:3;10787:67;:::i;:::-;10780:74;;10863:93;10952:3;10863:93;:::i;:::-;10981:2;10976:3;10972:12;10965:19;;10624:366;;;:::o;10996:::-;11138:3;11159:67;11223:2;11218:3;11159:67;:::i;:::-;11152:74;;11235:93;11324:3;11235:93;:::i;:::-;11353:2;11348:3;11344:12;11337:19;;10996:366;;;:::o;11368:::-;11510:3;11531:67;11595:2;11590:3;11531:67;:::i;:::-;11524:74;;11607:93;11696:3;11607:93;:::i;:::-;11725:2;11720:3;11716:12;11709:19;;11368:366;;;:::o;11740:::-;11882:3;11903:67;11967:2;11962:3;11903:67;:::i;:::-;11896:74;;11979:93;12068:3;11979:93;:::i;:::-;12097:2;12092:3;12088:12;12081:19;;11740:366;;;:::o;12112:::-;12254:3;12275:67;12339:2;12334:3;12275:67;:::i;:::-;12268:74;;12351:93;12440:3;12351:93;:::i;:::-;12469:2;12464:3;12460:12;12453:19;;12112:366;;;:::o;12484:::-;12626:3;12647:67;12711:2;12706:3;12647:67;:::i;:::-;12640:74;;12723:93;12812:3;12723:93;:::i;:::-;12841:2;12836:3;12832:12;12825:19;;12484:366;;;:::o;12856:::-;12998:3;13019:67;13083:2;13078:3;13019:67;:::i;:::-;13012:74;;13095:93;13184:3;13095:93;:::i;:::-;13213:2;13208:3;13204:12;13197:19;;12856:366;;;:::o;13228:::-;13370:3;13391:67;13455:2;13450:3;13391:67;:::i;:::-;13384:74;;13467:93;13556:3;13467:93;:::i;:::-;13585:2;13580:3;13576:12;13569:19;;13228:366;;;:::o;13600:::-;13742:3;13763:67;13827:2;13822:3;13763:67;:::i;:::-;13756:74;;13839:93;13928:3;13839:93;:::i;:::-;13957:2;13952:3;13948:12;13941:19;;13600:366;;;:::o;13972:::-;14114:3;14135:67;14199:2;14194:3;14135:67;:::i;:::-;14128:74;;14211:93;14300:3;14211:93;:::i;:::-;14329:2;14324:3;14320:12;14313:19;;13972:366;;;:::o;14344:::-;14486:3;14507:67;14571:2;14566:3;14507:67;:::i;:::-;14500:74;;14583:93;14672:3;14583:93;:::i;:::-;14701:2;14696:3;14692:12;14685:19;;14344:366;;;:::o;14716:::-;14858:3;14879:67;14943:2;14938:3;14879:67;:::i;:::-;14872:74;;14955:93;15044:3;14955:93;:::i;:::-;15073:2;15068:3;15064:12;15057:19;;14716:366;;;:::o;15088:::-;15230:3;15251:67;15315:2;15310:3;15251:67;:::i;:::-;15244:74;;15327:93;15416:3;15327:93;:::i;:::-;15445:2;15440:3;15436:12;15429:19;;15088:366;;;:::o;15460:::-;15602:3;15623:67;15687:2;15682:3;15623:67;:::i;:::-;15616:74;;15699:93;15788:3;15699:93;:::i;:::-;15817:2;15812:3;15808:12;15801:19;;15460:366;;;:::o;15832:::-;15974:3;15995:67;16059:2;16054:3;15995:67;:::i;:::-;15988:74;;16071:93;16160:3;16071:93;:::i;:::-;16189:2;16184:3;16180:12;16173:19;;15832:366;;;:::o;16204:398::-;16363:3;16384:83;16465:1;16460:3;16384:83;:::i;:::-;16377:90;;16476:93;16565:3;16476:93;:::i;:::-;16594:1;16589:3;16585:11;16578:18;;16204:398;;;:::o;16608:366::-;16750:3;16771:67;16835:2;16830:3;16771:67;:::i;:::-;16764:74;;16847:93;16936:3;16847:93;:::i;:::-;16965:2;16960:3;16956:12;16949:19;;16608:366;;;:::o;16980:::-;17122:3;17143:67;17207:2;17202:3;17143:67;:::i;:::-;17136:74;;17219:93;17308:3;17219:93;:::i;:::-;17337:2;17332:3;17328:12;17321:19;;16980:366;;;:::o;17352:::-;17494:3;17515:67;17579:2;17574:3;17515:67;:::i;:::-;17508:74;;17591:93;17680:3;17591:93;:::i;:::-;17709:2;17704:3;17700:12;17693:19;;17352:366;;;:::o;17724:::-;17866:3;17887:67;17951:2;17946:3;17887:67;:::i;:::-;17880:74;;17963:93;18052:3;17963:93;:::i;:::-;18081:2;18076:3;18072:12;18065:19;;17724:366;;;:::o;18096:::-;18238:3;18259:67;18323:2;18318:3;18259:67;:::i;:::-;18252:74;;18335:93;18424:3;18335:93;:::i;:::-;18453:2;18448:3;18444:12;18437:19;;18096:366;;;:::o;18468:::-;18610:3;18631:67;18695:2;18690:3;18631:67;:::i;:::-;18624:74;;18707:93;18796:3;18707:93;:::i;:::-;18825:2;18820:3;18816:12;18809:19;;18468:366;;;:::o;18840:::-;18982:3;19003:67;19067:2;19062:3;19003:67;:::i;:::-;18996:74;;19079:93;19168:3;19079:93;:::i;:::-;19197:2;19192:3;19188:12;19181:19;;18840:366;;;:::o;19212:::-;19354:3;19375:67;19439:2;19434:3;19375:67;:::i;:::-;19368:74;;19451:93;19540:3;19451:93;:::i;:::-;19569:2;19564:3;19560:12;19553:19;;19212:366;;;:::o;19584:::-;19726:3;19747:67;19811:2;19806:3;19747:67;:::i;:::-;19740:74;;19823:93;19912:3;19823:93;:::i;:::-;19941:2;19936:3;19932:12;19925:19;;19584:366;;;:::o;19956:::-;20098:3;20119:67;20183:2;20178:3;20119:67;:::i;:::-;20112:74;;20195:93;20284:3;20195:93;:::i;:::-;20313:2;20308:3;20304:12;20297:19;;19956:366;;;:::o;20328:::-;20470:3;20491:67;20555:2;20550:3;20491:67;:::i;:::-;20484:74;;20567:93;20656:3;20567:93;:::i;:::-;20685:2;20680:3;20676:12;20669:19;;20328:366;;;:::o;20770:527::-;20929:4;20924:3;20920:14;21016:4;21009:5;21005:16;20999:23;21035:63;21092:4;21087:3;21083:14;21069:12;21035:63;:::i;:::-;20944:164;21200:4;21193:5;21189:16;21183:23;21219:61;21274:4;21269:3;21265:14;21251:12;21219:61;:::i;:::-;21118:172;20898:399;20770:527;;:::o;21303:118::-;21390:24;21408:5;21390:24;:::i;:::-;21385:3;21378:37;21303:118;;:::o;21427:105::-;21502:23;21519:5;21502:23;:::i;:::-;21497:3;21490:36;21427:105;;:::o;21538:435::-;21718:3;21740:95;21831:3;21822:6;21740:95;:::i;:::-;21733:102;;21852:95;21943:3;21934:6;21852:95;:::i;:::-;21845:102;;21964:3;21957:10;;21538:435;;;;;:::o;21979:379::-;22163:3;22185:147;22328:3;22185:147;:::i;:::-;22178:154;;22349:3;22342:10;;21979:379;;;:::o;22364:222::-;22457:4;22495:2;22484:9;22480:18;22472:26;;22508:71;22576:1;22565:9;22561:17;22552:6;22508:71;:::i;:::-;22364:222;;;;:::o;22592:640::-;22787:4;22825:3;22814:9;22810:19;22802:27;;22839:71;22907:1;22896:9;22892:17;22883:6;22839:71;:::i;:::-;22920:72;22988:2;22977:9;22973:18;22964:6;22920:72;:::i;:::-;23002;23070:2;23059:9;23055:18;23046:6;23002:72;:::i;:::-;23121:9;23115:4;23111:20;23106:2;23095:9;23091:18;23084:48;23149:76;23220:4;23211:6;23149:76;:::i;:::-;23141:84;;22592:640;;;;;;;:::o;23238:332::-;23359:4;23397:2;23386:9;23382:18;23374:26;;23410:71;23478:1;23467:9;23463:17;23454:6;23410:71;:::i;:::-;23491:72;23559:2;23548:9;23544:18;23535:6;23491:72;:::i;:::-;23238:332;;;;;:::o;23576:210::-;23663:4;23701:2;23690:9;23686:18;23678:26;;23714:65;23776:1;23765:9;23761:17;23752:6;23714:65;:::i;:::-;23576:210;;;;:::o;23792:313::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:78;24093:4;24084:6;24020:78;:::i;:::-;24012:86;;23792:313;;;;:::o;24111:419::-;24277:4;24315:2;24304:9;24300:18;24292:26;;24364:9;24358:4;24354:20;24350:1;24339:9;24335:17;24328:47;24392:131;24518:4;24392:131;:::i;:::-;24384:139;;24111:419;;;:::o;24536:::-;24702:4;24740:2;24729:9;24725:18;24717:26;;24789:9;24783:4;24779:20;24775:1;24764:9;24760:17;24753:47;24817:131;24943:4;24817:131;:::i;:::-;24809:139;;24536:419;;;:::o;24961:::-;25127:4;25165:2;25154:9;25150:18;25142:26;;25214:9;25208:4;25204:20;25200:1;25189:9;25185:17;25178:47;25242:131;25368:4;25242:131;:::i;:::-;25234:139;;24961:419;;;:::o;25386:::-;25552:4;25590:2;25579:9;25575:18;25567:26;;25639:9;25633:4;25629:20;25625:1;25614:9;25610:17;25603:47;25667:131;25793:4;25667:131;:::i;:::-;25659:139;;25386:419;;;:::o;25811:::-;25977:4;26015:2;26004:9;26000:18;25992:26;;26064:9;26058:4;26054:20;26050:1;26039:9;26035:17;26028:47;26092:131;26218:4;26092:131;:::i;:::-;26084:139;;25811:419;;;:::o;26236:::-;26402:4;26440:2;26429:9;26425:18;26417:26;;26489:9;26483:4;26479:20;26475:1;26464:9;26460:17;26453:47;26517:131;26643:4;26517:131;:::i;:::-;26509:139;;26236:419;;;:::o;26661:::-;26827:4;26865:2;26854:9;26850:18;26842:26;;26914:9;26908:4;26904:20;26900:1;26889:9;26885:17;26878:47;26942:131;27068:4;26942:131;:::i;:::-;26934:139;;26661:419;;;:::o;27086:::-;27252:4;27290:2;27279:9;27275:18;27267:26;;27339:9;27333:4;27329:20;27325:1;27314:9;27310:17;27303:47;27367:131;27493:4;27367:131;:::i;:::-;27359:139;;27086:419;;;:::o;27511:::-;27677:4;27715:2;27704:9;27700:18;27692:26;;27764:9;27758:4;27754:20;27750:1;27739:9;27735:17;27728:47;27792:131;27918:4;27792:131;:::i;:::-;27784:139;;27511:419;;;:::o;27936:::-;28102:4;28140:2;28129:9;28125:18;28117:26;;28189:9;28183:4;28179:20;28175:1;28164:9;28160:17;28153:47;28217:131;28343:4;28217:131;:::i;:::-;28209:139;;27936:419;;;:::o;28361:::-;28527:4;28565:2;28554:9;28550:18;28542:26;;28614:9;28608:4;28604:20;28600:1;28589:9;28585:17;28578:47;28642:131;28768:4;28642:131;:::i;:::-;28634:139;;28361:419;;;:::o;28786:::-;28952:4;28990:2;28979:9;28975:18;28967:26;;29039:9;29033:4;29029:20;29025:1;29014:9;29010:17;29003:47;29067:131;29193:4;29067:131;:::i;:::-;29059:139;;28786:419;;;:::o;29211:::-;29377:4;29415:2;29404:9;29400:18;29392:26;;29464:9;29458:4;29454:20;29450:1;29439:9;29435:17;29428:47;29492:131;29618:4;29492:131;:::i;:::-;29484:139;;29211:419;;;:::o;29636:::-;29802:4;29840:2;29829:9;29825:18;29817:26;;29889:9;29883:4;29879:20;29875:1;29864:9;29860:17;29853:47;29917:131;30043:4;29917:131;:::i;:::-;29909:139;;29636:419;;;:::o;30061:::-;30227:4;30265:2;30254:9;30250:18;30242:26;;30314:9;30308:4;30304:20;30300:1;30289:9;30285:17;30278:47;30342:131;30468:4;30342:131;:::i;:::-;30334:139;;30061:419;;;:::o;30486:::-;30652:4;30690:2;30679:9;30675:18;30667:26;;30739:9;30733:4;30729:20;30725:1;30714:9;30710:17;30703:47;30767:131;30893:4;30767:131;:::i;:::-;30759:139;;30486:419;;;:::o;30911:::-;31077:4;31115:2;31104:9;31100:18;31092:26;;31164:9;31158:4;31154:20;31150:1;31139:9;31135:17;31128:47;31192:131;31318:4;31192:131;:::i;:::-;31184:139;;30911:419;;;:::o;31336:::-;31502:4;31540:2;31529:9;31525:18;31517:26;;31589:9;31583:4;31579:20;31575:1;31564:9;31560:17;31553:47;31617:131;31743:4;31617:131;:::i;:::-;31609:139;;31336:419;;;:::o;31761:::-;31927:4;31965:2;31954:9;31950:18;31942:26;;32014:9;32008:4;32004:20;32000:1;31989:9;31985:17;31978:47;32042:131;32168:4;32042:131;:::i;:::-;32034:139;;31761:419;;;:::o;32186:::-;32352:4;32390:2;32379:9;32375:18;32367:26;;32439:9;32433:4;32429:20;32425:1;32414:9;32410:17;32403:47;32467:131;32593:4;32467:131;:::i;:::-;32459:139;;32186:419;;;:::o;32611:::-;32777:4;32815:2;32804:9;32800:18;32792:26;;32864:9;32858:4;32854:20;32850:1;32839:9;32835:17;32828:47;32892:131;33018:4;32892:131;:::i;:::-;32884:139;;32611:419;;;:::o;33036:::-;33202:4;33240:2;33229:9;33225:18;33217:26;;33289:9;33283:4;33279:20;33275:1;33264:9;33260:17;33253:47;33317:131;33443:4;33317:131;:::i;:::-;33309:139;;33036:419;;;:::o;33461:::-;33627:4;33665:2;33654:9;33650:18;33642:26;;33714:9;33708:4;33704:20;33700:1;33689:9;33685:17;33678:47;33742:131;33868:4;33742:131;:::i;:::-;33734:139;;33461:419;;;:::o;33886:::-;34052:4;34090:2;34079:9;34075:18;34067:26;;34139:9;34133:4;34129:20;34125:1;34114:9;34110:17;34103:47;34167:131;34293:4;34167:131;:::i;:::-;34159:139;;33886:419;;;:::o;34311:::-;34477:4;34515:2;34504:9;34500:18;34492:26;;34564:9;34558:4;34554:20;34550:1;34539:9;34535:17;34528:47;34592:131;34718:4;34592:131;:::i;:::-;34584:139;;34311:419;;;:::o;34736:::-;34902:4;34940:2;34929:9;34925:18;34917:26;;34989:9;34983:4;34979:20;34975:1;34964:9;34960:17;34953:47;35017:131;35143:4;35017:131;:::i;:::-;35009:139;;34736:419;;;:::o;35161:::-;35327:4;35365:2;35354:9;35350:18;35342:26;;35414:9;35408:4;35404:20;35400:1;35389:9;35385:17;35378:47;35442:131;35568:4;35442:131;:::i;:::-;35434:139;;35161:419;;;:::o;35586:::-;35752:4;35790:2;35779:9;35775:18;35767:26;;35839:9;35833:4;35829:20;35825:1;35814:9;35810:17;35803:47;35867:131;35993:4;35867:131;:::i;:::-;35859:139;;35586:419;;;:::o;36011:::-;36177:4;36215:2;36204:9;36200:18;36192:26;;36264:9;36258:4;36254:20;36250:1;36239:9;36235:17;36228:47;36292:131;36418:4;36292:131;:::i;:::-;36284:139;;36011:419;;;:::o;36436:::-;36602:4;36640:2;36629:9;36625:18;36617:26;;36689:9;36683:4;36679:20;36675:1;36664:9;36660:17;36653:47;36717:131;36843:4;36717:131;:::i;:::-;36709:139;;36436:419;;;:::o;36861:346::-;37016:4;37054:2;37043:9;37039:18;37031:26;;37067:133;37197:1;37186:9;37182:17;37173:6;37067:133;:::i;:::-;36861:346;;;;:::o;37213:222::-;37306:4;37344:2;37333:9;37329:18;37321:26;;37357:71;37425:1;37414:9;37410:17;37401:6;37357:71;:::i;:::-;37213:222;;;;:::o;37441:129::-;37475:6;37502:20;;:::i;:::-;37492:30;;37531:33;37559:4;37551:6;37531:33;:::i;:::-;37441:129;;;:::o;37576:75::-;37609:6;37642:2;37636:9;37626:19;;37576:75;:::o;37657:307::-;37718:4;37808:18;37800:6;37797:30;37794:56;;;37830:18;;:::i;:::-;37794:56;37868:29;37890:6;37868:29;:::i;:::-;37860:37;;37952:4;37946;37942:15;37934:23;;37657:307;;;:::o;37970:308::-;38032:4;38122:18;38114:6;38111:30;38108:56;;;38144:18;;:::i;:::-;38108:56;38182:29;38204:6;38182:29;:::i;:::-;38174:37;;38266:4;38260;38256:15;38248:23;;37970:308;;;:::o;38284:98::-;38335:6;38369:5;38363:12;38353:22;;38284:98;;;:::o;38388:99::-;38440:6;38474:5;38468:12;38458:22;;38388:99;;;:::o;38493:168::-;38576:11;38610:6;38605:3;38598:19;38650:4;38645:3;38641:14;38626:29;;38493:168;;;;:::o;38667:147::-;38768:11;38805:3;38790:18;;38667:147;;;;:::o;38820:169::-;38904:11;38938:6;38933:3;38926:19;38978:4;38973:3;38969:14;38954:29;;38820:169;;;;:::o;38995:148::-;39097:11;39134:3;39119:18;;38995:148;;;;:::o;39149:273::-;39189:3;39208:20;39226:1;39208:20;:::i;:::-;39203:25;;39242:20;39260:1;39242:20;:::i;:::-;39237:25;;39364:1;39328:34;39324:42;39321:1;39318:49;39315:75;;;39370:18;;:::i;:::-;39315:75;39414:1;39411;39407:9;39400:16;;39149:273;;;;:::o;39428:305::-;39468:3;39487:20;39505:1;39487:20;:::i;:::-;39482:25;;39521:20;39539:1;39521:20;:::i;:::-;39516:25;;39675:1;39607:66;39603:74;39600:1;39597:81;39594:107;;;39681:18;;:::i;:::-;39594:107;39725:1;39722;39718:9;39711:16;;39428:305;;;;:::o;39739:185::-;39779:1;39796:20;39814:1;39796:20;:::i;:::-;39791:25;;39830:20;39848:1;39830:20;:::i;:::-;39825:25;;39869:1;39859:35;;39874:18;;:::i;:::-;39859:35;39916:1;39913;39909:9;39904:14;;39739:185;;;;:::o;39930:348::-;39970:7;39993:20;40011:1;39993:20;:::i;:::-;39988:25;;40027:20;40045:1;40027:20;:::i;:::-;40022:25;;40215:1;40147:66;40143:74;40140:1;40137:81;40132:1;40125:9;40118:17;40114:105;40111:131;;;40222:18;;:::i;:::-;40111:131;40270:1;40267;40263:9;40252:20;;39930:348;;;;:::o;40284:191::-;40324:4;40344:20;40362:1;40344:20;:::i;:::-;40339:25;;40378:20;40396:1;40378:20;:::i;:::-;40373:25;;40417:1;40414;40411:8;40408:34;;;40422:18;;:::i;:::-;40408:34;40467:1;40464;40460:9;40452:17;;40284:191;;;;:::o;40481:::-;40521:4;40541:20;40559:1;40541:20;:::i;:::-;40536:25;;40575:20;40593:1;40575:20;:::i;:::-;40570:25;;40614:1;40611;40608:8;40605:34;;;40619:18;;:::i;:::-;40605:34;40664:1;40661;40657:9;40649:17;;40481:191;;;;:::o;40678:96::-;40715:7;40744:24;40762:5;40744:24;:::i;:::-;40733:35;;40678:96;;;:::o;40780:90::-;40814:7;40857:5;40850:13;40843:21;40832:32;;40780:90;;;:::o;40876:149::-;40912:7;40952:66;40945:5;40941:78;40930:89;;40876:149;;;:::o;41031:118::-;41068:7;41108:34;41101:5;41097:46;41086:57;;41031:118;;;:::o;41155:126::-;41192:7;41232:42;41225:5;41221:54;41210:65;;41155:126;;;:::o;41287:77::-;41324:7;41353:5;41342:16;;41287:77;;;:::o;41370:101::-;41406:7;41446:18;41439:5;41435:30;41424:41;;41370:101;;;:::o;41477:154::-;41561:6;41556:3;41551;41538:30;41623:1;41614:6;41609:3;41605:16;41598:27;41477:154;;;:::o;41637:307::-;41705:1;41715:113;41729:6;41726:1;41723:13;41715:113;;;41814:1;41809:3;41805:11;41799:18;41795:1;41790:3;41786:11;41779:39;41751:2;41748:1;41744:10;41739:15;;41715:113;;;41846:6;41843:1;41840:13;41837:101;;;41926:1;41917:6;41912:3;41908:16;41901:27;41837:101;41686:258;41637:307;;;:::o;41950:171::-;41989:3;42012:24;42030:5;42012:24;:::i;:::-;42003:33;;42058:4;42051:5;42048:15;42045:41;;;42066:18;;:::i;:::-;42045:41;42113:1;42106:5;42102:13;42095:20;;41950:171;;;:::o;42127:320::-;42171:6;42208:1;42202:4;42198:12;42188:22;;42255:1;42249:4;42245:12;42276:18;42266:81;;42332:4;42324:6;42320:17;42310:27;;42266:81;42394:2;42386:6;42383:14;42363:18;42360:38;42357:84;;;42413:18;;:::i;:::-;42357:84;42178:269;42127:320;;;:::o;42453:281::-;42536:27;42558:4;42536:27;:::i;:::-;42528:6;42524:40;42666:6;42654:10;42651:22;42630:18;42618:10;42615:34;42612:62;42609:88;;;42677:18;;:::i;:::-;42609:88;42717:10;42713:2;42706:22;42496:238;42453:281;;:::o;42740:233::-;42779:3;42802:24;42820:5;42802:24;:::i;:::-;42793:33;;42848:66;42841:5;42838:77;42835:103;;;42918:18;;:::i;:::-;42835:103;42965:1;42958:5;42954:13;42947:20;;42740:233;;;:::o;42979:176::-;43011:1;43028:20;43046:1;43028:20;:::i;:::-;43023:25;;43062:20;43080:1;43062:20;:::i;:::-;43057:25;;43101:1;43091:35;;43106:18;;:::i;:::-;43091:35;43147:1;43144;43140:9;43135:14;;42979:176;;;;:::o;43161:180::-;43209:77;43206:1;43199:88;43306:4;43303:1;43296:15;43330:4;43327:1;43320:15;43347:180;43395:77;43392:1;43385:88;43492:4;43489:1;43482:15;43516:4;43513:1;43506:15;43533:180;43581:77;43578:1;43571:88;43678:4;43675:1;43668:15;43702:4;43699:1;43692:15;43719:180;43767:77;43764:1;43757:88;43864:4;43861:1;43854:15;43888:4;43885:1;43878:15;43905:180;43953:77;43950:1;43943:88;44050:4;44047:1;44040:15;44074:4;44071:1;44064:15;44091:117;44200:1;44197;44190:12;44214:117;44323:1;44320;44313:12;44337:117;44446:1;44443;44436:12;44460:117;44569:1;44566;44559:12;44583:102;44624:6;44675:2;44671:7;44666:2;44659:5;44655:14;44651:28;44641:38;;44583:102;;;:::o;44691:221::-;44831:34;44827:1;44819:6;44815:14;44808:58;44900:4;44895:2;44887:6;44883:15;44876:29;44691:221;:::o;44918:225::-;45058:34;45054:1;45046:6;45042:14;45035:58;45127:8;45122:2;45114:6;45110:15;45103:33;44918:225;:::o;45149:229::-;45289:34;45285:1;45277:6;45273:14;45266:58;45358:12;45353:2;45345:6;45341:15;45334:37;45149:229;:::o;45384:232::-;45524:34;45520:1;45512:6;45508:14;45501:58;45593:15;45588:2;45580:6;45576:15;45569:40;45384:232;:::o;45622:222::-;45762:34;45758:1;45750:6;45746:14;45739:58;45831:5;45826:2;45818:6;45814:15;45807:30;45622:222;:::o;45850:224::-;45990:34;45986:1;45978:6;45974:14;45967:58;46059:7;46054:2;46046:6;46042:15;46035:32;45850:224;:::o;46080:236::-;46220:34;46216:1;46208:6;46204:14;46197:58;46289:19;46284:2;46276:6;46272:15;46265:44;46080:236;:::o;46322:168::-;46462:20;46458:1;46450:6;46446:14;46439:44;46322:168;:::o;46496:180::-;46636:32;46632:1;46624:6;46620:14;46613:56;46496:180;:::o;46682:244::-;46822:34;46818:1;46810:6;46806:14;46799:58;46891:27;46886:2;46878:6;46874:15;46867:52;46682:244;:::o;46932:230::-;47072:34;47068:1;47060:6;47056:14;47049:58;47141:13;47136:2;47128:6;47124:15;47117:38;46932:230;:::o;47168:168::-;47308:20;47304:1;47296:6;47292:14;47285:44;47168:168;:::o;47342:225::-;47482:34;47478:1;47470:6;47466:14;47459:58;47551:8;47546:2;47538:6;47534:15;47527:33;47342:225;:::o;47573:182::-;47713:34;47709:1;47701:6;47697:14;47690:58;47573:182;:::o;47761:234::-;47901:34;47897:1;47889:6;47885:14;47878:58;47970:17;47965:2;47957:6;47953:15;47946:42;47761:234;:::o;48001:176::-;48141:28;48137:1;48129:6;48125:14;48118:52;48001:176;:::o;48183:237::-;48323:34;48319:1;48311:6;48307:14;48300:58;48392:20;48387:2;48379:6;48375:15;48368:45;48183:237;:::o;48426:179::-;48566:31;48562:1;48554:6;48550:14;48543:55;48426:179;:::o;48611:221::-;48751:34;48747:1;48739:6;48735:14;48728:58;48820:4;48815:2;48807:6;48803:15;48796:29;48611:221;:::o;48838:114::-;;:::o;48958:166::-;49098:18;49094:1;49086:6;49082:14;49075:42;48958:166;:::o;49130:238::-;49270:34;49266:1;49258:6;49254:14;49247:58;49339:21;49334:2;49326:6;49322:15;49315:46;49130:238;:::o;49374:172::-;49514:24;49510:1;49502:6;49498:14;49491:48;49374:172;:::o;49552:179::-;49692:31;49688:1;49680:6;49676:14;49669:55;49552:179;:::o;49737:220::-;49877:34;49873:1;49865:6;49861:14;49854:58;49946:3;49941:2;49933:6;49929:15;49922:28;49737:220;:::o;49963:172::-;50103:24;50099:1;50091:6;50087:14;50080:48;49963:172;:::o;50141:233::-;50281:34;50277:1;50269:6;50265:14;50258:58;50350:16;50345:2;50337:6;50333:15;50326:41;50141:233;:::o;50380:181::-;50520:33;50516:1;50508:6;50504:14;50497:57;50380:181;:::o;50567:234::-;50707:34;50703:1;50695:6;50691:14;50684:58;50776:17;50771:2;50763:6;50759:15;50752:42;50567:234;:::o;50807:232::-;50947:34;50943:1;50935:6;50931:14;50924:58;51016:15;51011:2;51003:6;50999:15;50992:40;50807:232;:::o;51045:221::-;51185:34;51181:1;51173:6;51169:14;51162:58;51254:4;51249:2;51241:6;51237:15;51230:29;51045:221;:::o;51272:122::-;51345:24;51363:5;51345:24;:::i;:::-;51338:5;51335:35;51325:63;;51384:1;51381;51374:12;51325:63;51272:122;:::o;51400:116::-;51470:21;51485:5;51470:21;:::i;:::-;51463:5;51460:32;51450:60;;51506:1;51503;51496:12;51450:60;51400:116;:::o;51522:120::-;51594:23;51611:5;51594:23;:::i;:::-;51587:5;51584:34;51574:62;;51632:1;51629;51622:12;51574:62;51522:120;:::o;51648:122::-;51721:24;51739:5;51721:24;:::i;:::-;51714:5;51711:35;51701:63;;51760:1;51757;51750:12;51701:63;51648:122;:::o

Swarm Source

ipfs://38c345f5e839dca45d0a76b8d028806832526ec1696e7ebcd4d65ea9b969420c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.