ETH Price: $3,095.96 (+0.89%)
Gas: 9 Gwei

Token

Somewhere Over The Rainbow (SOTR)
 

Overview

Max Total Supply

10,000 SOTR

Holders

803

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
12277.eth
Balance
20 SOTR
0x0108f918D430758A0B0d8CB8c1E30BF29E2bbc9f
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:
SomewhereOverTheRainbow

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-07-05
*/

// 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 = 1;

  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-1;
  } 
  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 SomewhereOverTheRainbow  is Ownable, ERC721A, ReentrancyGuard {
  using Strings for uint256;

  uint256 public  PRICE = 0.005 ether;
  uint256 public  MAX_PER_TRANSACTION = 10;

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

  string private _baseTokenURI;

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

  constructor() ERC721A("Somewhere Over The Rainbow","SOTR", MaxMintPerBatch_, TotalCollectionSize_) {
    _baseTokenURI = "https://bafybeifiy2jq7xzxvrryzdxfgp2twfgct6fnkc2thmrgksxypnluuqdngi.ipfs.nftstorage.link/";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
 
  function mint(uint256 quantity) external payable callerIsUser {
    require(status == 2 , "Sale is not Active");
    require(totalSupply() + quantity <= collectionSize, "reached max supply");
    require(quantity <= MAX_PER_TRANSACTION, "Exceeds max per transaction limit!");
    if(numberMinted(msg.sender) == 0 && quantity < 3)
        _safeMint(msg.sender, quantity);
    else if(numberMinted(msg.sender) == 0 && quantity > 2){
        require(msg.value >= PRICE * (quantity-2), "Need to send more ETH.");
        _safeMint(msg.sender, quantity);
    }
    else if(numberMinted(msg.sender) == 1){
        require(msg.value >= PRICE * (quantity-1), "Need to send more ETH.");
        _safeMint(msg.sender, quantity);
    }
    else{
        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(),".json"))
        : "";
  }
  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function setMAX_PER_TRANSACTION(uint m) external onlyOwner {
    MAX_PER_TRANSACTION = m;
  }
  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 withdrawMoney() external nonReentrant {
    uint s = address(this).balance/100*15;
    (bool successA, ) = 0x77E5C0704d9681765d9C7204D66e5110c6556DDd.call{value: s}("");
    require(successA, "Transfer failed.");

    (bool successB, ) = owner().call{value: address(this).balance}("");
    require(successB, "Transfer failed.");
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function setStatus(uint256 status_)external onlyOwner{
      status = status_;
  }
  function giveaway(address address_, uint quantity_)public onlyOwner{
    require(totalSupply() + quantity_ <= collectionSize, "reached max supply");
    _safeMint(address_, quantity_);
  }
}

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":"MAX_PER_TRANSACTION","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":"_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":[{"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":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"quantity_","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"m","type":"uint256"}],"name":"setMAX_PER_TRANSACTION","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"status_","type":"uint256"}],"name":"setStatus","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":"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":"withdrawMoney","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526001805560006008556611c37937e08000600a55600a600b556000600d553480156200002f57600080fd5b506040518060400160405280601a81526020017f536f6d657768657265204f76657220546865205261696e626f770000000000008152506040518060400160405280600481526020017f534f545200000000000000000000000000000000000000000000000000000000815250611388612710620000c2620000b6620001d460201b60201c565b620001dc60201b60201c565b6000811162000108576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ff90620003c0565b60405180910390fd5b600082116200014e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000145906200039e565b60405180910390fd5b836002908051906020019062000166929190620002a0565b5082600390805190602001906200017f929190620002a0565b508160a081815250508060808181525050505050506001600981905550604051806080016040528060598152602001620050d060599139600c9080519060200190620001cd929190620002a0565b50620004f6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002ae90620003f3565b90600052602060002090601f016020900481019282620002d257600085556200031e565b82601f10620002ed57805160ff19168380011785556200031e565b828001600101855582156200031e579182015b828111156200031d57825182559160200191906001019062000300565b5b5090506200032d919062000331565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b60006200035f602783620003e2565b91506200036c8262000458565b604082019050919050565b600062000386602e83620003e2565b91506200039382620004a7565b604082019050919050565b60006020820190508181036000830152620003b98162000350565b9050919050565b60006020820190508181036000830152620003db8162000377565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200040c57607f821691505b6020821081141562000423576200042262000429565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a051614b9f62000531600039600081816123bf015281816123e80152612b6701526000818161097701526114010152614b9f6000f3fe6080604052600436106101e35760003560e01c806370a0823111610102578063ac44600211610095578063d7224ba011610064578063d7224ba0146106e1578063dc33e6811461070c578063e985e9c514610749578063f2fde38b14610786576101e3565b8063ac44600214610639578063b88d4fde14610650578063c87b56dd14610679578063cb14eb87146106b6576101e3565b80639231ab2a116100d15780639231ab2a1461058c57806395d89b41146105c9578063a0712d68146105f4578063a22cb46514610610576101e3565b806370a08231146104e2578063715018a61461051f5780638d859f3e146105365780638da5cb5b14610561576101e3565b8063254107e01161017a5780634f6ccce7116101495780634f6ccce71461041657806355f804b3146104535780636352211e1461047c57806369ba1a75146104b9576101e3565b8063254107e01461035e5780632f745c59146103875780633fd17366146103c457806342842e0e146103ed576101e3565b8063095ea7b3116101b6578063095ea7b3146102b657806318160ddd146102df578063200d2ed21461030a57806323b872dd14610335576101e3565b806301ffc9a7146101e8578063050225ea1461022557806306fdde031461024e578063081812fc14610279575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a919061338d565b6107af565b60405161021c9190613a3f565b60405180910390f35b34801561023157600080fd5b5061024c6004803603810190610247919061334d565b6108f9565b005b34801561025a57600080fd5b506102636109f8565b6040516102709190613a5a565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190613430565b610a8a565b6040516102ad91906139d8565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061334d565b610b0f565b005b3480156102eb57600080fd5b506102f4610c28565b6040516103019190613e17565b60405180910390f35b34801561031657600080fd5b5061031f610c3d565b60405161032c9190613e17565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190613237565b610c43565b005b34801561036a57600080fd5b5061038560048036038101906103809190613430565b610c53565b005b34801561039357600080fd5b506103ae60048036038101906103a9919061334d565b610cd9565b6040516103bb9190613e17565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e69190613430565b610ed7565b005b3480156103f957600080fd5b50610414600480360381019061040f9190613237565b610f5d565b005b34801561042257600080fd5b5061043d60048036038101906104389190613430565b610f7d565b60405161044a9190613e17565b60405180910390f35b34801561045f57600080fd5b5061047a600480360381019061047591906133e7565b610fd0565b005b34801561048857600080fd5b506104a3600480360381019061049e9190613430565b611066565b6040516104b091906139d8565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613430565b61107c565b005b3480156104ee57600080fd5b50610509600480360381019061050491906131ca565b611102565b6040516105169190613e17565b60405180910390f35b34801561052b57600080fd5b506105346111eb565b005b34801561054257600080fd5b5061054b611273565b6040516105589190613e17565b60405180910390f35b34801561056d57600080fd5b50610576611279565b60405161058391906139d8565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190613430565b6112a2565b6040516105c09190613dfc565b60405180910390f35b3480156105d557600080fd5b506105de6112ba565b6040516105eb9190613a5a565b60405180910390f35b61060e60048036038101906106099190613430565b61134c565b005b34801561061c57600080fd5b506106376004803603810190610632919061330d565b611649565b005b34801561064557600080fd5b5061064e6117ca565b005b34801561065c57600080fd5b506106776004803603810190610672919061328a565b6119b5565b005b34801561068557600080fd5b506106a0600480360381019061069b9190613430565b611a11565b6040516106ad9190613a5a565b60405180910390f35b3480156106c257600080fd5b506106cb611ab8565b6040516106d89190613e17565b60405180910390f35b3480156106ed57600080fd5b506106f6611abe565b6040516107039190613e17565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e91906131ca565b611ac4565b6040516107409190613e17565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b91906131f7565b611ad6565b60405161077d9190613a3f565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a891906131ca565b611b6a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061087a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108e257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f257506108f182611c62565b5b9050919050565b610901611ccc565b73ffffffffffffffffffffffffffffffffffffffff1661091f611279565b73ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90613c1c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008161099f610c28565b6109a99190613f4d565b11156109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613bdc565b60405180910390fd5b6109f48282611cd4565b5050565b606060028054610a07906141a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a33906141a6565b8015610a805780601f10610a5557610100808354040283529160200191610a80565b820191906000526020600020905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b6000610a9582611cf2565b610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90613dbc565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b1a82611066565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613c9c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610baa611ccc565b73ffffffffffffffffffffffffffffffffffffffff161480610bd95750610bd881610bd3611ccc565b611ad6565b5b610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90613b9c565b60405180910390fd5b610c23838383611d00565b505050565b600060018054610c389190614062565b905090565b600d5481565b610c4e838383611db2565b505050565b610c5b611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610c79611279565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613c1c565b60405180910390fd5b80600b8190555050565b6000610ce483611102565b8210610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613a7c565b60405180910390fd5b6000610d2f610c28565b905060008060005b83811015610e95576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2957806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e815786841415610e72578195505050505050610ed1565b8380610e7d90614209565b9450505b508080610e8d90614209565b915050610d37565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890613d5c565b60405180910390fd5b92915050565b610edf611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610efd611279565b73ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613c1c565b60405180910390fd5b80600a8190555050565b610f78838383604051806020016040528060008152506119b5565b505050565b6000610f87610c28565b8210610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90613adc565b60405180910390fd5b819050919050565b610fd8611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610ff6611279565b73ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613c1c565b60405180910390fd5b80600c9080519060200190611062929190612fa4565b5050565b60006110718261236b565b600001519050919050565b611084611ccc565b73ffffffffffffffffffffffffffffffffffffffff166110a2611279565b73ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613c1c565b60405180910390fd5b80600d8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613bbc565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111f3611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611211611279565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613c1c565b60405180910390fd5b611271600061256e565b565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112aa61302a565b6112b38261236b565b9050919050565b6060600380546112c9906141a6565b80601f01602080910402602001604051908101604052809291908181526020018280546112f5906141a6565b80156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b190613b7c565b60405180910390fd5b6002600d54146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f690613b3c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081611429610c28565b6114339190613f4d565b1115611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613bdc565b60405180910390fd5b600b548111156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613b5c565b60405180910390fd5b60006114c433611ac4565b1480156114d15750600381105b156114e5576114e03382611cd4565b611646565b60006114f033611ac4565b1480156114fd5750600281115b1561156d5760028161150f9190614062565b600a5461151c9190613fd4565b34101561155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613cfc565b60405180910390fd5b6115683382611cd4565b611645565b600161157833611ac4565b14156115e95760018161158b9190614062565b600a546115989190613fd4565b3410156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190613cfc565b60405180910390fd5b6115e43382611cd4565b611644565b80600a546115f79190613fd4565b341015611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163090613cfc565b60405180910390fd5b6116433382611cd4565b5b5b5b50565b611651611ccc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613c5c565b60405180910390fd5b80600760006116cc611ccc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611779611ccc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117be9190613a3f565b60405180910390a35050565b60026009541415611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790613d7c565b60405180910390fd5b60026009819055506000600f6064476118299190613fa3565b6118339190613fd4565b905060007377e5c0704d9681765d9c7204d66e5110c6556ddd73ffffffffffffffffffffffffffffffffffffffff168260405161186f906139c3565b60006040518083038185875af1925050503d80600081146118ac576040519150601f19603f3d011682016040523d82523d6000602084013e6118b1565b606091505b50509050806118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90613cbc565b60405180910390fd5b60006118ff611279565b73ffffffffffffffffffffffffffffffffffffffff1647604051611922906139c3565b60006040518083038185875af1925050503d806000811461195f576040519150601f19603f3d011682016040523d82523d6000602084013e611964565b606091505b50509050806119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90613cbc565b60405180910390fd5b5050506001600981905550565b6119c0848484611db2565b6119cc84848484612632565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290613cdc565b60405180910390fd5b50505050565b6060611a1c82611cf2565b611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613c3c565b60405180910390fd5b6000611a656127c9565b90506000815111611a855760405180602001604052806000815250611ab0565b80611a8f8461285b565b604051602001611aa0929190613994565b6040516020818303038152906040525b915050919050565b600b5481565b60085481565b6000611acf826129bc565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b72611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611b90611279565b73ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd90613c1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90613a9c565b60405180910390fd5b611c5f8161256e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b611cee828260405180602001604052806000815250612aa5565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611dbd8261236b565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611de4611ccc565b73ffffffffffffffffffffffffffffffffffffffff161480611e405750611e09611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611e2884610a8a565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e5c5750611e5b8260000151611e56611ccc565b611ad6565b5b905080611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613c7c565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790613afc565b60405180910390fd5b611f8d8585856001612f85565b611f9d6000848460000151611d00565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661200b919061402e565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166120af9190613f07565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121b59190613f4d565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122fb5761222b81611cf2565b156122fa576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123638686866001612f8b565b505050505050565b61237361302a565b61237c82611cf2565b6123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b290613abc565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000831061241f5760017f0000000000000000000000000000000000000000000000000000000000000000846124129190614062565b61241c9190613f4d565b90505b60008390505b81811061252d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461251957809350505050612569565b5080806125259061417c565b915050612425565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613d9c565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126538473ffffffffffffffffffffffffffffffffffffffff16612f91565b156127bc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261267c611ccc565b8786866040518563ffffffff1660e01b815260040161269e94939291906139f3565b602060405180830381600087803b1580156126b857600080fd5b505af19250505080156126e957506040513d601f19601f820116820180604052508101906126e691906133ba565b60015b61276c573d8060008114612719576040519150601f19603f3d011682016040523d82523d6000602084013e61271e565b606091505b50600081511415612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b90613cdc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127c1565b600190505b949350505050565b6060600c80546127d8906141a6565b80601f0160208091040260200160405190810160405280929190818152602001828054612804906141a6565b80156128515780601f1061282657610100808354040283529160200191612851565b820191906000526020600020905b81548152906001019060200180831161283457829003601f168201915b5050505050905090565b606060008214156128a3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506129b7565b600082905060005b600082146128d55780806128be90614209565b915050600a826128ce9190613fa3565b91506128ab565b60008167ffffffffffffffff8111156128f1576128f061433f565b5b6040519080825280601f01601f1916602001820160405280156129235781602001600182028036833780820191505090505b5090505b600085146129b05760018261293c9190614062565b9150600a8561294b9190614252565b60306129579190613f4d565b60f81b81838151811061296d5761296c614310565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129a99190613fa3565b9450612927565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490613b1c565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390613d3c565b60405180910390fd5b612b2581611cf2565b15612b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5c90613d1c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf90613ddc565b60405180910390fd5b612bd56000858386612f85565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612cd29190613f07565b6fffffffffffffffffffffffffffffffff168152602001858360200151612cf99190613f07565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612f6857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f086000888488612632565b612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e90613cdc565b60405180910390fd5b8180612f5290614209565b9250508080612f6090614209565b915050612e97565b5080600181905550612f7d6000878588612f8b565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b828054612fb0906141a6565b90600052602060002090601f016020900481019282612fd25760008555613019565b82601f10612feb57805160ff1916838001178555613019565b82800160010185558215613019579182015b82811115613018578251825591602001919060010190612ffd565b5b5090506130269190613064565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561307d576000816000905550600101613065565b5090565b600061309461308f84613e57565b613e32565b9050828152602081018484840111156130b0576130af614373565b5b6130bb84828561413a565b509392505050565b60006130d66130d184613e88565b613e32565b9050828152602081018484840111156130f2576130f1614373565b5b6130fd84828561413a565b509392505050565b60008135905061311481614b0d565b92915050565b60008135905061312981614b24565b92915050565b60008135905061313e81614b3b565b92915050565b60008151905061315381614b3b565b92915050565b600082601f83011261316e5761316d61436e565b5b813561317e848260208601613081565b91505092915050565b600082601f83011261319c5761319b61436e565b5b81356131ac8482602086016130c3565b91505092915050565b6000813590506131c481614b52565b92915050565b6000602082840312156131e0576131df61437d565b5b60006131ee84828501613105565b91505092915050565b6000806040838503121561320e5761320d61437d565b5b600061321c85828601613105565b925050602061322d85828601613105565b9150509250929050565b6000806000606084860312156132505761324f61437d565b5b600061325e86828701613105565b935050602061326f86828701613105565b9250506040613280868287016131b5565b9150509250925092565b600080600080608085870312156132a4576132a361437d565b5b60006132b287828801613105565b94505060206132c387828801613105565b93505060406132d4878288016131b5565b925050606085013567ffffffffffffffff8111156132f5576132f4614378565b5b61330187828801613159565b91505092959194509250565b600080604083850312156133245761332361437d565b5b600061333285828601613105565b92505060206133438582860161311a565b9150509250929050565b600080604083850312156133645761336361437d565b5b600061337285828601613105565b9250506020613383858286016131b5565b9150509250929050565b6000602082840312156133a3576133a261437d565b5b60006133b18482850161312f565b91505092915050565b6000602082840312156133d0576133cf61437d565b5b60006133de84828501613144565b91505092915050565b6000602082840312156133fd576133fc61437d565b5b600082013567ffffffffffffffff81111561341b5761341a614378565b5b61342784828501613187565b91505092915050565b6000602082840312156134465761344561437d565b5b6000613454848285016131b5565b91505092915050565b61346681614096565b82525050565b61347581614096565b82525050565b613484816140a8565b82525050565b600061349582613eb9565b61349f8185613ecf565b93506134af818560208601614149565b6134b881614382565b840191505092915050565b60006134ce82613ec4565b6134d88185613eeb565b93506134e8818560208601614149565b6134f181614382565b840191505092915050565b600061350782613ec4565b6135118185613efc565b9350613521818560208601614149565b80840191505092915050565b600061353a602283613eeb565b915061354582614393565b604082019050919050565b600061355d602683613eeb565b9150613568826143e2565b604082019050919050565b6000613580602a83613eeb565b915061358b82614431565b604082019050919050565b60006135a3602383613eeb565b91506135ae82614480565b604082019050919050565b60006135c6602583613eeb565b91506135d1826144cf565b604082019050919050565b60006135e9603183613eeb565b91506135f48261451e565b604082019050919050565b600061360c601283613eeb565b91506136178261456d565b602082019050919050565b600061362f602283613eeb565b915061363a82614596565b604082019050919050565b6000613652601e83613eeb565b915061365d826145e5565b602082019050919050565b6000613675603983613eeb565b91506136808261460e565b604082019050919050565b6000613698602b83613eeb565b91506136a38261465d565b604082019050919050565b60006136bb601283613eeb565b91506136c6826146ac565b602082019050919050565b60006136de602683613eeb565b91506136e9826146d5565b604082019050919050565b6000613701600583613efc565b915061370c82614724565b600582019050919050565b6000613724602083613eeb565b915061372f8261474d565b602082019050919050565b6000613747602f83613eeb565b915061375282614776565b604082019050919050565b600061376a601a83613eeb565b9150613775826147c5565b602082019050919050565b600061378d603283613eeb565b9150613798826147ee565b604082019050919050565b60006137b0602283613eeb565b91506137bb8261483d565b604082019050919050565b60006137d3600083613ee0565b91506137de8261488c565b600082019050919050565b60006137f6601083613eeb565b91506138018261488f565b602082019050919050565b6000613819603383613eeb565b9150613824826148b8565b604082019050919050565b600061383c601683613eeb565b915061384782614907565b602082019050919050565b600061385f601d83613eeb565b915061386a82614930565b602082019050919050565b6000613882602183613eeb565b915061388d82614959565b604082019050919050565b60006138a5602e83613eeb565b91506138b0826149a8565b604082019050919050565b60006138c8601f83613eeb565b91506138d3826149f7565b602082019050919050565b60006138eb602f83613eeb565b91506138f682614a20565b604082019050919050565b600061390e602d83613eeb565b915061391982614a6f565b604082019050919050565b6000613931602283613eeb565b915061393c82614abe565b604082019050919050565b60408201600082015161395d600085018261345d565b5060208201516139706020850182613985565b50505050565b61397f8161411c565b82525050565b61398e81614126565b82525050565b60006139a082856134fc565b91506139ac82846134fc565b91506139b7826136f4565b91508190509392505050565b60006139ce826137c6565b9150819050919050565b60006020820190506139ed600083018461346c565b92915050565b6000608082019050613a08600083018761346c565b613a15602083018661346c565b613a226040830185613976565b8181036060830152613a34818461348a565b905095945050505050565b6000602082019050613a54600083018461347b565b92915050565b60006020820190508181036000830152613a7481846134c3565b905092915050565b60006020820190508181036000830152613a958161352d565b9050919050565b60006020820190508181036000830152613ab581613550565b9050919050565b60006020820190508181036000830152613ad581613573565b9050919050565b60006020820190508181036000830152613af581613596565b9050919050565b60006020820190508181036000830152613b15816135b9565b9050919050565b60006020820190508181036000830152613b35816135dc565b9050919050565b60006020820190508181036000830152613b55816135ff565b9050919050565b60006020820190508181036000830152613b7581613622565b9050919050565b60006020820190508181036000830152613b9581613645565b9050919050565b60006020820190508181036000830152613bb581613668565b9050919050565b60006020820190508181036000830152613bd58161368b565b9050919050565b60006020820190508181036000830152613bf5816136ae565b9050919050565b60006020820190508181036000830152613c15816136d1565b9050919050565b60006020820190508181036000830152613c3581613717565b9050919050565b60006020820190508181036000830152613c558161373a565b9050919050565b60006020820190508181036000830152613c758161375d565b9050919050565b60006020820190508181036000830152613c9581613780565b9050919050565b60006020820190508181036000830152613cb5816137a3565b9050919050565b60006020820190508181036000830152613cd5816137e9565b9050919050565b60006020820190508181036000830152613cf58161380c565b9050919050565b60006020820190508181036000830152613d158161382f565b9050919050565b60006020820190508181036000830152613d3581613852565b9050919050565b60006020820190508181036000830152613d5581613875565b9050919050565b60006020820190508181036000830152613d7581613898565b9050919050565b60006020820190508181036000830152613d95816138bb565b9050919050565b60006020820190508181036000830152613db5816138de565b9050919050565b60006020820190508181036000830152613dd581613901565b9050919050565b60006020820190508181036000830152613df581613924565b9050919050565b6000604082019050613e116000830184613947565b92915050565b6000602082019050613e2c6000830184613976565b92915050565b6000613e3c613e4d565b9050613e4882826141d8565b919050565b6000604051905090565b600067ffffffffffffffff821115613e7257613e7161433f565b5b613e7b82614382565b9050602081019050919050565b600067ffffffffffffffff821115613ea357613ea261433f565b5b613eac82614382565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613f12826140e0565b9150613f1d836140e0565b9250826fffffffffffffffffffffffffffffffff03821115613f4257613f41614283565b5b828201905092915050565b6000613f588261411c565b9150613f638361411c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f9857613f97614283565b5b828201905092915050565b6000613fae8261411c565b9150613fb98361411c565b925082613fc957613fc86142b2565b5b828204905092915050565b6000613fdf8261411c565b9150613fea8361411c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561402357614022614283565b5b828202905092915050565b6000614039826140e0565b9150614044836140e0565b92508282101561405757614056614283565b5b828203905092915050565b600061406d8261411c565b91506140788361411c565b92508282101561408b5761408a614283565b5b828203905092915050565b60006140a1826140fc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561416757808201518184015260208101905061414c565b83811115614176576000848401525b50505050565b60006141878261411c565b9150600082141561419b5761419a614283565b5b600182039050919050565b600060028204905060018216806141be57607f821691505b602082108114156141d2576141d16142e1565b5b50919050565b6141e182614382565b810181811067ffffffffffffffff82111715614200576141ff61433f565b5b80604052505050565b60006142148261411c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424757614246614283565b5b600182019050919050565b600061425d8261411c565b91506142688361411c565b925082614278576142776142b2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f45786365656473206d617820706572207472616e73616374696f6e206c696d6960008201527f7421000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614b1681614096565b8114614b2157600080fd5b50565b614b2d816140a8565b8114614b3857600080fd5b50565b614b44816140b4565b8114614b4f57600080fd5b50565b614b5b8161411c565b8114614b6657600080fd5b5056fea2646970667358221220cb891a0da7bf993ba28a1dad519746d6ae4c039252de10d0ae7572b6e058fecc64736f6c6343000807003368747470733a2f2f62616679626569666979326a7137787a78767272797a64786667703274776667637436666e6b633274686d72676b737879706e6c757571646e67692e697066732e6e667473746f726167652e6c696e6b2f

Deployed Bytecode

0x6080604052600436106101e35760003560e01c806370a0823111610102578063ac44600211610095578063d7224ba011610064578063d7224ba0146106e1578063dc33e6811461070c578063e985e9c514610749578063f2fde38b14610786576101e3565b8063ac44600214610639578063b88d4fde14610650578063c87b56dd14610679578063cb14eb87146106b6576101e3565b80639231ab2a116100d15780639231ab2a1461058c57806395d89b41146105c9578063a0712d68146105f4578063a22cb46514610610576101e3565b806370a08231146104e2578063715018a61461051f5780638d859f3e146105365780638da5cb5b14610561576101e3565b8063254107e01161017a5780634f6ccce7116101495780634f6ccce71461041657806355f804b3146104535780636352211e1461047c57806369ba1a75146104b9576101e3565b8063254107e01461035e5780632f745c59146103875780633fd17366146103c457806342842e0e146103ed576101e3565b8063095ea7b3116101b6578063095ea7b3146102b657806318160ddd146102df578063200d2ed21461030a57806323b872dd14610335576101e3565b806301ffc9a7146101e8578063050225ea1461022557806306fdde031461024e578063081812fc14610279575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a919061338d565b6107af565b60405161021c9190613a3f565b60405180910390f35b34801561023157600080fd5b5061024c6004803603810190610247919061334d565b6108f9565b005b34801561025a57600080fd5b506102636109f8565b6040516102709190613a5a565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190613430565b610a8a565b6040516102ad91906139d8565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061334d565b610b0f565b005b3480156102eb57600080fd5b506102f4610c28565b6040516103019190613e17565b60405180910390f35b34801561031657600080fd5b5061031f610c3d565b60405161032c9190613e17565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190613237565b610c43565b005b34801561036a57600080fd5b5061038560048036038101906103809190613430565b610c53565b005b34801561039357600080fd5b506103ae60048036038101906103a9919061334d565b610cd9565b6040516103bb9190613e17565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e69190613430565b610ed7565b005b3480156103f957600080fd5b50610414600480360381019061040f9190613237565b610f5d565b005b34801561042257600080fd5b5061043d60048036038101906104389190613430565b610f7d565b60405161044a9190613e17565b60405180910390f35b34801561045f57600080fd5b5061047a600480360381019061047591906133e7565b610fd0565b005b34801561048857600080fd5b506104a3600480360381019061049e9190613430565b611066565b6040516104b091906139d8565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613430565b61107c565b005b3480156104ee57600080fd5b50610509600480360381019061050491906131ca565b611102565b6040516105169190613e17565b60405180910390f35b34801561052b57600080fd5b506105346111eb565b005b34801561054257600080fd5b5061054b611273565b6040516105589190613e17565b60405180910390f35b34801561056d57600080fd5b50610576611279565b60405161058391906139d8565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190613430565b6112a2565b6040516105c09190613dfc565b60405180910390f35b3480156105d557600080fd5b506105de6112ba565b6040516105eb9190613a5a565b60405180910390f35b61060e60048036038101906106099190613430565b61134c565b005b34801561061c57600080fd5b506106376004803603810190610632919061330d565b611649565b005b34801561064557600080fd5b5061064e6117ca565b005b34801561065c57600080fd5b506106776004803603810190610672919061328a565b6119b5565b005b34801561068557600080fd5b506106a0600480360381019061069b9190613430565b611a11565b6040516106ad9190613a5a565b60405180910390f35b3480156106c257600080fd5b506106cb611ab8565b6040516106d89190613e17565b60405180910390f35b3480156106ed57600080fd5b506106f6611abe565b6040516107039190613e17565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e91906131ca565b611ac4565b6040516107409190613e17565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b91906131f7565b611ad6565b60405161077d9190613a3f565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a891906131ca565b611b6a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061087a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108e257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f257506108f182611c62565b5b9050919050565b610901611ccc565b73ffffffffffffffffffffffffffffffffffffffff1661091f611279565b73ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90613c1c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000027108161099f610c28565b6109a99190613f4d565b11156109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613bdc565b60405180910390fd5b6109f48282611cd4565b5050565b606060028054610a07906141a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a33906141a6565b8015610a805780601f10610a5557610100808354040283529160200191610a80565b820191906000526020600020905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b6000610a9582611cf2565b610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90613dbc565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b1a82611066565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613c9c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610baa611ccc565b73ffffffffffffffffffffffffffffffffffffffff161480610bd95750610bd881610bd3611ccc565b611ad6565b5b610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90613b9c565b60405180910390fd5b610c23838383611d00565b505050565b600060018054610c389190614062565b905090565b600d5481565b610c4e838383611db2565b505050565b610c5b611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610c79611279565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613c1c565b60405180910390fd5b80600b8190555050565b6000610ce483611102565b8210610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613a7c565b60405180910390fd5b6000610d2f610c28565b905060008060005b83811015610e95576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2957806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e815786841415610e72578195505050505050610ed1565b8380610e7d90614209565b9450505b508080610e8d90614209565b915050610d37565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890613d5c565b60405180910390fd5b92915050565b610edf611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610efd611279565b73ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613c1c565b60405180910390fd5b80600a8190555050565b610f78838383604051806020016040528060008152506119b5565b505050565b6000610f87610c28565b8210610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90613adc565b60405180910390fd5b819050919050565b610fd8611ccc565b73ffffffffffffffffffffffffffffffffffffffff16610ff6611279565b73ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613c1c565b60405180910390fd5b80600c9080519060200190611062929190612fa4565b5050565b60006110718261236b565b600001519050919050565b611084611ccc565b73ffffffffffffffffffffffffffffffffffffffff166110a2611279565b73ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613c1c565b60405180910390fd5b80600d8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613bbc565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111f3611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611211611279565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613c1c565b60405180910390fd5b611271600061256e565b565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112aa61302a565b6112b38261236b565b9050919050565b6060600380546112c9906141a6565b80601f01602080910402602001604051908101604052809291908181526020018280546112f5906141a6565b80156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b190613b7c565b60405180910390fd5b6002600d54146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f690613b3c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000271081611429610c28565b6114339190613f4d565b1115611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613bdc565b60405180910390fd5b600b548111156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613b5c565b60405180910390fd5b60006114c433611ac4565b1480156114d15750600381105b156114e5576114e03382611cd4565b611646565b60006114f033611ac4565b1480156114fd5750600281115b1561156d5760028161150f9190614062565b600a5461151c9190613fd4565b34101561155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613cfc565b60405180910390fd5b6115683382611cd4565b611645565b600161157833611ac4565b14156115e95760018161158b9190614062565b600a546115989190613fd4565b3410156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190613cfc565b60405180910390fd5b6115e43382611cd4565b611644565b80600a546115f79190613fd4565b341015611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163090613cfc565b60405180910390fd5b6116433382611cd4565b5b5b5b50565b611651611ccc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613c5c565b60405180910390fd5b80600760006116cc611ccc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611779611ccc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117be9190613a3f565b60405180910390a35050565b60026009541415611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790613d7c565b60405180910390fd5b60026009819055506000600f6064476118299190613fa3565b6118339190613fd4565b905060007377e5c0704d9681765d9c7204d66e5110c6556ddd73ffffffffffffffffffffffffffffffffffffffff168260405161186f906139c3565b60006040518083038185875af1925050503d80600081146118ac576040519150601f19603f3d011682016040523d82523d6000602084013e6118b1565b606091505b50509050806118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90613cbc565b60405180910390fd5b60006118ff611279565b73ffffffffffffffffffffffffffffffffffffffff1647604051611922906139c3565b60006040518083038185875af1925050503d806000811461195f576040519150601f19603f3d011682016040523d82523d6000602084013e611964565b606091505b50509050806119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90613cbc565b60405180910390fd5b5050506001600981905550565b6119c0848484611db2565b6119cc84848484612632565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290613cdc565b60405180910390fd5b50505050565b6060611a1c82611cf2565b611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613c3c565b60405180910390fd5b6000611a656127c9565b90506000815111611a855760405180602001604052806000815250611ab0565b80611a8f8461285b565b604051602001611aa0929190613994565b6040516020818303038152906040525b915050919050565b600b5481565b60085481565b6000611acf826129bc565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b72611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611b90611279565b73ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd90613c1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90613a9c565b60405180910390fd5b611c5f8161256e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b611cee828260405180602001604052806000815250612aa5565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611dbd8261236b565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611de4611ccc565b73ffffffffffffffffffffffffffffffffffffffff161480611e405750611e09611ccc565b73ffffffffffffffffffffffffffffffffffffffff16611e2884610a8a565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e5c5750611e5b8260000151611e56611ccc565b611ad6565b5b905080611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613c7c565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790613afc565b60405180910390fd5b611f8d8585856001612f85565b611f9d6000848460000151611d00565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661200b919061402e565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166120af9190613f07565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121b59190613f4d565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122fb5761222b81611cf2565b156122fa576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123638686866001612f8b565b505050505050565b61237361302a565b61237c82611cf2565b6123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b290613abc565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000001388831061241f5760017f0000000000000000000000000000000000000000000000000000000000001388846124129190614062565b61241c9190613f4d565b90505b60008390505b81811061252d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461251957809350505050612569565b5080806125259061417c565b915050612425565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613d9c565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126538473ffffffffffffffffffffffffffffffffffffffff16612f91565b156127bc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261267c611ccc565b8786866040518563ffffffff1660e01b815260040161269e94939291906139f3565b602060405180830381600087803b1580156126b857600080fd5b505af19250505080156126e957506040513d601f19601f820116820180604052508101906126e691906133ba565b60015b61276c573d8060008114612719576040519150601f19603f3d011682016040523d82523d6000602084013e61271e565b606091505b50600081511415612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b90613cdc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127c1565b600190505b949350505050565b6060600c80546127d8906141a6565b80601f0160208091040260200160405190810160405280929190818152602001828054612804906141a6565b80156128515780601f1061282657610100808354040283529160200191612851565b820191906000526020600020905b81548152906001019060200180831161283457829003601f168201915b5050505050905090565b606060008214156128a3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506129b7565b600082905060005b600082146128d55780806128be90614209565b915050600a826128ce9190613fa3565b91506128ab565b60008167ffffffffffffffff8111156128f1576128f061433f565b5b6040519080825280601f01601f1916602001820160405280156129235781602001600182028036833780820191505090505b5090505b600085146129b05760018261293c9190614062565b9150600a8561294b9190614252565b60306129579190613f4d565b60f81b81838151811061296d5761296c614310565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129a99190613fa3565b9450612927565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490613b1c565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390613d3c565b60405180910390fd5b612b2581611cf2565b15612b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5c90613d1c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000001388831115612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf90613ddc565b60405180910390fd5b612bd56000858386612f85565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612cd29190613f07565b6fffffffffffffffffffffffffffffffff168152602001858360200151612cf99190613f07565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612f6857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f086000888488612632565b612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e90613cdc565b60405180910390fd5b8180612f5290614209565b9250508080612f6090614209565b915050612e97565b5080600181905550612f7d6000878588612f8b565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b828054612fb0906141a6565b90600052602060002090601f016020900481019282612fd25760008555613019565b82601f10612feb57805160ff1916838001178555613019565b82800160010185558215613019579182015b82811115613018578251825591602001919060010190612ffd565b5b5090506130269190613064565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561307d576000816000905550600101613065565b5090565b600061309461308f84613e57565b613e32565b9050828152602081018484840111156130b0576130af614373565b5b6130bb84828561413a565b509392505050565b60006130d66130d184613e88565b613e32565b9050828152602081018484840111156130f2576130f1614373565b5b6130fd84828561413a565b509392505050565b60008135905061311481614b0d565b92915050565b60008135905061312981614b24565b92915050565b60008135905061313e81614b3b565b92915050565b60008151905061315381614b3b565b92915050565b600082601f83011261316e5761316d61436e565b5b813561317e848260208601613081565b91505092915050565b600082601f83011261319c5761319b61436e565b5b81356131ac8482602086016130c3565b91505092915050565b6000813590506131c481614b52565b92915050565b6000602082840312156131e0576131df61437d565b5b60006131ee84828501613105565b91505092915050565b6000806040838503121561320e5761320d61437d565b5b600061321c85828601613105565b925050602061322d85828601613105565b9150509250929050565b6000806000606084860312156132505761324f61437d565b5b600061325e86828701613105565b935050602061326f86828701613105565b9250506040613280868287016131b5565b9150509250925092565b600080600080608085870312156132a4576132a361437d565b5b60006132b287828801613105565b94505060206132c387828801613105565b93505060406132d4878288016131b5565b925050606085013567ffffffffffffffff8111156132f5576132f4614378565b5b61330187828801613159565b91505092959194509250565b600080604083850312156133245761332361437d565b5b600061333285828601613105565b92505060206133438582860161311a565b9150509250929050565b600080604083850312156133645761336361437d565b5b600061337285828601613105565b9250506020613383858286016131b5565b9150509250929050565b6000602082840312156133a3576133a261437d565b5b60006133b18482850161312f565b91505092915050565b6000602082840312156133d0576133cf61437d565b5b60006133de84828501613144565b91505092915050565b6000602082840312156133fd576133fc61437d565b5b600082013567ffffffffffffffff81111561341b5761341a614378565b5b61342784828501613187565b91505092915050565b6000602082840312156134465761344561437d565b5b6000613454848285016131b5565b91505092915050565b61346681614096565b82525050565b61347581614096565b82525050565b613484816140a8565b82525050565b600061349582613eb9565b61349f8185613ecf565b93506134af818560208601614149565b6134b881614382565b840191505092915050565b60006134ce82613ec4565b6134d88185613eeb565b93506134e8818560208601614149565b6134f181614382565b840191505092915050565b600061350782613ec4565b6135118185613efc565b9350613521818560208601614149565b80840191505092915050565b600061353a602283613eeb565b915061354582614393565b604082019050919050565b600061355d602683613eeb565b9150613568826143e2565b604082019050919050565b6000613580602a83613eeb565b915061358b82614431565b604082019050919050565b60006135a3602383613eeb565b91506135ae82614480565b604082019050919050565b60006135c6602583613eeb565b91506135d1826144cf565b604082019050919050565b60006135e9603183613eeb565b91506135f48261451e565b604082019050919050565b600061360c601283613eeb565b91506136178261456d565b602082019050919050565b600061362f602283613eeb565b915061363a82614596565b604082019050919050565b6000613652601e83613eeb565b915061365d826145e5565b602082019050919050565b6000613675603983613eeb565b91506136808261460e565b604082019050919050565b6000613698602b83613eeb565b91506136a38261465d565b604082019050919050565b60006136bb601283613eeb565b91506136c6826146ac565b602082019050919050565b60006136de602683613eeb565b91506136e9826146d5565b604082019050919050565b6000613701600583613efc565b915061370c82614724565b600582019050919050565b6000613724602083613eeb565b915061372f8261474d565b602082019050919050565b6000613747602f83613eeb565b915061375282614776565b604082019050919050565b600061376a601a83613eeb565b9150613775826147c5565b602082019050919050565b600061378d603283613eeb565b9150613798826147ee565b604082019050919050565b60006137b0602283613eeb565b91506137bb8261483d565b604082019050919050565b60006137d3600083613ee0565b91506137de8261488c565b600082019050919050565b60006137f6601083613eeb565b91506138018261488f565b602082019050919050565b6000613819603383613eeb565b9150613824826148b8565b604082019050919050565b600061383c601683613eeb565b915061384782614907565b602082019050919050565b600061385f601d83613eeb565b915061386a82614930565b602082019050919050565b6000613882602183613eeb565b915061388d82614959565b604082019050919050565b60006138a5602e83613eeb565b91506138b0826149a8565b604082019050919050565b60006138c8601f83613eeb565b91506138d3826149f7565b602082019050919050565b60006138eb602f83613eeb565b91506138f682614a20565b604082019050919050565b600061390e602d83613eeb565b915061391982614a6f565b604082019050919050565b6000613931602283613eeb565b915061393c82614abe565b604082019050919050565b60408201600082015161395d600085018261345d565b5060208201516139706020850182613985565b50505050565b61397f8161411c565b82525050565b61398e81614126565b82525050565b60006139a082856134fc565b91506139ac82846134fc565b91506139b7826136f4565b91508190509392505050565b60006139ce826137c6565b9150819050919050565b60006020820190506139ed600083018461346c565b92915050565b6000608082019050613a08600083018761346c565b613a15602083018661346c565b613a226040830185613976565b8181036060830152613a34818461348a565b905095945050505050565b6000602082019050613a54600083018461347b565b92915050565b60006020820190508181036000830152613a7481846134c3565b905092915050565b60006020820190508181036000830152613a958161352d565b9050919050565b60006020820190508181036000830152613ab581613550565b9050919050565b60006020820190508181036000830152613ad581613573565b9050919050565b60006020820190508181036000830152613af581613596565b9050919050565b60006020820190508181036000830152613b15816135b9565b9050919050565b60006020820190508181036000830152613b35816135dc565b9050919050565b60006020820190508181036000830152613b55816135ff565b9050919050565b60006020820190508181036000830152613b7581613622565b9050919050565b60006020820190508181036000830152613b9581613645565b9050919050565b60006020820190508181036000830152613bb581613668565b9050919050565b60006020820190508181036000830152613bd58161368b565b9050919050565b60006020820190508181036000830152613bf5816136ae565b9050919050565b60006020820190508181036000830152613c15816136d1565b9050919050565b60006020820190508181036000830152613c3581613717565b9050919050565b60006020820190508181036000830152613c558161373a565b9050919050565b60006020820190508181036000830152613c758161375d565b9050919050565b60006020820190508181036000830152613c9581613780565b9050919050565b60006020820190508181036000830152613cb5816137a3565b9050919050565b60006020820190508181036000830152613cd5816137e9565b9050919050565b60006020820190508181036000830152613cf58161380c565b9050919050565b60006020820190508181036000830152613d158161382f565b9050919050565b60006020820190508181036000830152613d3581613852565b9050919050565b60006020820190508181036000830152613d5581613875565b9050919050565b60006020820190508181036000830152613d7581613898565b9050919050565b60006020820190508181036000830152613d95816138bb565b9050919050565b60006020820190508181036000830152613db5816138de565b9050919050565b60006020820190508181036000830152613dd581613901565b9050919050565b60006020820190508181036000830152613df581613924565b9050919050565b6000604082019050613e116000830184613947565b92915050565b6000602082019050613e2c6000830184613976565b92915050565b6000613e3c613e4d565b9050613e4882826141d8565b919050565b6000604051905090565b600067ffffffffffffffff821115613e7257613e7161433f565b5b613e7b82614382565b9050602081019050919050565b600067ffffffffffffffff821115613ea357613ea261433f565b5b613eac82614382565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613f12826140e0565b9150613f1d836140e0565b9250826fffffffffffffffffffffffffffffffff03821115613f4257613f41614283565b5b828201905092915050565b6000613f588261411c565b9150613f638361411c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f9857613f97614283565b5b828201905092915050565b6000613fae8261411c565b9150613fb98361411c565b925082613fc957613fc86142b2565b5b828204905092915050565b6000613fdf8261411c565b9150613fea8361411c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561402357614022614283565b5b828202905092915050565b6000614039826140e0565b9150614044836140e0565b92508282101561405757614056614283565b5b828203905092915050565b600061406d8261411c565b91506140788361411c565b92508282101561408b5761408a614283565b5b828203905092915050565b60006140a1826140fc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561416757808201518184015260208101905061414c565b83811115614176576000848401525b50505050565b60006141878261411c565b9150600082141561419b5761419a614283565b5b600182039050919050565b600060028204905060018216806141be57607f821691505b602082108114156141d2576141d16142e1565b5b50919050565b6141e182614382565b810181811067ffffffffffffffff82111715614200576141ff61433f565b5b80604052505050565b60006142148261411c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424757614246614283565b5b600182019050919050565b600061425d8261411c565b91506142688361411c565b925082614278576142776142b2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f45786365656473206d617820706572207472616e73616374696f6e206c696d6960008201527f7421000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614b1681614096565b8114614b2157600080fd5b50565b614b2d816140a8565b8114614b3857600080fd5b50565b614b44816140b4565b8114614b4f57600080fd5b50565b614b5b8161411c565b8114614b6657600080fd5b5056fea2646970667358221220cb891a0da7bf993ba28a1dad519746d6ae4c039252de10d0ae7572b6e058fecc64736f6c63430008070033

Deployed Bytecode Sourcemap

19911:3331:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11171:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23048:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12743:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13944:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13560:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10139:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20302:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14627:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22033:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10422:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22858:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14774:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10240:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21931:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12620:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22960:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11546:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2628:103;;;;;;;;;;;;;:::i;:::-;;20019:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2405:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22355:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12842:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20693:877;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14153:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22506:348;;;;;;;;;;;;;:::i;:::-;;14936:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21577:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20059:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18066:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22244:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14434:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2740:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11171:370;11298:4;11343:25;11328:40;;;:11;:40;;;;:99;;;;11394:33;11379:48;;;:11;:48;;;;11328:99;:160;;;;11453:35;11438:50;;;:11;:50;;;;11328:160;:207;;;;11499:36;11523:11;11499:23;:36::i;:::-;11328:207;11314:221;;11171:370;;;:::o;23048:191::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23159:14:::1;23146:9;23130:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:43;;23122:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23203:30;23213:8;23223:9;23203;:30::i;:::-;23048:191:::0;;:::o;12743:94::-;12797:13;12826:5;12819:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12743:94;:::o;13944:204::-;14012:7;14036:16;14044:7;14036;:16::i;:::-;14028:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14118:15;:24;14134:7;14118:24;;;;;;;;;;;;;;;;;;;;;14111:31;;13944:204;;;:::o;13560:379::-;13629:13;13645:24;13661:7;13645:15;:24::i;:::-;13629:40;;13690:5;13684:11;;:2;:11;;;;13676:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13775:5;13759:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13784:37;13801:5;13808:12;:10;:12::i;:::-;13784:16;:37::i;:::-;13759:62;13743:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13905:28;13914:2;13918:7;13927:5;13905:8;:28::i;:::-;13622:317;13560:379;;:::o;10139:96::-;10192:7;10228:1;10215:12;;:14;;;;:::i;:::-;10208:21;;10139:96;:::o;20302:22::-;;;;:::o;14627:142::-;14735:28;14745:4;14751:2;14755:7;14735:9;:28::i;:::-;14627:142;;;:::o;22033:95::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:1:::1;22099:19;:23;;;;22033:95:::0;:::o;10422:744::-;10531:7;10566:16;10576:5;10566:9;:16::i;:::-;10558:5;:24;10550:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10628:22;10653:13;:11;:13::i;:::-;10628:38;;10673:19;10703:25;10753:9;10748:350;10772:14;10768:1;:18;10748:350;;;10802:31;10836:11;:14;10848:1;10836:14;;;;;;;;;;;10802:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10889:1;10863:28;;:9;:14;;;:28;;;10859:89;;10924:9;:14;;;10904:34;;10859:89;10981:5;10960:26;;:17;:26;;;10956:135;;;11018:5;11003:11;:20;10999:59;;;11045:1;11038:8;;;;;;;;;10999:59;11068:13;;;;;:::i;:::-;;;;10956:135;10793:305;10788:3;;;;;:::i;:::-;;;;10748:350;;;;11104:56;;;;;;;;;;:::i;:::-;;;;;;;;10422:744;;;;;:::o;22858:98::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22941:9:::1;22933:5;:17;;;;22858:98:::0;:::o;14774:157::-;14886:39;14903:4;14909:2;14913:7;14886:39;;;;;;;;;;;;:16;:39::i;:::-;14774:157;;;:::o;10240:177::-;10307:7;10339:13;:11;:13::i;:::-;10331:5;:21;10323:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10406:5;10399:12;;10240:177;;;:::o;21931:98::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22016:7:::1;22000:13;:23;;;;;;;;;;;;:::i;:::-;;21931:98:::0;:::o;12620:118::-;12684:7;12707:20;12719:7;12707:11;:20::i;:::-;:25;;;12700:32;;12620:118;;;:::o;22960:84::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23031:7:::1;23022:6;:16;;;;22960:84:::0;:::o;11546:211::-;11610:7;11651:1;11634:19;;:5;:19;;;;11626:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11723:12;:19;11736:5;11723:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11715:36;;11708:43;;11546:211;;;:::o;2628:103::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2693:30:::1;2720:1;2693:18;:30::i;:::-;2628:103::o:0;20019:35::-;;;;:::o;2405:87::-;2451:7;2478:6;;;;;;;;;;;2471:13;;2405:87;:::o;22355:147::-;22436:21;;:::i;:::-;22476:20;22488:7;22476:11;:20::i;:::-;22469:27;;22355:147;;;:::o;12842:98::-;12898:13;12927:7;12920:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12842:98;:::o;20693:877::-;20627:10;20614:23;;:9;:23;;;20606:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20780:1:::1;20770:6;;:11;20762:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20848:14;20836:8;20820:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:42;;20812:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:19;;20900:8;:31;;20892:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;21008:1;20980:24;20993:10;20980:12;:24::i;:::-;:29;:45;;;;;21024:1;21013:8;:12;20980:45;20977:588;;;21036:31;21046:10;21058:8;21036:9;:31::i;:::-;20977:588;;;21110:1;21082:24;21095:10;21082:12;:24::i;:::-;:29;:45;;;;;21126:1;21115:8;:12;21082:45;21079:486;;;21178:1;21169:8;:10;;;;:::i;:::-;21160:5;;:20;;;;:::i;:::-;21147:9;:33;;21139:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21218:31;21228:10;21240:8;21218:9;:31::i;:::-;21079:486;;;21299:1;21271:24;21284:10;21271:12;:24::i;:::-;:29;21268:297;;;21351:1;21342:8;:10;;;;:::i;:::-;21333:5;;:20;;;;:::i;:::-;21320:9;:33;;21312:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21391:31;21401:10;21413:8;21391:9;:31::i;:::-;21268:297;;;21480:8;21472:5;;:16;;;;:::i;:::-;21459:9;:29;;21451:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21526:31;21536:10;21548:8;21526:9;:31::i;:::-;21268:297;21079:486;20977:588;20693:877:::0;:::o;14153:274::-;14256:12;:10;:12::i;:::-;14244:24;;:8;:24;;;;14236:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14353:8;14308:18;:32;14327:12;:10;:12::i;:::-;14308:32;;;;;;;;;;;;;;;:42;14341:8;14308:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14402:8;14373:48;;14388:12;:10;:12::i;:::-;14373:48;;;14412:8;14373:48;;;;;;:::i;:::-;;;;;;;;14153:274;;:::o;22506:348::-;187:1;333:7;;:19;;325:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;187:1;394:7;:18;;;;22560:6:::1;22595:2;22591:3;22569:21;:25;;;;:::i;:::-;:28;;;;:::i;:::-;22560:37;;22605:13;22624:42;:47;;22679:1;22624:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22604:81;;;22700:8;22692:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;22739:13;22758:7;:5;:7::i;:::-;:12;;22778:21;22758:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22738:66;;;22819:8;22811:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;22553:301;;;143:1:::0;437:7;:22;;;;22506:348::o;14936:311::-;15073:28;15083:4;15089:2;15093:7;15073:9;:28::i;:::-;15124:48;15147:4;15153:2;15157:7;15166:5;15124:22;:48::i;:::-;15108:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;14936:311;;;;:::o;21577:350::-;21650:13;21680:16;21688:7;21680;:16::i;:::-;21672:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21754:21;21778:10;:8;:10::i;:::-;21754:34;;21833:1;21815:7;21809:21;:25;:112;;;;;;;;;;;;;;;;;21870:7;21879:18;:7;:16;:18::i;:::-;21853:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21809:112;21795:126;;;21577:350;;;:::o;20059:40::-;;;;:::o;18066:43::-;;;;:::o;22244:107::-;22302:7;22325:20;22339:5;22325:13;:20::i;:::-;22318:27;;22244:107;;;:::o;14434:186::-;14556:4;14579:18;:25;14598:5;14579:25;;;;;;;;;;;;;;;:35;14605:8;14579:35;;;;;;;;;;;;;;;;;;;;;;;;;14572:42;;14434:186;;;;:::o;2740:201::-;2550:12;:10;:12::i;:::-;2539:23;;:7;:5;:7::i;:::-;:23;;;2531:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2849:1:::1;2829:22;;:8;:22;;;;2821:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2905:28;2924:8;2905:18;:28::i;:::-;2740:201:::0;:::o;7058:157::-;7143:4;7182:25;7167:40;;;:11;:40;;;;7160:47;;7058:157;;;:::o;1948:98::-;2001:7;2028:10;2021:17;;1948:98;:::o;15363:::-;15428:27;15438:2;15442:8;15428:27;;;;;;;;;;;;:9;:27::i;:::-;15363:98;;:::o;15252:105::-;15309:4;15339:12;;15329:7;:22;15322:29;;15252:105;;;:::o;17888:172::-;18012:2;17985:15;:24;18001:7;17985:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18046:7;18042:2;18026:28;;18035:5;18026:28;;;;;;;;;;;;17888:172;;;:::o;16623:1260::-;16720:35;16758:20;16770:7;16758:11;:20::i;:::-;16720:58;;16787:22;16829:13;:18;;;16813:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;16882:12;:10;:12::i;:::-;16858:36;;:20;16870:7;16858:11;:20::i;:::-;:36;;;16813:81;:142;;;;16905:50;16922:13;:18;;;16942:12;:10;:12::i;:::-;16905:16;:50::i;:::-;16813:142;16787:169;;16981:17;16965:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17113:4;17091:26;;:13;:18;;;:26;;;17075:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17202:1;17188:16;;:2;:16;;;;17180:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17255:43;17277:4;17283:2;17287:7;17296:1;17255:21;:43::i;:::-;17306:49;17323:1;17327:7;17336:13;:18;;;17306:8;:49::i;:::-;17394:1;17364:12;:18;17377:4;17364:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17430:1;17402:12;:16;17415:2;17402:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17461:43;;;;;;;;17476:2;17461:43;;;;;;17487:15;17461:43;;;;;17438:11;:20;17450:7;17438:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17512:19;17544:1;17534:7;:11;;;;:::i;:::-;17512:33;;17597:1;17556:43;;:11;:24;17568:11;17556:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17552:236;;;17614:20;17622:11;17614:7;:20::i;:::-;17610:171;;;17674:97;;;;;;;;17701:13;:18;;;17674:97;;;;;;17732:13;:28;;;17674:97;;;;;17647:11;:24;17659:11;17647:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17610:171;17552:236;17820:7;17816:2;17801:27;;17810:4;17801:27;;;;;;;;;;;;17835:42;17856:4;17862:2;17866:7;17875:1;17835:20;:42::i;:::-;16713:1170;;;16623:1260;;;:::o;12009:606::-;12085:21;;:::i;:::-;12126:16;12134:7;12126;:16::i;:::-;12118:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12198:26;12246:12;12235:7;:23;12231:93;;12315:1;12300:12;12290:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12269:47;;12231:93;12337:12;12352:7;12337:22;;12332:212;12369:18;12361:4;:26;12332:212;;12406:31;12440:11;:17;12452:4;12440:17;;;;;;;;;;;12406:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12496:1;12470:28;;:9;:14;;;:28;;;12466:71;;12518:9;12511:16;;;;;;;12466:71;12397:147;12389:6;;;;;:::i;:::-;;;;12332:212;;;;12552:57;;;;;;;;;;:::i;:::-;;;;;;;;12009:606;;;;:::o;2950:191::-;3024:16;3043:6;;;;;;;;;;;3024:25;;3069:8;3060:6;;:17;;;;;;;;;;;;;;;;;;3124:8;3093:40;;3114:8;3093:40;;;;;;;;;;;;3013:128;2950:191;:::o;18866:690::-;19003:4;19020:15;:2;:13;;;:15::i;:::-;19016:535;;;19075:2;19059:36;;;19096:12;:10;:12::i;:::-;19110:4;19116:7;19125:5;19059:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19046:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19307:1;19290:6;:13;:18;19286:215;;;19323:61;;;;;;;;;;:::i;:::-;;;;;;;;19286:215;19469:6;19463:13;19454:6;19450:2;19446:15;19439:38;19046:464;19191:45;;;19181:55;;;:6;:55;;;;19174:62;;;;;19016:535;19539:4;19532:11;;18866:690;;;;;;;:::o;22132:108::-;22192:13;22221;22214:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22132:108;:::o;565:533::-;621:13;661:1;652:5;:10;648:53;;;679:10;;;;;;;;;;;;;;;;;;;;;648:53;711:12;726:5;711:20;;742:14;767:78;782:1;774:4;:9;767:78;;800:8;;;;;:::i;:::-;;;;831:2;823:10;;;;;:::i;:::-;;;767:78;;;855:19;887:6;877:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:39;;905:154;921:1;912:5;:10;905:154;;949:1;939:11;;;;;:::i;:::-;;;1016:2;1008:5;:10;;;;:::i;:::-;995:2;:24;;;;:::i;:::-;982:39;;965:6;972;965:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1045:2;1036:11;;;;;:::i;:::-;;;905:154;;;1083:6;1069:21;;;;;565:533;;;;:::o;11763:240::-;11824:7;11873:1;11856:19;;:5;:19;;;;11840:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;11964:12;:19;11977:5;11964:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;11956:41;;11949:48;;11763:240;;;:::o;15466:1152::-;15571:20;15594:12;;15571:35;;15635:1;15621:16;;:2;:16;;;;15613:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15692:21;15700:12;15692:7;:21::i;:::-;15691:22;15683:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15774:12;15762:8;:24;;15754:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15834:61;15864:1;15868:2;15872:12;15886:8;15834:21;:61::i;:::-;15904:30;15937:12;:16;15950:2;15937:16;;;;;;;;;;;;;;;15904:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15979:119;;;;;;;;16029:8;15999:11;:19;;;:39;;;;:::i;:::-;15979:119;;;;;;16082:8;16047:11;:24;;;:44;;;;:::i;:::-;15979:119;;;;;15960:12;:16;15973:2;15960:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16133:43;;;;;;;;16148:2;16133:43;;;;;;16159:15;16133:43;;;;;16105:11;:25;16117:12;16105:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16185:20;16208:12;16185:35;;16234:9;16229:281;16253:8;16249:1;:12;16229:281;;;16307:12;16303:2;16282:38;;16299:1;16282:38;;;;;;;;;;;;16347:59;16378:1;16382:2;16386:12;16400:5;16347:22;:59::i;:::-;16329:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16488:14;;;;;:::i;:::-;;;;16263:3;;;;;:::i;:::-;;;;16229:281;;;;16533:12;16518;:27;;;;16552:60;16581:1;16585:2;16589:12;16603:8;16552:20;:60::i;:::-;15564:1054;;;15466:1152;;;:::o;19561:141::-;;;;;:::o;19707:140::-;;;;;:::o;3173:197::-;3233:4;3251:12;3318:7;3306:20;3298:28;;3361:1;3354:4;:8;3347:15;;;3173: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:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:327::-;5678:6;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:52;5922:7;5913:6;5902:9;5898:22;5878:52;:::i;:::-;5868:62;;5824:116;5620:327;;;;:::o;5953:349::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:63;6277:7;6268:6;6257:9;6253:22;6222:63;:::i;:::-;6212:73;;6168:127;5953:349;;;;:::o;6308:509::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6580:1;6569:9;6565:17;6552:31;6610:18;6602:6;6599:30;6596:117;;;6632:79;;:::i;:::-;6596:117;6737:63;6792:7;6783:6;6772:9;6768:22;6737:63;:::i;:::-;6727:73;;6523:287;6308:509;;;;:::o;6823:329::-;6882:6;6931:2;6919:9;6910:7;6906:23;6902:32;6899:119;;;6937:79;;:::i;:::-;6899:119;7057:1;7082:53;7127:7;7118:6;7107:9;7103:22;7082:53;:::i;:::-;7072:63;;7028:117;6823:329;;;;:::o;7158:108::-;7235:24;7253:5;7235:24;:::i;:::-;7230:3;7223:37;7158:108;;:::o;7272:118::-;7359:24;7377:5;7359:24;:::i;:::-;7354:3;7347:37;7272:118;;:::o;7396:109::-;7477:21;7492:5;7477:21;:::i;:::-;7472:3;7465:34;7396:109;;:::o;7511:360::-;7597:3;7625:38;7657:5;7625:38;:::i;:::-;7679:70;7742:6;7737:3;7679:70;:::i;:::-;7672:77;;7758:52;7803:6;7798:3;7791:4;7784:5;7780:16;7758:52;:::i;:::-;7835:29;7857:6;7835:29;:::i;:::-;7830:3;7826:39;7819:46;;7601:270;7511:360;;;;:::o;7877:364::-;7965:3;7993:39;8026:5;7993:39;:::i;:::-;8048:71;8112:6;8107:3;8048:71;:::i;:::-;8041:78;;8128:52;8173:6;8168:3;8161:4;8154:5;8150:16;8128:52;:::i;:::-;8205:29;8227:6;8205:29;:::i;:::-;8200:3;8196:39;8189:46;;7969:272;7877:364;;;;:::o;8247:377::-;8353:3;8381:39;8414:5;8381:39;:::i;:::-;8436:89;8518:6;8513:3;8436:89;:::i;:::-;8429:96;;8534:52;8579:6;8574:3;8567:4;8560:5;8556:16;8534:52;:::i;:::-;8611:6;8606:3;8602:16;8595:23;;8357:267;8247:377;;;;:::o;8630:366::-;8772:3;8793:67;8857:2;8852:3;8793:67;:::i;:::-;8786:74;;8869:93;8958:3;8869:93;:::i;:::-;8987:2;8982:3;8978:12;8971:19;;8630:366;;;:::o;9002:::-;9144:3;9165:67;9229:2;9224:3;9165:67;:::i;:::-;9158:74;;9241:93;9330:3;9241:93;:::i;:::-;9359:2;9354:3;9350:12;9343:19;;9002:366;;;:::o;9374:::-;9516:3;9537:67;9601:2;9596:3;9537:67;:::i;:::-;9530:74;;9613:93;9702:3;9613:93;:::i;:::-;9731:2;9726:3;9722:12;9715:19;;9374:366;;;:::o;9746:::-;9888:3;9909:67;9973:2;9968:3;9909:67;:::i;:::-;9902:74;;9985:93;10074:3;9985:93;:::i;:::-;10103:2;10098:3;10094:12;10087:19;;9746:366;;;:::o;10118:::-;10260:3;10281:67;10345:2;10340:3;10281:67;:::i;:::-;10274:74;;10357:93;10446:3;10357:93;:::i;:::-;10475:2;10470:3;10466:12;10459:19;;10118:366;;;:::o;10490:::-;10632:3;10653:67;10717:2;10712:3;10653:67;:::i;:::-;10646:74;;10729:93;10818:3;10729:93;:::i;:::-;10847:2;10842:3;10838:12;10831:19;;10490:366;;;:::o;10862:::-;11004:3;11025:67;11089:2;11084:3;11025:67;:::i;:::-;11018:74;;11101:93;11190:3;11101:93;:::i;:::-;11219:2;11214:3;11210:12;11203:19;;10862:366;;;:::o;11234:::-;11376:3;11397:67;11461:2;11456:3;11397:67;:::i;:::-;11390:74;;11473:93;11562:3;11473:93;:::i;:::-;11591:2;11586:3;11582:12;11575:19;;11234:366;;;:::o;11606:::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:::-;12120:3;12141:67;12205:2;12200:3;12141:67;:::i;:::-;12134:74;;12217:93;12306:3;12217:93;:::i;:::-;12335:2;12330:3;12326:12;12319:19;;11978:366;;;:::o;12350:::-;12492:3;12513:67;12577:2;12572:3;12513:67;:::i;:::-;12506:74;;12589:93;12678:3;12589:93;:::i;:::-;12707:2;12702:3;12698:12;12691:19;;12350:366;;;:::o;12722:::-;12864:3;12885:67;12949:2;12944:3;12885:67;:::i;:::-;12878:74;;12961:93;13050:3;12961:93;:::i;:::-;13079:2;13074:3;13070:12;13063:19;;12722:366;;;:::o;13094:::-;13236:3;13257:67;13321:2;13316:3;13257:67;:::i;:::-;13250:74;;13333:93;13422:3;13333:93;:::i;:::-;13451:2;13446:3;13442:12;13435:19;;13094:366;;;:::o;13466:400::-;13626:3;13647:84;13729:1;13724:3;13647:84;:::i;:::-;13640:91;;13740:93;13829:3;13740:93;:::i;:::-;13858:1;13853:3;13849:11;13842:18;;13466:400;;;:::o;13872:366::-;14014:3;14035:67;14099:2;14094:3;14035:67;:::i;:::-;14028:74;;14111:93;14200:3;14111:93;:::i;:::-;14229:2;14224:3;14220:12;14213:19;;13872:366;;;:::o;14244:::-;14386:3;14407:67;14471:2;14466:3;14407:67;:::i;:::-;14400:74;;14483:93;14572:3;14483:93;:::i;:::-;14601:2;14596:3;14592:12;14585:19;;14244:366;;;:::o;14616:::-;14758:3;14779:67;14843:2;14838:3;14779:67;:::i;:::-;14772:74;;14855:93;14944:3;14855:93;:::i;:::-;14973:2;14968:3;14964:12;14957:19;;14616:366;;;:::o;14988:::-;15130:3;15151:67;15215:2;15210:3;15151:67;:::i;:::-;15144:74;;15227:93;15316:3;15227:93;:::i;:::-;15345:2;15340:3;15336:12;15329:19;;14988:366;;;:::o;15360:::-;15502:3;15523:67;15587:2;15582:3;15523:67;:::i;:::-;15516:74;;15599:93;15688:3;15599:93;:::i;:::-;15717:2;15712:3;15708:12;15701:19;;15360:366;;;:::o;15732:398::-;15891:3;15912:83;15993:1;15988:3;15912:83;:::i;:::-;15905:90;;16004:93;16093:3;16004:93;:::i;:::-;16122:1;16117:3;16113:11;16106:18;;15732:398;;;:::o;16136:366::-;16278:3;16299:67;16363:2;16358:3;16299:67;:::i;:::-;16292:74;;16375:93;16464:3;16375:93;:::i;:::-;16493:2;16488:3;16484:12;16477:19;;16136:366;;;:::o;16508:::-;16650:3;16671:67;16735:2;16730:3;16671:67;:::i;:::-;16664:74;;16747:93;16836:3;16747:93;:::i;:::-;16865:2;16860:3;16856:12;16849:19;;16508:366;;;:::o;16880:::-;17022:3;17043:67;17107:2;17102:3;17043:67;:::i;:::-;17036:74;;17119:93;17208:3;17119:93;:::i;:::-;17237:2;17232:3;17228:12;17221:19;;16880:366;;;:::o;17252:::-;17394:3;17415:67;17479:2;17474:3;17415:67;:::i;:::-;17408:74;;17491:93;17580:3;17491:93;:::i;:::-;17609:2;17604:3;17600:12;17593:19;;17252:366;;;:::o;17624:::-;17766:3;17787:67;17851:2;17846:3;17787:67;:::i;:::-;17780:74;;17863:93;17952:3;17863:93;:::i;:::-;17981:2;17976:3;17972:12;17965:19;;17624:366;;;:::o;17996:::-;18138:3;18159:67;18223:2;18218:3;18159:67;:::i;:::-;18152:74;;18235:93;18324:3;18235:93;:::i;:::-;18353:2;18348:3;18344:12;18337:19;;17996:366;;;:::o;18368:::-;18510:3;18531:67;18595:2;18590:3;18531:67;:::i;:::-;18524:74;;18607:93;18696:3;18607:93;:::i;:::-;18725:2;18720:3;18716:12;18709:19;;18368:366;;;:::o;18740:::-;18882:3;18903:67;18967:2;18962:3;18903:67;:::i;:::-;18896:74;;18979:93;19068:3;18979:93;:::i;:::-;19097:2;19092:3;19088:12;19081:19;;18740:366;;;:::o;19112:::-;19254:3;19275:67;19339:2;19334:3;19275:67;:::i;:::-;19268:74;;19351:93;19440:3;19351:93;:::i;:::-;19469:2;19464:3;19460:12;19453:19;;19112:366;;;:::o;19484:::-;19626:3;19647:67;19711:2;19706:3;19647:67;:::i;:::-;19640:74;;19723:93;19812:3;19723:93;:::i;:::-;19841:2;19836:3;19832:12;19825:19;;19484:366;;;:::o;19926:527::-;20085:4;20080:3;20076:14;20172:4;20165:5;20161:16;20155:23;20191:63;20248:4;20243:3;20239:14;20225:12;20191:63;:::i;:::-;20100:164;20356:4;20349:5;20345:16;20339:23;20375:61;20430:4;20425:3;20421:14;20407:12;20375:61;:::i;:::-;20274:172;20054:399;19926:527;;:::o;20459:118::-;20546:24;20564:5;20546:24;:::i;:::-;20541:3;20534:37;20459:118;;:::o;20583:105::-;20658:23;20675:5;20658:23;:::i;:::-;20653:3;20646:36;20583:105;;:::o;20694:701::-;20975:3;20997:95;21088:3;21079:6;20997:95;:::i;:::-;20990:102;;21109:95;21200:3;21191:6;21109:95;:::i;:::-;21102:102;;21221:148;21365:3;21221:148;:::i;:::-;21214:155;;21386:3;21379:10;;20694:701;;;;;:::o;21401:379::-;21585:3;21607:147;21750:3;21607:147;:::i;:::-;21600:154;;21771:3;21764:10;;21401:379;;;:::o;21786:222::-;21879:4;21917:2;21906:9;21902:18;21894:26;;21930:71;21998:1;21987:9;21983:17;21974:6;21930:71;:::i;:::-;21786:222;;;;:::o;22014:640::-;22209:4;22247:3;22236:9;22232:19;22224:27;;22261:71;22329:1;22318:9;22314:17;22305:6;22261:71;:::i;:::-;22342:72;22410:2;22399:9;22395:18;22386:6;22342:72;:::i;:::-;22424;22492:2;22481:9;22477:18;22468:6;22424:72;:::i;:::-;22543:9;22537:4;22533:20;22528:2;22517:9;22513:18;22506:48;22571:76;22642:4;22633:6;22571:76;:::i;:::-;22563:84;;22014:640;;;;;;;:::o;22660:210::-;22747:4;22785:2;22774:9;22770:18;22762:26;;22798:65;22860:1;22849:9;22845:17;22836:6;22798:65;:::i;:::-;22660:210;;;;:::o;22876:313::-;22989:4;23027:2;23016:9;23012:18;23004:26;;23076:9;23070:4;23066:20;23062:1;23051:9;23047:17;23040:47;23104:78;23177:4;23168:6;23104:78;:::i;:::-;23096:86;;22876:313;;;;:::o;23195:419::-;23361:4;23399:2;23388:9;23384:18;23376:26;;23448:9;23442:4;23438:20;23434:1;23423:9;23419:17;23412:47;23476:131;23602:4;23476:131;:::i;:::-;23468:139;;23195:419;;;:::o;23620:::-;23786:4;23824:2;23813:9;23809:18;23801:26;;23873:9;23867:4;23863:20;23859:1;23848:9;23844:17;23837:47;23901:131;24027:4;23901:131;:::i;:::-;23893:139;;23620:419;;;:::o;24045:::-;24211:4;24249:2;24238:9;24234:18;24226:26;;24298:9;24292:4;24288:20;24284:1;24273:9;24269:17;24262:47;24326:131;24452:4;24326:131;:::i;:::-;24318:139;;24045:419;;;:::o;24470:::-;24636:4;24674:2;24663:9;24659:18;24651:26;;24723:9;24717:4;24713:20;24709:1;24698:9;24694:17;24687:47;24751:131;24877:4;24751:131;:::i;:::-;24743:139;;24470:419;;;:::o;24895:::-;25061:4;25099:2;25088:9;25084:18;25076:26;;25148:9;25142:4;25138:20;25134:1;25123:9;25119:17;25112:47;25176:131;25302:4;25176:131;:::i;:::-;25168:139;;24895:419;;;:::o;25320:::-;25486:4;25524:2;25513:9;25509:18;25501:26;;25573:9;25567:4;25563:20;25559:1;25548:9;25544:17;25537:47;25601:131;25727:4;25601:131;:::i;:::-;25593:139;;25320:419;;;:::o;25745:::-;25911:4;25949:2;25938:9;25934:18;25926:26;;25998:9;25992:4;25988:20;25984:1;25973:9;25969:17;25962:47;26026:131;26152:4;26026:131;:::i;:::-;26018:139;;25745:419;;;:::o;26170:::-;26336:4;26374:2;26363:9;26359:18;26351:26;;26423:9;26417:4;26413:20;26409:1;26398:9;26394:17;26387:47;26451:131;26577:4;26451:131;:::i;:::-;26443:139;;26170:419;;;:::o;26595:::-;26761:4;26799:2;26788:9;26784:18;26776:26;;26848:9;26842:4;26838:20;26834:1;26823:9;26819:17;26812:47;26876:131;27002:4;26876:131;:::i;:::-;26868:139;;26595:419;;;:::o;27020:::-;27186:4;27224:2;27213:9;27209:18;27201:26;;27273:9;27267:4;27263:20;27259:1;27248:9;27244:17;27237:47;27301:131;27427:4;27301:131;:::i;:::-;27293:139;;27020:419;;;:::o;27445:::-;27611:4;27649:2;27638:9;27634:18;27626:26;;27698:9;27692:4;27688:20;27684:1;27673:9;27669:17;27662:47;27726:131;27852:4;27726:131;:::i;:::-;27718:139;;27445:419;;;:::o;27870:::-;28036:4;28074:2;28063:9;28059:18;28051:26;;28123:9;28117:4;28113:20;28109:1;28098:9;28094:17;28087:47;28151:131;28277:4;28151:131;:::i;:::-;28143:139;;27870:419;;;:::o;28295:::-;28461:4;28499:2;28488:9;28484:18;28476:26;;28548:9;28542:4;28538:20;28534:1;28523:9;28519:17;28512:47;28576:131;28702:4;28576:131;:::i;:::-;28568:139;;28295:419;;;:::o;28720:::-;28886:4;28924:2;28913:9;28909:18;28901:26;;28973:9;28967:4;28963:20;28959:1;28948:9;28944:17;28937:47;29001:131;29127:4;29001:131;:::i;:::-;28993:139;;28720:419;;;:::o;29145:::-;29311:4;29349:2;29338:9;29334:18;29326:26;;29398:9;29392:4;29388:20;29384:1;29373:9;29369:17;29362:47;29426:131;29552:4;29426:131;:::i;:::-;29418:139;;29145:419;;;:::o;29570:::-;29736:4;29774:2;29763:9;29759:18;29751:26;;29823:9;29817:4;29813:20;29809:1;29798:9;29794:17;29787:47;29851:131;29977:4;29851:131;:::i;:::-;29843:139;;29570:419;;;:::o;29995:::-;30161:4;30199:2;30188:9;30184:18;30176:26;;30248:9;30242:4;30238:20;30234:1;30223:9;30219:17;30212:47;30276:131;30402:4;30276:131;:::i;:::-;30268:139;;29995:419;;;:::o;30420:::-;30586:4;30624:2;30613:9;30609:18;30601:26;;30673:9;30667:4;30663:20;30659:1;30648:9;30644:17;30637:47;30701:131;30827:4;30701:131;:::i;:::-;30693:139;;30420:419;;;:::o;30845:::-;31011:4;31049:2;31038:9;31034:18;31026:26;;31098:9;31092:4;31088:20;31084:1;31073:9;31069:17;31062:47;31126:131;31252:4;31126:131;:::i;:::-;31118:139;;30845:419;;;:::o;31270:::-;31436:4;31474:2;31463:9;31459:18;31451:26;;31523:9;31517:4;31513:20;31509:1;31498:9;31494:17;31487:47;31551:131;31677:4;31551:131;:::i;:::-;31543:139;;31270:419;;;:::o;31695:::-;31861:4;31899:2;31888:9;31884:18;31876:26;;31948:9;31942:4;31938:20;31934:1;31923:9;31919:17;31912:47;31976:131;32102:4;31976:131;:::i;:::-;31968:139;;31695:419;;;:::o;32120:::-;32286:4;32324:2;32313:9;32309:18;32301:26;;32373:9;32367:4;32363:20;32359:1;32348:9;32344:17;32337:47;32401:131;32527:4;32401:131;:::i;:::-;32393:139;;32120:419;;;:::o;32545:::-;32711:4;32749:2;32738:9;32734:18;32726:26;;32798:9;32792:4;32788:20;32784:1;32773:9;32769:17;32762:47;32826:131;32952:4;32826:131;:::i;:::-;32818:139;;32545:419;;;:::o;32970:::-;33136:4;33174:2;33163:9;33159:18;33151:26;;33223:9;33217:4;33213:20;33209:1;33198:9;33194:17;33187:47;33251:131;33377:4;33251:131;:::i;:::-;33243:139;;32970:419;;;:::o;33395:::-;33561:4;33599:2;33588:9;33584:18;33576:26;;33648:9;33642:4;33638:20;33634:1;33623:9;33619:17;33612:47;33676:131;33802:4;33676:131;:::i;:::-;33668:139;;33395:419;;;:::o;33820:::-;33986:4;34024:2;34013:9;34009:18;34001:26;;34073:9;34067:4;34063:20;34059:1;34048:9;34044:17;34037:47;34101:131;34227:4;34101:131;:::i;:::-;34093:139;;33820:419;;;:::o;34245:::-;34411:4;34449:2;34438:9;34434:18;34426:26;;34498:9;34492:4;34488:20;34484:1;34473:9;34469:17;34462:47;34526:131;34652:4;34526:131;:::i;:::-;34518:139;;34245:419;;;:::o;34670:::-;34836:4;34874:2;34863:9;34859:18;34851:26;;34923:9;34917:4;34913:20;34909:1;34898:9;34894:17;34887:47;34951:131;35077:4;34951:131;:::i;:::-;34943:139;;34670:419;;;:::o;35095:346::-;35250:4;35288:2;35277:9;35273:18;35265:26;;35301:133;35431:1;35420:9;35416:17;35407:6;35301:133;:::i;:::-;35095:346;;;;:::o;35447:222::-;35540:4;35578:2;35567:9;35563:18;35555:26;;35591:71;35659:1;35648:9;35644:17;35635:6;35591:71;:::i;:::-;35447:222;;;;:::o;35675:129::-;35709:6;35736:20;;:::i;:::-;35726:30;;35765:33;35793:4;35785:6;35765:33;:::i;:::-;35675:129;;;:::o;35810:75::-;35843:6;35876:2;35870:9;35860:19;;35810:75;:::o;35891:307::-;35952:4;36042:18;36034:6;36031:30;36028:56;;;36064:18;;:::i;:::-;36028:56;36102:29;36124:6;36102:29;:::i;:::-;36094:37;;36186:4;36180;36176:15;36168:23;;35891:307;;;:::o;36204:308::-;36266:4;36356:18;36348:6;36345:30;36342:56;;;36378:18;;:::i;:::-;36342:56;36416:29;36438:6;36416:29;:::i;:::-;36408:37;;36500:4;36494;36490:15;36482:23;;36204:308;;;:::o;36518:98::-;36569:6;36603:5;36597:12;36587:22;;36518:98;;;:::o;36622:99::-;36674:6;36708:5;36702:12;36692:22;;36622:99;;;:::o;36727:168::-;36810:11;36844:6;36839:3;36832:19;36884:4;36879:3;36875:14;36860:29;;36727:168;;;;:::o;36901:147::-;37002:11;37039:3;37024:18;;36901:147;;;;:::o;37054:169::-;37138:11;37172:6;37167:3;37160:19;37212:4;37207:3;37203:14;37188:29;;37054:169;;;;:::o;37229:148::-;37331:11;37368:3;37353:18;;37229:148;;;;:::o;37383:273::-;37423:3;37442:20;37460:1;37442:20;:::i;:::-;37437:25;;37476:20;37494:1;37476:20;:::i;:::-;37471:25;;37598:1;37562:34;37558:42;37555:1;37552:49;37549:75;;;37604:18;;:::i;:::-;37549:75;37648:1;37645;37641:9;37634:16;;37383:273;;;;:::o;37662:305::-;37702:3;37721:20;37739:1;37721:20;:::i;:::-;37716:25;;37755:20;37773:1;37755:20;:::i;:::-;37750:25;;37909:1;37841:66;37837:74;37834:1;37831:81;37828:107;;;37915:18;;:::i;:::-;37828:107;37959:1;37956;37952:9;37945:16;;37662:305;;;;:::o;37973:185::-;38013:1;38030:20;38048:1;38030:20;:::i;:::-;38025:25;;38064:20;38082:1;38064:20;:::i;:::-;38059:25;;38103:1;38093:35;;38108:18;;:::i;:::-;38093:35;38150:1;38147;38143:9;38138:14;;37973:185;;;;:::o;38164:348::-;38204:7;38227:20;38245:1;38227:20;:::i;:::-;38222:25;;38261:20;38279:1;38261:20;:::i;:::-;38256:25;;38449:1;38381:66;38377:74;38374:1;38371:81;38366:1;38359:9;38352:17;38348:105;38345:131;;;38456:18;;:::i;:::-;38345:131;38504:1;38501;38497:9;38486:20;;38164:348;;;;:::o;38518:191::-;38558:4;38578:20;38596:1;38578:20;:::i;:::-;38573:25;;38612:20;38630:1;38612:20;:::i;:::-;38607:25;;38651:1;38648;38645:8;38642:34;;;38656:18;;:::i;:::-;38642:34;38701:1;38698;38694:9;38686:17;;38518:191;;;;:::o;38715:::-;38755:4;38775:20;38793:1;38775:20;:::i;:::-;38770:25;;38809:20;38827:1;38809:20;:::i;:::-;38804:25;;38848:1;38845;38842:8;38839:34;;;38853:18;;:::i;:::-;38839:34;38898:1;38895;38891:9;38883:17;;38715:191;;;;:::o;38912:96::-;38949:7;38978:24;38996:5;38978:24;:::i;:::-;38967:35;;38912:96;;;:::o;39014:90::-;39048:7;39091:5;39084:13;39077:21;39066:32;;39014:90;;;:::o;39110:149::-;39146:7;39186:66;39179:5;39175:78;39164:89;;39110:149;;;:::o;39265:118::-;39302:7;39342:34;39335:5;39331:46;39320:57;;39265:118;;;:::o;39389:126::-;39426:7;39466:42;39459:5;39455:54;39444:65;;39389:126;;;:::o;39521:77::-;39558:7;39587:5;39576:16;;39521:77;;;:::o;39604:101::-;39640:7;39680:18;39673:5;39669:30;39658:41;;39604:101;;;:::o;39711:154::-;39795:6;39790:3;39785;39772:30;39857:1;39848:6;39843:3;39839:16;39832:27;39711:154;;;:::o;39871:307::-;39939:1;39949:113;39963:6;39960:1;39957:13;39949:113;;;40048:1;40043:3;40039:11;40033:18;40029:1;40024:3;40020:11;40013:39;39985:2;39982:1;39978:10;39973:15;;39949:113;;;40080:6;40077:1;40074:13;40071:101;;;40160:1;40151:6;40146:3;40142:16;40135:27;40071:101;39920:258;39871:307;;;:::o;40184:171::-;40223:3;40246:24;40264:5;40246:24;:::i;:::-;40237:33;;40292:4;40285:5;40282:15;40279:41;;;40300:18;;:::i;:::-;40279:41;40347:1;40340:5;40336:13;40329:20;;40184:171;;;:::o;40361:320::-;40405:6;40442:1;40436:4;40432:12;40422:22;;40489:1;40483:4;40479:12;40510:18;40500:81;;40566:4;40558:6;40554:17;40544:27;;40500:81;40628:2;40620:6;40617:14;40597:18;40594:38;40591:84;;;40647:18;;:::i;:::-;40591:84;40412:269;40361:320;;;:::o;40687:281::-;40770:27;40792:4;40770:27;:::i;:::-;40762:6;40758:40;40900:6;40888:10;40885:22;40864:18;40852:10;40849:34;40846:62;40843:88;;;40911:18;;:::i;:::-;40843:88;40951:10;40947:2;40940:22;40730:238;40687:281;;:::o;40974:233::-;41013:3;41036:24;41054:5;41036:24;:::i;:::-;41027:33;;41082:66;41075:5;41072:77;41069:103;;;41152:18;;:::i;:::-;41069:103;41199:1;41192:5;41188:13;41181:20;;40974:233;;;:::o;41213:176::-;41245:1;41262:20;41280:1;41262:20;:::i;:::-;41257:25;;41296:20;41314:1;41296:20;:::i;:::-;41291:25;;41335:1;41325:35;;41340:18;;:::i;:::-;41325:35;41381:1;41378;41374:9;41369:14;;41213:176;;;;:::o;41395:180::-;41443:77;41440:1;41433:88;41540:4;41537:1;41530:15;41564:4;41561:1;41554:15;41581:180;41629:77;41626:1;41619:88;41726:4;41723:1;41716:15;41750:4;41747:1;41740:15;41767:180;41815:77;41812:1;41805:88;41912:4;41909:1;41902:15;41936:4;41933:1;41926:15;41953:180;42001:77;41998:1;41991:88;42098:4;42095:1;42088:15;42122:4;42119:1;42112:15;42139:180;42187:77;42184:1;42177:88;42284:4;42281:1;42274:15;42308:4;42305:1;42298:15;42325:117;42434:1;42431;42424:12;42448:117;42557:1;42554;42547:12;42571:117;42680:1;42677;42670:12;42694:117;42803:1;42800;42793:12;42817:102;42858:6;42909:2;42905:7;42900:2;42893:5;42889:14;42885:28;42875:38;;42817:102;;;:::o;42925:221::-;43065:34;43061:1;43053:6;43049:14;43042:58;43134:4;43129:2;43121:6;43117:15;43110:29;42925:221;:::o;43152:225::-;43292:34;43288:1;43280:6;43276:14;43269:58;43361:8;43356:2;43348:6;43344:15;43337:33;43152:225;:::o;43383:229::-;43523:34;43519:1;43511:6;43507:14;43500:58;43592:12;43587:2;43579:6;43575:15;43568:37;43383:229;:::o;43618:222::-;43758:34;43754:1;43746:6;43742:14;43735:58;43827:5;43822:2;43814:6;43810:15;43803:30;43618:222;:::o;43846:224::-;43986:34;43982:1;43974:6;43970:14;43963:58;44055:7;44050:2;44042:6;44038:15;44031:32;43846:224;:::o;44076:236::-;44216:34;44212:1;44204:6;44200:14;44193:58;44285:19;44280:2;44272:6;44268:15;44261:44;44076:236;:::o;44318:168::-;44458:20;44454:1;44446:6;44442:14;44435:44;44318:168;:::o;44492:221::-;44632:34;44628:1;44620:6;44616:14;44609:58;44701:4;44696:2;44688:6;44684:15;44677:29;44492:221;:::o;44719:180::-;44859:32;44855:1;44847:6;44843:14;44836:56;44719:180;:::o;44905:244::-;45045:34;45041:1;45033:6;45029:14;45022:58;45114:27;45109:2;45101:6;45097:15;45090:52;44905:244;:::o;45155:230::-;45295:34;45291:1;45283:6;45279:14;45272:58;45364:13;45359:2;45351:6;45347:15;45340:38;45155:230;:::o;45391:168::-;45531:20;45527:1;45519:6;45515:14;45508:44;45391:168;:::o;45565:225::-;45705:34;45701:1;45693:6;45689:14;45682:58;45774:8;45769:2;45761:6;45757:15;45750:33;45565:225;:::o;45796:155::-;45936:7;45932:1;45924:6;45920:14;45913:31;45796:155;:::o;45957:182::-;46097:34;46093:1;46085:6;46081:14;46074:58;45957:182;:::o;46145:234::-;46285:34;46281:1;46273:6;46269:14;46262:58;46354:17;46349:2;46341:6;46337:15;46330:42;46145:234;:::o;46385:176::-;46525:28;46521:1;46513:6;46509:14;46502:52;46385:176;:::o;46567:237::-;46707:34;46703:1;46695:6;46691:14;46684:58;46776:20;46771:2;46763:6;46759:15;46752:45;46567:237;:::o;46810:221::-;46950:34;46946:1;46938:6;46934:14;46927:58;47019:4;47014:2;47006:6;47002:15;46995:29;46810:221;:::o;47037:114::-;;:::o;47157:166::-;47297:18;47293:1;47285:6;47281:14;47274:42;47157:166;:::o;47329:238::-;47469:34;47465:1;47457:6;47453:14;47446:58;47538:21;47533:2;47525:6;47521:15;47514:46;47329:238;:::o;47573:172::-;47713:24;47709:1;47701:6;47697:14;47690:48;47573:172;:::o;47751:179::-;47891:31;47887:1;47879:6;47875:14;47868:55;47751:179;:::o;47936:220::-;48076:34;48072:1;48064:6;48060:14;48053:58;48145:3;48140:2;48132:6;48128:15;48121:28;47936:220;:::o;48162:233::-;48302:34;48298:1;48290:6;48286:14;48279:58;48371:16;48366:2;48358:6;48354:15;48347:41;48162:233;:::o;48401:181::-;48541:33;48537:1;48529:6;48525:14;48518:57;48401:181;:::o;48588:234::-;48728:34;48724:1;48716:6;48712:14;48705:58;48797:17;48792:2;48784:6;48780:15;48773:42;48588:234;:::o;48828:232::-;48968:34;48964:1;48956:6;48952:14;48945:58;49037:15;49032:2;49024:6;49020:15;49013:40;48828:232;:::o;49066:221::-;49206:34;49202:1;49194:6;49190:14;49183:58;49275:4;49270:2;49262:6;49258:15;49251:29;49066:221;:::o;49293:122::-;49366:24;49384:5;49366:24;:::i;:::-;49359:5;49356:35;49346:63;;49405:1;49402;49395:12;49346:63;49293:122;:::o;49421:116::-;49491:21;49506:5;49491:21;:::i;:::-;49484:5;49481:32;49471:60;;49527:1;49524;49517:12;49471:60;49421:116;:::o;49543:120::-;49615:23;49632:5;49615:23;:::i;:::-;49608:5;49605:34;49595:62;;49653:1;49650;49643:12;49595:62;49543:120;:::o;49669:122::-;49742:24;49760:5;49742:24;:::i;:::-;49735:5;49732:35;49722:63;;49781:1;49778;49771:12;49722:63;49669:122;:::o

Swarm Source

ipfs://cb891a0da7bf993ba28a1dad519746d6ae4c039252de10d0ae7572b6e058fecc
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.