ETH Price: $3,388.85 (-1.38%)
Gas: 3 Gwei

Token

LastDragons Gen1 (LDG1)
 

Overview

Max Total Supply

798 LDG1

Holders

112

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
cryptosnob13.eth
Balance
1 LDG1
0xcde03566d2d324bC2Fe22581E4D9506779E1e451
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:
LastDragonsGen1

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-08
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

library Counters {
  struct Counter {
    uint256 _value;
  }
  function current(Counter storage counter) internal view returns (uint256) {
    return counter._value;
  }
  function increment(Counter storage counter) internal {
    unchecked {
      counter._value += 1;
    }
  }
  function decrement(Counter storage counter) internal {
    uint256 value = counter._value;
    require(value > 0, "Counter: decrement overflow");
    unchecked {
      counter._value = value - 1;
    }
  }
  function reset(Counter storage counter) internal {
    counter._value = 0;
  }
}

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);
  }
}

library SafeMath {
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    return a + b;
  }
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return a - b;
  }
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    return a * b;
  }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return a / b;
  }
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return a % b;
  }
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    unchecked {
      require(b <= a, errorMessage);
      return a - b;
    }
  }
  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    unchecked {
      require(b > 0, errorMessage);
      return a / b;
    }
  }
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    unchecked {
      require(b > 0, errorMessage);
      return a % b;
    }
  }
}

abstract contract Context {
  function _msgSender() internal view virtual returns (address) {
    return msg.sender;
  }
}

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);
  }
}

abstract contract ContextMixin {
  function msgSender() internal view returns (address payable sender) {
    if (msg.sender == address(this)) {
      bytes memory array = msg.data;
      uint256 index = msg.data.length;
      assembly {
        sender := and(
          mload(add(array, index)),
          0xffffffffffffffffffffffffffffffffffffffff
        )
      }
    } else {
      sender = payable(msg.sender);
    }
    return sender;
  }
}

contract Initializable {
  bool inited = false;
  modifier initializer() {
    require(!inited, "already inited");
    _;
    inited = true;
  }
}

contract EIP712Base is Initializable {
  struct EIP712Domain {
    string name;
    string version;
    address verifyingContract;
    bytes32 salt;
  }
  string constant public ERC712_VERSION = "1";
  bytes32 internal constant EIP712_DOMAIN_TYPEHASH = keccak256(
    bytes(
      "EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)"
    )
  );
  bytes32 internal domainSeperator;

  function _initializeEIP712(string memory name) internal initializer {
    _setDomainSeperator(name);
  }
  function _setDomainSeperator(string memory name) internal {
    domainSeperator = keccak256(
      abi.encode(
        EIP712_DOMAIN_TYPEHASH,
        keccak256(bytes(name)),
        keccak256(bytes(ERC712_VERSION)),
        address(this),
        bytes32(getChainId())
      )
    );
  }
  function getDomainSeperator() public view returns (bytes32) {
    return domainSeperator;
  }
  function getChainId() public view returns (uint256) {
    uint256 id;
    assembly {
      id := chainid()
    }
    return id;
  }
  function toTypedMessageHash(bytes32 messageHash) internal view returns (bytes32) {
    return
      keccak256(
        abi.encodePacked("\x19\x01", getDomainSeperator(), messageHash)
      );
  }
}

contract NativeMetaTransaction is EIP712Base {
  using SafeMath for uint256;
  bytes32 private constant META_TRANSACTION_TYPEHASH = keccak256(
    bytes(
      "MetaTransaction(uint256 nonce,address from,bytes functionSignature)"
    )
  );
  event MetaTransactionExecuted(address userAddress, address payable relayerAddress, bytes functionSignature);
  mapping(address => uint256) nonces;
  struct MetaTransaction {
    uint256 nonce;
    address from;
    bytes functionSignature;
  }

  function executeMetaTransaction(address userAddress, bytes memory functionSignature, bytes32 sigR, bytes32 sigS, uint8 sigV) public payable returns (bytes memory) {
    MetaTransaction memory metaTx = MetaTransaction({
      nonce: nonces[userAddress],
      from: userAddress,
      functionSignature: functionSignature
    });
    require(
      verify(userAddress, metaTx, sigR, sigS, sigV),
      "Signer and signature do not match"
    );
    nonces[userAddress] = nonces[userAddress].add(1);
    emit MetaTransactionExecuted(userAddress, payable(msg.sender), functionSignature);
    (bool success, bytes memory returnData) = address(this).call(
      abi.encodePacked(functionSignature, userAddress)
    );
    require(success, "Function call not successful");
    return returnData;
  }
  function hashMetaTransaction(MetaTransaction memory metaTx) internal pure returns (bytes32) {
    return
      keccak256(
        abi.encode(
          META_TRANSACTION_TYPEHASH,
          metaTx.nonce,
          metaTx.from,
          keccak256(metaTx.functionSignature)
        )
      );
  }
  function getNonce(address user) public view returns (uint256 nonce) {
    nonce = nonces[user];
  }
  function verify(address signer, MetaTransaction memory metaTx, bytes32 sigR, bytes32 sigS, uint8 sigV) internal view returns (bool) {
    require(signer != address(0), "NativeMetaTransaction: INVALID_SIGNER");
    return
      signer ==
      ecrecover(
        toTypedMessageHash(hashMetaTransaction(metaTx)),
        sigV,
        sigR,
        sigS
      );
  }
}

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 IERC721Metadata is IERC721 {
  function name() external view returns (string memory);
  function symbol() external view returns (string memory);
}

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);
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
  using Address for address;
  using Strings for uint256;
  string private _name;
  string private _symbol;
  mapping(uint256 => address) private _owners;
  mapping(address => uint256) private _balances;
  mapping(uint256 => address) private _tokenApprovals;
  mapping(address => mapping(address => bool)) private _operatorApprovals;

  constructor(string memory name_, string memory symbol_) {
    _name = name_;
    _symbol = symbol_;
  }
  function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
    return
      interfaceId == type(IERC721).interfaceId ||
      interfaceId == type(IERC721Metadata).interfaceId ||
      super.supportsInterface(interfaceId);
  }
  function balanceOf(address owner) public view virtual override returns (uint256) {
    require(owner != address(0), "ERC721: balance query for the zero address");
    return _balances[owner];
  }
  function ownerOf(uint256 tokenId) public view virtual override returns (address) {
    address owner = _owners[tokenId];
    require(owner != address(0), "ERC721: owner query for nonexistent token");
    return owner;
  }
  function name() public view virtual override returns (string memory) {
    return _name;
  }
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  }
  function approve(address to, uint256 tokenId) public virtual override {
    address owner = ERC721.ownerOf(tokenId);
    require(to != owner, "ERC721: approval to current owner");
    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721: approve caller is not owner nor approved for all"
    );
    _approve(to, tokenId);
  }
  function getApproved(uint256 tokenId) public view virtual override returns (address) {
    require(_exists(tokenId), "ERC721: approved query for nonexistent token");
    return _tokenApprovals[tokenId];
  }
  function setApprovalForAll(address operator, bool approved) public virtual override {
    _setApprovalForAll(_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 virtual override {
    require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
    _transfer(from, to, tokenId);
  }
  function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
    safeTransferFrom(from, to, tokenId, "");
  }
  function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
    require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
    _safeTransfer(from, to, tokenId, _data);
  }
  function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
    _transfer(from, to, tokenId);
    require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
  }
  function _exists(uint256 tokenId) internal view virtual returns (bool) {
    return _owners[tokenId] != address(0);
  }
  function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
    require(_exists(tokenId), "ERC721: operator query for nonexistent token");
    address owner = ERC721.ownerOf(tokenId);
    return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
  }
  function _safeMint(address to, uint256 tokenId) internal virtual {
    _safeMint(to, tokenId, "");
  }
  function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
    _mint(to, tokenId);
    require(
      _checkOnERC721Received(address(0), to, tokenId, _data),
      "ERC721: transfer to non ERC721Receiver implementer"
    );
  }
  function _mint(address to, uint256 tokenId) internal virtual {
    require(to != address(0), "ERC721: mint to the zero address");
    require(!_exists(tokenId), "ERC721: token already minted");
    _beforeTokenTransfer(address(0), to, tokenId);
    _balances[to] += 1;
    _owners[tokenId] = to;
    emit Transfer(address(0), to, tokenId);
  }
  function _burn(uint256 tokenId) internal virtual {
    address owner = ERC721.ownerOf(tokenId);
    _beforeTokenTransfer(owner, address(0), tokenId);
    _approve(address(0), tokenId);
    _balances[owner] -= 1;
    delete _owners[tokenId];
    emit Transfer(owner, address(0), tokenId);
  }
  function _transfer(address from, address to, uint256 tokenId) internal virtual {
    require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
    require(to != address(0), "ERC721: transfer to the zero address");
    _beforeTokenTransfer(from, to, tokenId);
    _approve(address(0), tokenId);
    _balances[from] -= 1;
    _balances[to] += 1;
    _owners[tokenId] = to;
    emit Transfer(from, to, tokenId);
  }
  function _approve(address to, uint256 tokenId) internal virtual {
    _tokenApprovals[tokenId] = to;
    emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
  }
  function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
    require(owner != operator, "ERC721: approve to caller");
    _operatorApprovals[owner][operator] = approved;
    emit ApprovalForAll(owner, operator, approved);
  }
  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.onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  }
  function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual {}
}

contract Escrow is Ownable {
  using Address for address payable;
  event Deposited(address indexed payee, uint256 weiAmount);
  event Withdrawn(address indexed payee, uint256 weiAmount);
  mapping(address => uint256) private _deposits;

  function depositsOf(address payee) public view returns (uint256) {
    return _deposits[payee];
  }
  function deposit(address payee) public payable virtual onlyOwner {
    uint256 amount = msg.value;
    _deposits[payee] += amount;
    emit Deposited(payee, amount);
  }
  function withdraw(address payable payee) public virtual onlyOwner {
    uint256 payment = _deposits[payee];
    _deposits[payee] = 0;
    payee.sendValue(payment);
    emit Withdrawn(payee, payment);
  }
}

abstract contract PullPayment {
  Escrow private immutable _escrow;
  constructor() {
    _escrow = new Escrow();
  }
  function withdrawPayments(address payable payee) public virtual {
    _escrow.withdraw(payee);
  }
  function payments(address dest) public view returns (uint256) {
    return _escrow.depositsOf(dest);
  }
  function _asyncTransfer(address dest, uint256 amount) internal virtual {
    _escrow.deposit{value: amount}(dest);
  }
}

contract OwnableDelegateProxy {}
contract ProxyRegistry {
  mapping(address => OwnableDelegateProxy) public proxies;
}

contract LastDragonsGen1 is ERC721, PullPayment, ContextMixin, NativeMetaTransaction, Ownable {
  using SafeMath for uint256;
  using Counters for Counters.Counter;

  uint256 public constant TOTAL_SUPPLY = 2222;
  uint256 public constant MINT_PRICE = 0.08 ether;

  Counters.Counter private _nextTokenId;
  address proxyRegistryAddress;
  string public baseTokenURI;
  
  constructor() ERC721("LastDragons Gen1", "LDG1") {
    baseTokenURI = "";
    _initializeEIP712("LastDragons Gen1");
  }
  function mintToAdmin(address recipient) public onlyOwner returns (uint256) {
    uint256 tokenId = _nextTokenId.current();
    require(tokenId < TOTAL_SUPPLY, "Max supply reached");
    _nextTokenId.increment();
    uint256 newItemId = _nextTokenId.current();
    _safeMint(recipient, newItemId);
    return newItemId;
  }
  function mintTo(address recipient) public payable returns (uint256) {
    uint256 tokenId = _nextTokenId.current();
    require(tokenId < TOTAL_SUPPLY, "Max supply reached");
    require(msg.value == MINT_PRICE, "Transaction value did not equal the mint price");
    _nextTokenId.increment();
    uint256 newItemId = _nextTokenId.current();
    _safeMint(recipient, newItemId);
    return newItemId;
  }
  function totalSupply() public view returns (uint256) {
    return _nextTokenId.current();
  }
  function tokenURI(uint256 _tokenId) public view returns (string memory) {
    require(_exists(_tokenId), "ERC721Metadata: URI query for nonexistent token");
    string memory baseURI = baseTokenURI;
    return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, Strings.toString(_tokenId))) : "";
  }
  function setProxyRegistryAddress(address _proxyRegistryAddress) public onlyOwner() {
    proxyRegistryAddress = _proxyRegistryAddress;
  }
  function setBaseTokenURI(string memory _baseTokenURI) public onlyOwner {
    baseTokenURI = _baseTokenURI;
  }
  function isApprovedForAll(address owner, address operator) override public view returns (bool) {
    ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
    if (address(proxyRegistry.proxies(owner)) == operator) {
      return true;
    }
    return super.isApprovedForAll(owner, operator);
  }
  function _msgSender() internal override view returns (address sender) {
    return ContextMixin.msgSender();
  }
  function withdrawPayments(address payable payee) public override onlyOwner virtual {
    super.withdrawPayments(payee);
  }
}

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":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","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":"ERC712_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","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":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeperator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","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":"address","name":"recipient","type":"address"}],"name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"mintToAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_baseTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proxyRegistryAddress","type":"address"}],"name":"setProxyRegistryAddress","outputs":[],"stateMutability":"nonpayable","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":"_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":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040526000600660006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280601081526020017f4c617374447261676f6e732047656e31000000000000000000000000000000008152506040518060400160405280600481526020017f4c444731000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000b192919062000492565b508060019080519060200190620000ca92919062000492565b505050604051620000db9062000523565b604051809103906000f080158015620000f8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200014c62000140620001c060201b60201c565b620001dc60201b60201c565b60405180602001604052806000815250600c90805190602001906200017392919062000492565b50620001ba6040518060400160405280601081526020017f4c617374447261676f6e732047656e3100000000000000000000000000000000815250620002a260201b60201c565b620006f4565b6000620001d76200032460201b620019611760201c565b905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600660009054906101000a900460ff1615620002f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ec90620005b1565b60405180910390fd5b6200030681620003d660201b60201c565b6001600660006101000a81548160ff02191690831515021790555050565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603620003cf57600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050620003d3565b3390505b90565b6040518060800160405280604f815260200162005901604f91398051906020012081805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120306200044d6200048560201b60201c565b60001b6040516020016200046695949392919062000633565b6040516020818303038152906040528051906020012060078190555050565b6000804690508091505090565b828054620004a090620006bf565b90600052602060002090601f016020900481019282620004c4576000855562000510565b82601f10620004df57805160ff191683800117855562000510565b8280016001018555821562000510579182015b828111156200050f578251825591602001919060010190620004f2565b5b5090506200051f919062000531565b5090565b610d158062004bec83390190565b5b808211156200054c57600081600090555060010162000532565b5090565b600082825260208201905092915050565b7f616c726561647920696e69746564000000000000000000000000000000000000600082015250565b600062000599600e8362000550565b9150620005a68262000561565b602082019050919050565b60006020820190508181036000830152620005cc816200058a565b9050919050565b6000819050919050565b620005e881620005d3565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200061b82620005ee565b9050919050565b6200062d816200060e565b82525050565b600060a0820190506200064a6000830188620005dd565b620006596020830187620005dd565b620006686040830186620005dd565b62000677606083018562000622565b620006866080830184620005dd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006d857607f821691505b602082108103620006ee57620006ed62000690565b5b50919050565b6080516144d562000717600039600081816116d9015261201601526144d56000f3fe6080604052600436106101d85760003560e01c806370a0823111610102578063b88d4fde11610095578063d547cfb711610064578063d547cfb7146106ca578063e2982c21146106f5578063e985e9c514610732578063f2fde38b1461076f576101d8565b8063b88d4fde14610610578063c002d23d14610639578063c87b56dd14610664578063d26ea6c0146106a1576101d8565b8063902d55a5116100d1578063902d55a51461055457806395d89b411461057f578063a22cb465146105aa578063a54dd93c146105d3576101d8565b806370a08231146104a5578063715018a6146104e2578063755edd17146104f95780638da5cb5b14610529576101d8565b806320379ee51161017a57806331b3eb941161014957806331b3eb94146103eb5780633408e4701461041457806342842e0e1461043f5780636352211e14610468576101d8565b806320379ee51461033157806323b872dd1461035c5780632d0335ab1461038557806330176e13146103c2576101d8565b8063095ea7b3116101b6578063095ea7b3146102825780630c53c51c146102ab5780630f7e5970146102db57806318160ddd14610306576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612acf565b610798565b6040516102119190612b17565b60405180910390f35b34801561022657600080fd5b5061022f61087a565b60405161023c9190612bcb565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612c23565b61090c565b6040516102799190612c91565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612cd8565b610991565b005b6102c560048036038101906102c09190612ebc565b610aa8565b6040516102d29190612fa8565b60405180910390f35b3480156102e757600080fd5b506102f0610d1a565b6040516102fd9190612bcb565b60405180910390f35b34801561031257600080fd5b5061031b610d53565b6040516103289190612fd9565b60405180910390f35b34801561033d57600080fd5b50610346610d64565b6040516103539190613003565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e919061301e565b610d6e565b005b34801561039157600080fd5b506103ac60048036038101906103a79190613071565b610dce565b6040516103b99190612fd9565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e4919061313f565b610e17565b005b3480156103f757600080fd5b50610412600480360381019061040d91906131c6565b610ead565b005b34801561042057600080fd5b50610429610f35565b6040516104369190612fd9565b60405180910390f35b34801561044b57600080fd5b506104666004803603810190610461919061301e565b610f42565b005b34801561047457600080fd5b5061048f600480360381019061048a9190612c23565b610f62565b60405161049c9190612c91565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190613071565b611013565b6040516104d99190612fd9565b60405180910390f35b3480156104ee57600080fd5b506104f76110ca565b005b610513600480360381019061050e9190613071565b611152565b6040516105209190612fd9565b60405180910390f35b34801561053557600080fd5b5061053e61121b565b60405161054b9190612c91565b60405180910390f35b34801561056057600080fd5b50610569611245565b6040516105769190612fd9565b60405180910390f35b34801561058b57600080fd5b5061059461124b565b6040516105a19190612bcb565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc919061321f565b6112dd565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613071565b6112f3565b6040516106079190612fd9565b60405180910390f35b34801561061c57600080fd5b506106376004803603810190610632919061325f565b6113ef565b005b34801561064557600080fd5b5061064e611451565b60405161065b9190612fd9565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612c23565b61145d565b6040516106989190612bcb565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190613071565b611587565b005b3480156106d657600080fd5b506106df611647565b6040516106ec9190612bcb565b60405180910390f35b34801561070157600080fd5b5061071c60048036038101906107179190613071565b6116d5565b6040516107299190612fd9565b60405180910390f35b34801561073e57600080fd5b50610759600480360381019061075491906132e2565b611778565b6040516107669190612b17565b60405180910390f35b34801561077b57600080fd5b5061079660048036038101906107919190613071565b61186a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086357507f93254542000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610873575061087282611a11565b5b9050919050565b60606000805461088990613351565b80601f01602080910402602001604051908101604052809291908181526020018280546108b590613351565b80156109025780601f106108d757610100808354040283529160200191610902565b820191906000526020600020905b8154815290600101906020018083116108e557829003601f168201915b5050505050905090565b600061091782611a7b565b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906133f4565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061099c82610f62565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0390613486565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a2b611ae7565b73ffffffffffffffffffffffffffffffffffffffff161480610a5a5750610a5981610a54611ae7565b611778565b5b610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090613518565b60405180910390fd5b610aa38383611af6565b505050565b606060006040518060600160405280600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020018873ffffffffffffffffffffffffffffffffffffffff168152602001878152509050610b2b8782878787611baf565b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906135aa565b60405180910390fd5b610bbd6001600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb790919063ffffffff16565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b873388604051610c33939291906135d9565b60405180910390a16000803073ffffffffffffffffffffffffffffffffffffffff16888a604051602001610c6892919061369b565b604051602081830303815290604052604051610c8491906136c3565b6000604051808303816000865af19150503d8060008114610cc1576040519150601f19603f3d011682016040523d82523d6000602084013e610cc6565b606091505b509150915081610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290613726565b60405180910390fd5b80935050505095945050505050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6000610d5f600a611ccd565b905090565b6000600754905090565b610d7f610d79611ae7565b82611cdb565b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db5906137b8565b60405180910390fd5b610dc9838383611db9565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e1f611ae7565b73ffffffffffffffffffffffffffffffffffffffff16610e3d61121b565b73ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613824565b60405180910390fd5b80600c9080519060200190610ea99291906129c0565b5050565b610eb5611ae7565b73ffffffffffffffffffffffffffffffffffffffff16610ed361121b565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090613824565b60405180910390fd5b610f3281612014565b50565b6000804690508091505090565b610f5d838383604051806020016040528060008152506113ef565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361100a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611001906138b6565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613948565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d2611ae7565b73ffffffffffffffffffffffffffffffffffffffff166110f061121b565b73ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d90613824565b60405180910390fd5b61115060006120a2565b565b60008061115f600a611ccd565b90506108ae81106111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c906139b4565b60405180910390fd5b67011c37937e08000034146111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690613a46565b60405180910390fd5b6111f9600a612168565b6000611205600a611ccd565b9050611211848261217e565b8092505050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108ae81565b60606001805461125a90613351565b80601f016020809104026020016040519081016040528092919081815260200182805461128690613351565b80156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b5050505050905090565b6112ef6112e8611ae7565b838361219c565b5050565b60006112fd611ae7565b73ffffffffffffffffffffffffffffffffffffffff1661131b61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613824565b60405180910390fd5b600061137d600a611ccd565b90506108ae81106113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906139b4565b60405180910390fd5b6113cd600a612168565b60006113d9600a611ccd565b90506113e5848261217e565b8092505050919050565b6114006113fa611ae7565b83611cdb565b61143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906137b8565b60405180910390fd5b61144b84848484612308565b50505050565b67011c37937e08000081565b606061146882611a7b565b6114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e90613ad8565b60405180910390fd5b6000600c80546114b690613351565b80601f01602080910402602001604051908101604052809291908181526020018280546114e290613351565b801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b505050505090506000815111611554576040518060200160405280600081525061157f565b8061155e84612364565b60405160200161156f929190613b34565b6040516020818303038152906040525b915050919050565b61158f611ae7565b73ffffffffffffffffffffffffffffffffffffffff166115ad61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613824565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c805461165490613351565b80601f016020809104026020016040519081016040528092919081815260200182805461168090613351565b80156116cd5780601f106116a2576101008083540402835291602001916116cd565b820191906000526020600020905b8154815290600101906020018083116116b057829003601f168201915b505050505081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b81526004016117309190612c91565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190613b6d565b9050919050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b81526004016117f09190612c91565b602060405180830381865afa15801561180d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118319190613bd8565b73ffffffffffffffffffffffffffffffffffffffff1603611856576001915050611864565b61186084846124c4565b9150505b92915050565b611872611ae7565b73ffffffffffffffffffffffffffffffffffffffff1661189061121b565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613824565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90613c77565b60405180910390fd5b61195e816120a2565b50565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611a0a57600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050611a0e565b3390505b90565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000611af1611961565b905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b6983610f62565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613d09565b60405180910390fd5b6001611c32611c2d87612558565b6125c0565b83868660405160008152602001604052604051611c529493929190613d38565b6020604051602081039080840390855afa158015611c74573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b60008183611cc59190613dac565b905092915050565b600081600001549050919050565b6000611ce682611a7b565b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90613e74565b60405180910390fd5b6000611d3083610f62565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d9f57508373ffffffffffffffffffffffffffffffffffffffff16611d878461090c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611db05750611daf8185611778565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611dd982610f62565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690613f06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613f98565b60405180910390fd5b611ea98383836125f9565b611eb4600082611af6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f049190613fb8565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f5b9190613dac565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b815260040161206d9190613fec565b600060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b5050505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001816000016000828254019250508190555050565b6121988282604051806020016040528060008152506125fe565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190614053565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122fb9190612b17565b60405180910390a3505050565b612313848484611db9565b61231f84848484612659565b61235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355906140e5565b60405180910390fd5b50505050565b6060600082036123ab576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124bf565b600082905060005b600082146123dd5780806123c690614105565b915050600a826123d6919061417c565b91506123b3565b60008167ffffffffffffffff8111156123f9576123f8612d22565b5b6040519080825280601f01601f19166020018201604052801561242b5781602001600182028036833780820191505090505b5090505b600085146124b8576001826124449190613fb8565b9150600a8561245391906141ad565b603061245f9190613dac565b60f81b818381518110612475576124746141de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124b1919061417c565b945061242f565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600060405180608001604052806043815260200161445d6043913980519060200120826000015183602001518460400151805190602001206040516020016125a3949392919061420d565b604051602081830303815290604052805190602001209050919050565b60006125ca610d64565b826040516020016125dc9291906142bf565b604051602081830303815290604052805190602001209050919050565b505050565b61260883836127e0565b6126156000848484612659565b612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b906140e5565b60405180910390fd5b505050565b600061267a8473ffffffffffffffffffffffffffffffffffffffff166129ad565b156127d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126a3611ae7565b8786866040518563ffffffff1660e01b81526004016126c594939291906142f6565b6020604051808303816000875af192505050801561270157506040513d601f19601f820116820180604052508101906126fe9190614357565b60015b612783573d8060008114612731576040519150601f19603f3d011682016040523d82523d6000602084013e612736565b606091505b50600081510361277b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612772906140e5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127d8565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612846906143d0565b60405180910390fd5b61285881611a7b565b15612898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288f9061443c565b60405180910390fd5b6128a4600083836125f9565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128f49190613dac565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546129cc90613351565b90600052602060002090601f0160209004810192826129ee5760008555612a35565b82601f10612a0757805160ff1916838001178555612a35565b82800160010185558215612a35579182015b82811115612a34578251825591602001919060010190612a19565b5b509050612a429190612a46565b5090565b5b80821115612a5f576000816000905550600101612a47565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612aac81612a77565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b600060208284031215612ae557612ae4612a6d565b5b6000612af384828501612aba565b91505092915050565b60008115159050919050565b612b1181612afc565b82525050565b6000602082019050612b2c6000830184612b08565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b6c578082015181840152602081019050612b51565b83811115612b7b576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b9d82612b32565b612ba78185612b3d565b9350612bb7818560208601612b4e565b612bc081612b81565b840191505092915050565b60006020820190508181036000830152612be58184612b92565b905092915050565b6000819050919050565b612c0081612bed565b8114612c0b57600080fd5b50565b600081359050612c1d81612bf7565b92915050565b600060208284031215612c3957612c38612a6d565b5b6000612c4784828501612c0e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7b82612c50565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b612cb581612c70565b8114612cc057600080fd5b50565b600081359050612cd281612cac565b92915050565b60008060408385031215612cef57612cee612a6d565b5b6000612cfd85828601612cc3565b9250506020612d0e85828601612c0e565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d5a82612b81565b810181811067ffffffffffffffff82111715612d7957612d78612d22565b5b80604052505050565b6000612d8c612a63565b9050612d988282612d51565b919050565b600067ffffffffffffffff821115612db857612db7612d22565b5b612dc182612b81565b9050602081019050919050565b82818337600083830152505050565b6000612df0612deb84612d9d565b612d82565b905082815260208101848484011115612e0c57612e0b612d1d565b5b612e17848285612dce565b509392505050565b600082601f830112612e3457612e33612d18565b5b8135612e44848260208601612ddd565b91505092915050565b6000819050919050565b612e6081612e4d565b8114612e6b57600080fd5b50565b600081359050612e7d81612e57565b92915050565b600060ff82169050919050565b612e9981612e83565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b600080600080600060a08688031215612ed857612ed7612a6d565b5b6000612ee688828901612cc3565b955050602086013567ffffffffffffffff811115612f0757612f06612a72565b5b612f1388828901612e1f565b9450506040612f2488828901612e6e565b9350506060612f3588828901612e6e565b9250506080612f4688828901612ea7565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b6000612f7a82612f53565b612f848185612f5e565b9350612f94818560208601612b4e565b612f9d81612b81565b840191505092915050565b60006020820190508181036000830152612fc28184612f6f565b905092915050565b612fd381612bed565b82525050565b6000602082019050612fee6000830184612fca565b92915050565b612ffd81612e4d565b82525050565b60006020820190506130186000830184612ff4565b92915050565b60008060006060848603121561303757613036612a6d565b5b600061304586828701612cc3565b935050602061305686828701612cc3565b925050604061306786828701612c0e565b9150509250925092565b60006020828403121561308757613086612a6d565b5b600061309584828501612cc3565b91505092915050565b600067ffffffffffffffff8211156130b9576130b8612d22565b5b6130c282612b81565b9050602081019050919050565b60006130e26130dd8461309e565b612d82565b9050828152602081018484840111156130fe576130fd612d1d565b5b613109848285612dce565b509392505050565b600082601f83011261312657613125612d18565b5b81356131368482602086016130cf565b91505092915050565b60006020828403121561315557613154612a6d565b5b600082013567ffffffffffffffff81111561317357613172612a72565b5b61317f84828501613111565b91505092915050565b600061319382612c50565b9050919050565b6131a381613188565b81146131ae57600080fd5b50565b6000813590506131c08161319a565b92915050565b6000602082840312156131dc576131db612a6d565b5b60006131ea848285016131b1565b91505092915050565b6131fc81612afc565b811461320757600080fd5b50565b600081359050613219816131f3565b92915050565b6000806040838503121561323657613235612a6d565b5b600061324485828601612cc3565b92505060206132558582860161320a565b9150509250929050565b6000806000806080858703121561327957613278612a6d565b5b600061328787828801612cc3565b945050602061329887828801612cc3565b93505060406132a987828801612c0e565b925050606085013567ffffffffffffffff8111156132ca576132c9612a72565b5b6132d687828801612e1f565b91505092959194509250565b600080604083850312156132f9576132f8612a6d565b5b600061330785828601612cc3565b925050602061331885828601612cc3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336957607f821691505b60208210810361337c5761337b613322565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006133de602c83612b3d565b91506133e982613382565b604082019050919050565b6000602082019050818103600083015261340d816133d1565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613470602183612b3d565b915061347b82613414565b604082019050919050565b6000602082019050818103600083015261349f81613463565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613502603883612b3d565b915061350d826134a6565b604082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000613594602183612b3d565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b6135d381613188565b82525050565b60006060820190506135ee6000830186612c82565b6135fb60208301856135ca565b818103604083015261360d8184612f6f565b9050949350505050565b600081905092915050565b600061362d82612f53565b6136378185613617565b9350613647818560208601612b4e565b80840191505092915050565b60008160601b9050919050565b600061366b82613653565b9050919050565b600061367d82613660565b9050919050565b61369561369082612c70565b613672565b82525050565b60006136a78285613622565b91506136b38284613684565b6014820191508190509392505050565b60006136cf8284613622565b915081905092915050565b7f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000600082015250565b6000613710601c83612b3d565b915061371b826136da565b602082019050919050565b6000602082019050818103600083015261373f81613703565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006137a2603183612b3d565b91506137ad82613746565b604082019050919050565b600060208201905081810360008301526137d181613795565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061380e602083612b3d565b9150613819826137d8565b602082019050919050565b6000602082019050818103600083015261383d81613801565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138a0602983612b3d565b91506138ab82613844565b604082019050919050565b600060208201905081810360008301526138cf81613893565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613932602a83612b3d565b915061393d826138d6565b604082019050919050565b6000602082019050818103600083015261396181613925565b9050919050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b600061399e601283612b3d565b91506139a982613968565b602082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f5472616e73616374696f6e2076616c756520646964206e6f7420657175616c2060008201527f746865206d696e74207072696365000000000000000000000000000000000000602082015250565b6000613a30602e83612b3d565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613ac2602f83612b3d565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b600081905092915050565b6000613b0e82612b32565b613b188185613af8565b9350613b28818560208601612b4e565b80840191505092915050565b6000613b408285613b03565b9150613b4c8284613b03565b91508190509392505050565b600081519050613b6781612bf7565b92915050565b600060208284031215613b8357613b82612a6d565b5b6000613b9184828501613b58565b91505092915050565b6000613ba582612c70565b9050919050565b613bb581613b9a565b8114613bc057600080fd5b50565b600081519050613bd281613bac565b92915050565b600060208284031215613bee57613bed612a6d565b5b6000613bfc84828501613bc3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c61602683612b3d565b9150613c6c82613c05565b604082019050919050565b60006020820190508181036000830152613c9081613c54565b9050919050565b7f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360008201527f49474e4552000000000000000000000000000000000000000000000000000000602082015250565b6000613cf3602583612b3d565b9150613cfe82613c97565b604082019050919050565b60006020820190508181036000830152613d2281613ce6565b9050919050565b613d3281612e83565b82525050565b6000608082019050613d4d6000830187612ff4565b613d5a6020830186613d29565b613d676040830185612ff4565b613d746060830184612ff4565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613db782612bed565b9150613dc283612bed565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613df757613df6613d7d565b5b828201905092915050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613e5e602c83612b3d565b9150613e6982613e02565b604082019050919050565b60006020820190508181036000830152613e8d81613e51565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613ef0602983612b3d565b9150613efb82613e94565b604082019050919050565b60006020820190508181036000830152613f1f81613ee3565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f82602483612b3d565b9150613f8d82613f26565b604082019050919050565b60006020820190508181036000830152613fb181613f75565b9050919050565b6000613fc382612bed565b9150613fce83612bed565b925082821015613fe157613fe0613d7d565b5b828203905092915050565b600060208201905061400160008301846135ca565b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061403d601983612b3d565b915061404882614007565b602082019050919050565b6000602082019050818103600083015261406c81614030565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006140cf603283612b3d565b91506140da82614073565b604082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b600061411082612bed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361414257614141613d7d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061418782612bed565b915061419283612bed565b9250826141a2576141a161414d565b5b828204905092915050565b60006141b882612bed565b91506141c383612bed565b9250826141d3576141d261414d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006080820190506142226000830187612ff4565b61422f6020830186612fca565b61423c6040830185612c82565b6142496060830184612ff4565b95945050505050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614288600283613af8565b915061429382614252565b600282019050919050565b6000819050919050565b6142b96142b482612e4d565b61429e565b82525050565b60006142ca8261427b565b91506142d682856142a8565b6020820191506142e682846142a8565b6020820191508190509392505050565b600060808201905061430b6000830187612c82565b6143186020830186612c82565b6143256040830185612fca565b81810360608301526143378184612f6f565b905095945050505050565b60008151905061435181612aa3565b92915050565b60006020828403121561436d5761436c612a6d565b5b600061437b84828501614342565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006143ba602083612b3d565b91506143c582614384565b602082019050919050565b600060208201905081810360008301526143e9816143ad565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614426601c83612b3d565b9150614431826143f0565b602082019050919050565b6000602082019050818103600083015261445581614419565b905091905056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a2646970667358221220147a89a5cc692a94f67914480678f5e2e825022c40c72181e47ec79e161e557864736f6c634300080d0033608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610c088061010d6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a6146100835780638da5cb5b1461009a578063e3a9db1a146100c5578063f2fde38b14610102578063f340fa011461012b575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610804565b610147565b005b34801561008f57600080fd5b506100986102c7565b005b3480156100a657600080fd5b506100af61034f565b6040516100bc9190610852565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e79190610899565b610378565b6040516100f991906108df565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190610899565b6103c1565b005b61014560048036038101906101409190610899565b6104b8565b005b61014f6105e1565b73ffffffffffffffffffffffffffffffffffffffff1661016d61034f565b73ffffffffffffffffffffffffffffffffffffffff16146101c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ba90610957565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610275818373ffffffffffffffffffffffffffffffffffffffff166105e990919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516102bb91906108df565b60405180910390a25050565b6102cf6105e1565b73ffffffffffffffffffffffffffffffffffffffff166102ed61034f565b73ffffffffffffffffffffffffffffffffffffffff1614610343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90610957565b60405180910390fd5b61034d60006106dd565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6103c96105e1565b73ffffffffffffffffffffffffffffffffffffffff166103e761034f565b73ffffffffffffffffffffffffffffffffffffffff161461043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043490610957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a3906109e9565b60405180910390fd5b6104b5816106dd565b50565b6104c06105e1565b73ffffffffffffffffffffffffffffffffffffffff166104de61034f565b73ffffffffffffffffffffffffffffffffffffffff1614610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052b90610957565b60405180910390fd5b600034905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105889190610a38565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040516105d591906108df565b60405180910390a25050565b600033905090565b8047101561062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390610ada565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161065290610b2b565b60006040518083038185875af1925050503d806000811461068f576040519150601f19603f3d011682016040523d82523d6000602084013e610694565b606091505b50509050806106d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cf90610bb2565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107d1826107a6565b9050919050565b6107e1816107c6565b81146107ec57600080fd5b50565b6000813590506107fe816107d8565b92915050565b60006020828403121561081a576108196107a1565b5b6000610828848285016107ef565b91505092915050565b600061083c826107a6565b9050919050565b61084c81610831565b82525050565b60006020820190506108676000830184610843565b92915050565b61087681610831565b811461088157600080fd5b50565b6000813590506108938161086d565b92915050565b6000602082840312156108af576108ae6107a1565b5b60006108bd84828501610884565b91505092915050565b6000819050919050565b6108d9816108c6565b82525050565b60006020820190506108f460008301846108d0565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006109416020836108fa565b915061094c8261090b565b602082019050919050565b6000602082019050818103600083015261097081610934565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006109d36026836108fa565b91506109de82610977565b604082019050919050565b60006020820190508181036000830152610a02816109c6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a43826108c6565b9150610a4e836108c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a8357610a82610a09565b5b828201905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000610ac4601d836108fa565b9150610acf82610a8e565b602082019050919050565b60006020820190508181036000830152610af381610ab7565b9050919050565b600081905092915050565b50565b6000610b15600083610afa565b9150610b2082610b05565b600082019050919050565b6000610b3682610b08565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000610b9c603a836108fa565b9150610ba782610b40565b604082019050919050565b60006020820190508181036000830152610bcb81610b8f565b905091905056fea2646970667358221220926258c88a25a02e8a6049ec9a40396d0be61062793149b7939fd1167d3c6feb64736f6c634300080d0033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c7429

Deployed Bytecode

0x6080604052600436106101d85760003560e01c806370a0823111610102578063b88d4fde11610095578063d547cfb711610064578063d547cfb7146106ca578063e2982c21146106f5578063e985e9c514610732578063f2fde38b1461076f576101d8565b8063b88d4fde14610610578063c002d23d14610639578063c87b56dd14610664578063d26ea6c0146106a1576101d8565b8063902d55a5116100d1578063902d55a51461055457806395d89b411461057f578063a22cb465146105aa578063a54dd93c146105d3576101d8565b806370a08231146104a5578063715018a6146104e2578063755edd17146104f95780638da5cb5b14610529576101d8565b806320379ee51161017a57806331b3eb941161014957806331b3eb94146103eb5780633408e4701461041457806342842e0e1461043f5780636352211e14610468576101d8565b806320379ee51461033157806323b872dd1461035c5780632d0335ab1461038557806330176e13146103c2576101d8565b8063095ea7b3116101b6578063095ea7b3146102825780630c53c51c146102ab5780630f7e5970146102db57806318160ddd14610306576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612acf565b610798565b6040516102119190612b17565b60405180910390f35b34801561022657600080fd5b5061022f61087a565b60405161023c9190612bcb565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612c23565b61090c565b6040516102799190612c91565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612cd8565b610991565b005b6102c560048036038101906102c09190612ebc565b610aa8565b6040516102d29190612fa8565b60405180910390f35b3480156102e757600080fd5b506102f0610d1a565b6040516102fd9190612bcb565b60405180910390f35b34801561031257600080fd5b5061031b610d53565b6040516103289190612fd9565b60405180910390f35b34801561033d57600080fd5b50610346610d64565b6040516103539190613003565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e919061301e565b610d6e565b005b34801561039157600080fd5b506103ac60048036038101906103a79190613071565b610dce565b6040516103b99190612fd9565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e4919061313f565b610e17565b005b3480156103f757600080fd5b50610412600480360381019061040d91906131c6565b610ead565b005b34801561042057600080fd5b50610429610f35565b6040516104369190612fd9565b60405180910390f35b34801561044b57600080fd5b506104666004803603810190610461919061301e565b610f42565b005b34801561047457600080fd5b5061048f600480360381019061048a9190612c23565b610f62565b60405161049c9190612c91565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190613071565b611013565b6040516104d99190612fd9565b60405180910390f35b3480156104ee57600080fd5b506104f76110ca565b005b610513600480360381019061050e9190613071565b611152565b6040516105209190612fd9565b60405180910390f35b34801561053557600080fd5b5061053e61121b565b60405161054b9190612c91565b60405180910390f35b34801561056057600080fd5b50610569611245565b6040516105769190612fd9565b60405180910390f35b34801561058b57600080fd5b5061059461124b565b6040516105a19190612bcb565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc919061321f565b6112dd565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613071565b6112f3565b6040516106079190612fd9565b60405180910390f35b34801561061c57600080fd5b506106376004803603810190610632919061325f565b6113ef565b005b34801561064557600080fd5b5061064e611451565b60405161065b9190612fd9565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612c23565b61145d565b6040516106989190612bcb565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190613071565b611587565b005b3480156106d657600080fd5b506106df611647565b6040516106ec9190612bcb565b60405180910390f35b34801561070157600080fd5b5061071c60048036038101906107179190613071565b6116d5565b6040516107299190612fd9565b60405180910390f35b34801561073e57600080fd5b50610759600480360381019061075491906132e2565b611778565b6040516107669190612b17565b60405180910390f35b34801561077b57600080fd5b5061079660048036038101906107919190613071565b61186a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086357507f93254542000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610873575061087282611a11565b5b9050919050565b60606000805461088990613351565b80601f01602080910402602001604051908101604052809291908181526020018280546108b590613351565b80156109025780601f106108d757610100808354040283529160200191610902565b820191906000526020600020905b8154815290600101906020018083116108e557829003601f168201915b5050505050905090565b600061091782611a7b565b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906133f4565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061099c82610f62565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0390613486565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a2b611ae7565b73ffffffffffffffffffffffffffffffffffffffff161480610a5a5750610a5981610a54611ae7565b611778565b5b610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090613518565b60405180910390fd5b610aa38383611af6565b505050565b606060006040518060600160405280600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020018873ffffffffffffffffffffffffffffffffffffffff168152602001878152509050610b2b8782878787611baf565b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906135aa565b60405180910390fd5b610bbd6001600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb790919063ffffffff16565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b873388604051610c33939291906135d9565b60405180910390a16000803073ffffffffffffffffffffffffffffffffffffffff16888a604051602001610c6892919061369b565b604051602081830303815290604052604051610c8491906136c3565b6000604051808303816000865af19150503d8060008114610cc1576040519150601f19603f3d011682016040523d82523d6000602084013e610cc6565b606091505b509150915081610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290613726565b60405180910390fd5b80935050505095945050505050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6000610d5f600a611ccd565b905090565b6000600754905090565b610d7f610d79611ae7565b82611cdb565b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db5906137b8565b60405180910390fd5b610dc9838383611db9565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e1f611ae7565b73ffffffffffffffffffffffffffffffffffffffff16610e3d61121b565b73ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613824565b60405180910390fd5b80600c9080519060200190610ea99291906129c0565b5050565b610eb5611ae7565b73ffffffffffffffffffffffffffffffffffffffff16610ed361121b565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090613824565b60405180910390fd5b610f3281612014565b50565b6000804690508091505090565b610f5d838383604051806020016040528060008152506113ef565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361100a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611001906138b6565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613948565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d2611ae7565b73ffffffffffffffffffffffffffffffffffffffff166110f061121b565b73ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d90613824565b60405180910390fd5b61115060006120a2565b565b60008061115f600a611ccd565b90506108ae81106111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c906139b4565b60405180910390fd5b67011c37937e08000034146111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690613a46565b60405180910390fd5b6111f9600a612168565b6000611205600a611ccd565b9050611211848261217e565b8092505050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108ae81565b60606001805461125a90613351565b80601f016020809104026020016040519081016040528092919081815260200182805461128690613351565b80156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b5050505050905090565b6112ef6112e8611ae7565b838361219c565b5050565b60006112fd611ae7565b73ffffffffffffffffffffffffffffffffffffffff1661131b61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613824565b60405180910390fd5b600061137d600a611ccd565b90506108ae81106113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906139b4565b60405180910390fd5b6113cd600a612168565b60006113d9600a611ccd565b90506113e5848261217e565b8092505050919050565b6114006113fa611ae7565b83611cdb565b61143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906137b8565b60405180910390fd5b61144b84848484612308565b50505050565b67011c37937e08000081565b606061146882611a7b565b6114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e90613ad8565b60405180910390fd5b6000600c80546114b690613351565b80601f01602080910402602001604051908101604052809291908181526020018280546114e290613351565b801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b505050505090506000815111611554576040518060200160405280600081525061157f565b8061155e84612364565b60405160200161156f929190613b34565b6040516020818303038152906040525b915050919050565b61158f611ae7565b73ffffffffffffffffffffffffffffffffffffffff166115ad61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613824565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c805461165490613351565b80601f016020809104026020016040519081016040528092919081815260200182805461168090613351565b80156116cd5780601f106116a2576101008083540402835291602001916116cd565b820191906000526020600020905b8154815290600101906020018083116116b057829003601f168201915b505050505081565b60007f0000000000000000000000006f44e4e0464f1fbcfaca8d21ef04be750e6457f273ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b81526004016117309190612c91565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190613b6d565b9050919050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b81526004016117f09190612c91565b602060405180830381865afa15801561180d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118319190613bd8565b73ffffffffffffffffffffffffffffffffffffffff1603611856576001915050611864565b61186084846124c4565b9150505b92915050565b611872611ae7565b73ffffffffffffffffffffffffffffffffffffffff1661189061121b565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613824565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90613c77565b60405180910390fd5b61195e816120a2565b50565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611a0a57600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050611a0e565b3390505b90565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000611af1611961565b905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b6983610f62565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613d09565b60405180910390fd5b6001611c32611c2d87612558565b6125c0565b83868660405160008152602001604052604051611c529493929190613d38565b6020604051602081039080840390855afa158015611c74573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b60008183611cc59190613dac565b905092915050565b600081600001549050919050565b6000611ce682611a7b565b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90613e74565b60405180910390fd5b6000611d3083610f62565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d9f57508373ffffffffffffffffffffffffffffffffffffffff16611d878461090c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611db05750611daf8185611778565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611dd982610f62565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690613f06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613f98565b60405180910390fd5b611ea98383836125f9565b611eb4600082611af6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f049190613fb8565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f5b9190613dac565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b7f0000000000000000000000006f44e4e0464f1fbcfaca8d21ef04be750e6457f273ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b815260040161206d9190613fec565b600060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b5050505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001816000016000828254019250508190555050565b6121988282604051806020016040528060008152506125fe565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190614053565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122fb9190612b17565b60405180910390a3505050565b612313848484611db9565b61231f84848484612659565b61235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355906140e5565b60405180910390fd5b50505050565b6060600082036123ab576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124bf565b600082905060005b600082146123dd5780806123c690614105565b915050600a826123d6919061417c565b91506123b3565b60008167ffffffffffffffff8111156123f9576123f8612d22565b5b6040519080825280601f01601f19166020018201604052801561242b5781602001600182028036833780820191505090505b5090505b600085146124b8576001826124449190613fb8565b9150600a8561245391906141ad565b603061245f9190613dac565b60f81b818381518110612475576124746141de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124b1919061417c565b945061242f565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600060405180608001604052806043815260200161445d6043913980519060200120826000015183602001518460400151805190602001206040516020016125a3949392919061420d565b604051602081830303815290604052805190602001209050919050565b60006125ca610d64565b826040516020016125dc9291906142bf565b604051602081830303815290604052805190602001209050919050565b505050565b61260883836127e0565b6126156000848484612659565b612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b906140e5565b60405180910390fd5b505050565b600061267a8473ffffffffffffffffffffffffffffffffffffffff166129ad565b156127d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126a3611ae7565b8786866040518563ffffffff1660e01b81526004016126c594939291906142f6565b6020604051808303816000875af192505050801561270157506040513d601f19601f820116820180604052508101906126fe9190614357565b60015b612783573d8060008114612731576040519150601f19603f3d011682016040523d82523d6000602084013e612736565b606091505b50600081510361277b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612772906140e5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127d8565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612846906143d0565b60405180910390fd5b61285881611a7b565b15612898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288f9061443c565b60405180910390fd5b6128a4600083836125f9565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128f49190613dac565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546129cc90613351565b90600052602060002090601f0160209004810192826129ee5760008555612a35565b82601f10612a0757805160ff1916838001178555612a35565b82800160010185558215612a35579182015b82811115612a34578251825591602001919060010190612a19565b5b509050612a429190612a46565b5090565b5b80821115612a5f576000816000905550600101612a47565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612aac81612a77565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b600060208284031215612ae557612ae4612a6d565b5b6000612af384828501612aba565b91505092915050565b60008115159050919050565b612b1181612afc565b82525050565b6000602082019050612b2c6000830184612b08565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b6c578082015181840152602081019050612b51565b83811115612b7b576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b9d82612b32565b612ba78185612b3d565b9350612bb7818560208601612b4e565b612bc081612b81565b840191505092915050565b60006020820190508181036000830152612be58184612b92565b905092915050565b6000819050919050565b612c0081612bed565b8114612c0b57600080fd5b50565b600081359050612c1d81612bf7565b92915050565b600060208284031215612c3957612c38612a6d565b5b6000612c4784828501612c0e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7b82612c50565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b612cb581612c70565b8114612cc057600080fd5b50565b600081359050612cd281612cac565b92915050565b60008060408385031215612cef57612cee612a6d565b5b6000612cfd85828601612cc3565b9250506020612d0e85828601612c0e565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d5a82612b81565b810181811067ffffffffffffffff82111715612d7957612d78612d22565b5b80604052505050565b6000612d8c612a63565b9050612d988282612d51565b919050565b600067ffffffffffffffff821115612db857612db7612d22565b5b612dc182612b81565b9050602081019050919050565b82818337600083830152505050565b6000612df0612deb84612d9d565b612d82565b905082815260208101848484011115612e0c57612e0b612d1d565b5b612e17848285612dce565b509392505050565b600082601f830112612e3457612e33612d18565b5b8135612e44848260208601612ddd565b91505092915050565b6000819050919050565b612e6081612e4d565b8114612e6b57600080fd5b50565b600081359050612e7d81612e57565b92915050565b600060ff82169050919050565b612e9981612e83565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b600080600080600060a08688031215612ed857612ed7612a6d565b5b6000612ee688828901612cc3565b955050602086013567ffffffffffffffff811115612f0757612f06612a72565b5b612f1388828901612e1f565b9450506040612f2488828901612e6e565b9350506060612f3588828901612e6e565b9250506080612f4688828901612ea7565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b6000612f7a82612f53565b612f848185612f5e565b9350612f94818560208601612b4e565b612f9d81612b81565b840191505092915050565b60006020820190508181036000830152612fc28184612f6f565b905092915050565b612fd381612bed565b82525050565b6000602082019050612fee6000830184612fca565b92915050565b612ffd81612e4d565b82525050565b60006020820190506130186000830184612ff4565b92915050565b60008060006060848603121561303757613036612a6d565b5b600061304586828701612cc3565b935050602061305686828701612cc3565b925050604061306786828701612c0e565b9150509250925092565b60006020828403121561308757613086612a6d565b5b600061309584828501612cc3565b91505092915050565b600067ffffffffffffffff8211156130b9576130b8612d22565b5b6130c282612b81565b9050602081019050919050565b60006130e26130dd8461309e565b612d82565b9050828152602081018484840111156130fe576130fd612d1d565b5b613109848285612dce565b509392505050565b600082601f83011261312657613125612d18565b5b81356131368482602086016130cf565b91505092915050565b60006020828403121561315557613154612a6d565b5b600082013567ffffffffffffffff81111561317357613172612a72565b5b61317f84828501613111565b91505092915050565b600061319382612c50565b9050919050565b6131a381613188565b81146131ae57600080fd5b50565b6000813590506131c08161319a565b92915050565b6000602082840312156131dc576131db612a6d565b5b60006131ea848285016131b1565b91505092915050565b6131fc81612afc565b811461320757600080fd5b50565b600081359050613219816131f3565b92915050565b6000806040838503121561323657613235612a6d565b5b600061324485828601612cc3565b92505060206132558582860161320a565b9150509250929050565b6000806000806080858703121561327957613278612a6d565b5b600061328787828801612cc3565b945050602061329887828801612cc3565b93505060406132a987828801612c0e565b925050606085013567ffffffffffffffff8111156132ca576132c9612a72565b5b6132d687828801612e1f565b91505092959194509250565b600080604083850312156132f9576132f8612a6d565b5b600061330785828601612cc3565b925050602061331885828601612cc3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336957607f821691505b60208210810361337c5761337b613322565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006133de602c83612b3d565b91506133e982613382565b604082019050919050565b6000602082019050818103600083015261340d816133d1565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613470602183612b3d565b915061347b82613414565b604082019050919050565b6000602082019050818103600083015261349f81613463565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613502603883612b3d565b915061350d826134a6565b604082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000613594602183612b3d565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b6135d381613188565b82525050565b60006060820190506135ee6000830186612c82565b6135fb60208301856135ca565b818103604083015261360d8184612f6f565b9050949350505050565b600081905092915050565b600061362d82612f53565b6136378185613617565b9350613647818560208601612b4e565b80840191505092915050565b60008160601b9050919050565b600061366b82613653565b9050919050565b600061367d82613660565b9050919050565b61369561369082612c70565b613672565b82525050565b60006136a78285613622565b91506136b38284613684565b6014820191508190509392505050565b60006136cf8284613622565b915081905092915050565b7f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000600082015250565b6000613710601c83612b3d565b915061371b826136da565b602082019050919050565b6000602082019050818103600083015261373f81613703565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006137a2603183612b3d565b91506137ad82613746565b604082019050919050565b600060208201905081810360008301526137d181613795565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061380e602083612b3d565b9150613819826137d8565b602082019050919050565b6000602082019050818103600083015261383d81613801565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138a0602983612b3d565b91506138ab82613844565b604082019050919050565b600060208201905081810360008301526138cf81613893565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613932602a83612b3d565b915061393d826138d6565b604082019050919050565b6000602082019050818103600083015261396181613925565b9050919050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b600061399e601283612b3d565b91506139a982613968565b602082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f5472616e73616374696f6e2076616c756520646964206e6f7420657175616c2060008201527f746865206d696e74207072696365000000000000000000000000000000000000602082015250565b6000613a30602e83612b3d565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613ac2602f83612b3d565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b600081905092915050565b6000613b0e82612b32565b613b188185613af8565b9350613b28818560208601612b4e565b80840191505092915050565b6000613b408285613b03565b9150613b4c8284613b03565b91508190509392505050565b600081519050613b6781612bf7565b92915050565b600060208284031215613b8357613b82612a6d565b5b6000613b9184828501613b58565b91505092915050565b6000613ba582612c70565b9050919050565b613bb581613b9a565b8114613bc057600080fd5b50565b600081519050613bd281613bac565b92915050565b600060208284031215613bee57613bed612a6d565b5b6000613bfc84828501613bc3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c61602683612b3d565b9150613c6c82613c05565b604082019050919050565b60006020820190508181036000830152613c9081613c54565b9050919050565b7f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360008201527f49474e4552000000000000000000000000000000000000000000000000000000602082015250565b6000613cf3602583612b3d565b9150613cfe82613c97565b604082019050919050565b60006020820190508181036000830152613d2281613ce6565b9050919050565b613d3281612e83565b82525050565b6000608082019050613d4d6000830187612ff4565b613d5a6020830186613d29565b613d676040830185612ff4565b613d746060830184612ff4565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613db782612bed565b9150613dc283612bed565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613df757613df6613d7d565b5b828201905092915050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613e5e602c83612b3d565b9150613e6982613e02565b604082019050919050565b60006020820190508181036000830152613e8d81613e51565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613ef0602983612b3d565b9150613efb82613e94565b604082019050919050565b60006020820190508181036000830152613f1f81613ee3565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f82602483612b3d565b9150613f8d82613f26565b604082019050919050565b60006020820190508181036000830152613fb181613f75565b9050919050565b6000613fc382612bed565b9150613fce83612bed565b925082821015613fe157613fe0613d7d565b5b828203905092915050565b600060208201905061400160008301846135ca565b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061403d601983612b3d565b915061404882614007565b602082019050919050565b6000602082019050818103600083015261406c81614030565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006140cf603283612b3d565b91506140da82614073565b604082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b600061411082612bed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361414257614141613d7d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061418782612bed565b915061419283612bed565b9250826141a2576141a161414d565b5b828204905092915050565b60006141b882612bed565b91506141c383612bed565b9250826141d3576141d261414d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006080820190506142226000830187612ff4565b61422f6020830186612fca565b61423c6040830185612c82565b6142496060830184612ff4565b95945050505050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614288600283613af8565b915061429382614252565b600282019050919050565b6000819050919050565b6142b96142b482612e4d565b61429e565b82525050565b60006142ca8261427b565b91506142d682856142a8565b6020820191506142e682846142a8565b6020820191508190509392505050565b600060808201905061430b6000830187612c82565b6143186020830186612c82565b6143256040830185612fca565b81810360608301526143378184612f6f565b905095945050505050565b60008151905061435181612aa3565b92915050565b60006020828403121561436d5761436c612a6d565b5b600061437b84828501614342565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006143ba602083612b3d565b91506143c582614384565b602082019050919050565b600060208201905081810360008301526143e9816143ad565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614426601c83612b3d565b9150614431826143f0565b602082019050919050565b6000602082019050818103600083015261445581614419565b905091905056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a2646970667358221220147a89a5cc692a94f67914480678f5e2e825022c40c72181e47ec79e161e557864736f6c634300080d0033

Deployed Bytecode Sourcemap

19802:2500:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12577:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13293:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13870:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13493:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5713:810;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4083:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21061:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4761;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14398:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6835:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21621:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22174:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4860:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14642:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13064:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12862:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:97;;;;;;;;;;;;;:::i;:::-;;20646:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2619:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19974:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13391:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14083:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20313:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14791:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20022:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21160:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21477:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20151:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19440:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21737:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2919:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12577:281;12679:4;12721:25;12706:40;;;:11;:40;;;;:99;;;;12772:33;12757:48;;;:11;:48;;;;12706:99;:146;;;;12816:36;12840:11;12816:23;:36::i;:::-;12706:146;12692:160;;12577:281;;;:::o;13293:94::-;13347:13;13376:5;13369:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13293:94;:::o;13870:209::-;13946:7;13970:16;13978:7;13970;:16::i;:::-;13962:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14049:15;:24;14065:7;14049:24;;;;;;;;;;;;;;;;;;;;;14042:31;;13870:209;;;:::o;13493:373::-;13570:13;13586:23;13601:7;13586:14;:23::i;:::-;13570:39;;13630:5;13624:11;;:2;:11;;;13616:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13712:5;13696:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13721:37;13738:5;13745:12;:10;:12::i;:::-;13721:16;:37::i;:::-;13696:62;13680:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;13839:21;13848:2;13852:7;13839:8;:21::i;:::-;13563:303;13493:373;;:::o;5713:810::-;5862:12;5883:29;5915:130;;;;;;;;5947:6;:19;5954:11;5947:19;;;;;;;;;;;;;;;;5915:130;;;;5981:11;5915:130;;;;;;6020:17;5915:130;;;5883:162;;6068:45;6075:11;6088:6;6096:4;6102;6108;6068:6;:45::i;:::-;6052:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;6193:26;6217:1;6193:6;:19;6200:11;6193:19;;;;;;;;;;;;;;;;:23;;:26;;;;:::i;:::-;6171:6;:19;6178:11;6171:19;;;;;;;;;;;;;;;:48;;;;6231:76;6255:11;6276:10;6289:17;6231:76;;;;;;;;:::i;:::-;;;;;;;;6315:12;6329:23;6364:4;6356:18;;6400:17;6419:11;6383:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6356:82;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6314:124;;;;6453:7;6445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6507:10;6500:17;;;;;5713:810;;;;;;;:::o;4083:43::-;;;;;;;;;;;;;;;;;;;:::o;21061:95::-;21105:7;21128:22;:12;:20;:22::i;:::-;21121:29;;21061:95;:::o;4761:::-;4812:7;4835:15;;4828:22;;4761:95;:::o;14398:240::-;14502:41;14521:12;:10;:12::i;:::-;14535:7;14502:18;:41::i;:::-;14494:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14604:28;14614:4;14620:2;14624:7;14604:9;:28::i;:::-;14398:240;;;:::o;6835:101::-;6888:13;6918:6;:12;6925:4;6918:12;;;;;;;;;;;;;;;;6910:20;;6835:101;;;:::o;21621:112::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21714:13:::1;21699:12;:28;;;;;;;;;;;;:::i;:::-;;21621:112:::0;:::o;22174:125::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22264:29:::1;22287:5;22264:22;:29::i;:::-;22174:125:::0;:::o;4860:137::-;4903:7;4919:10;4960:9;4954:15;;4989:2;4982:9;;;4860:137;:::o;14642:145::-;14742:39;14759:4;14765:2;14769:7;14742:39;;;;;;;;;;;;:16;:39::i;:::-;14642:145;;;:::o;13064:225::-;13136:7;13152:13;13168:7;:16;13176:7;13168:16;;;;;;;;;;;;;;;;;;;;;13152:32;;13216:1;13199:19;;:5;:19;;;13191:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13278:5;13271:12;;;13064:225;;;:::o;12862:198::-;12934:7;12975:1;12958:19;;:5;:19;;;12950:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13038:9;:16;13048:5;13038:16;;;;;;;;;;;;;;;;13031:23;;12862:198;;;:::o;2818:97::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2879:30:::1;2906:1;2879:18;:30::i;:::-;2818:97::o:0;20646:411::-;20705:7;20721:15;20739:22;:12;:20;:22::i;:::-;20721:40;;20013:4;20776:7;:22;20768:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20059:10;20836:9;:23;20828:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;20917:24;:12;:22;:24::i;:::-;20948:17;20968:22;:12;:20;:22::i;:::-;20948:42;;20997:31;21007:9;21018;20997;:31::i;:::-;21042:9;21035:16;;;;20646:411;;;:::o;2619:81::-;2665:7;2688:6;;;;;;;;;;;2681:13;;2619:81;:::o;19974:43::-;20013:4;19974:43;:::o;13391:98::-;13447:13;13476:7;13469:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13391:98;:::o;14083:149::-;14174:52;14193:12;:10;:12::i;:::-;14207:8;14217;14174:18;:52::i;:::-;14083:149;;:::o;20313:329::-;20379:7;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20395:15:::1;20413:22;:12;:20;:22::i;:::-;20395:40;;20013:4;20450:7;:22;20442:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20502:24;:12;:22;:24::i;:::-;20533:17;20553:22;:12;:20;:22::i;:::-;20533:42;;20582:31;20592:9;20603;20582;:31::i;:::-;20627:9;20620:16;;;;20313:329:::0;;;:::o;14791:275::-;14919:41;14938:12;:10;:12::i;:::-;14952:7;14919:18;:41::i;:::-;14911:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;15021:39;15035:4;15041:2;15045:7;15054:5;15021:13;:39::i;:::-;14791:275;;;;:::o;20022:47::-;20059:10;20022:47;:::o;21160:313::-;21217:13;21247:17;21255:8;21247:7;:17::i;:::-;21239:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21323:21;21347:12;21323:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21397:1;21379:7;21373:21;:25;:94;;;;;;;;;;;;;;;;;21425:7;21434:26;21451:8;21434:16;:26::i;:::-;21408:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21373:94;21366:101;;;21160:313;;;:::o;21477:140::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21590:21:::1;21567:20;;:44;;;;;;;;;;;;;;;;;;21477:140:::0;:::o;20151:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19440:106::-;19493:7;19516;:18;;;19535:4;19516:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19509:31;;19440:106;;;:::o;21737:315::-;21826:4;21839:27;21883:20;;;;;;;;;;;21839:65;;21956:8;21915:49;;21923:13;:21;;;21945:5;21923:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21915:49;;;21911:83;;21982:4;21975:11;;;;;21911:83;22007:39;22030:5;22037:8;22007:22;:39::i;:::-;22000:46;;;21737:315;;;;;:::o;2919:191::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:1:::1;3004:22;;:8;:22;;::::0;2996:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3076:28;3095:8;3076:18;:28::i;:::-;2919:191:::0;:::o;3334:423::-;3378:22;3435:4;3413:27;;:10;:27;;;3409:323;;3451:18;3472:8;;3451:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3489:13;3505:8;;:15;;3489:31;;3612:42;3592:5;3585;3581:17;3575:24;3559:106;3549:116;;3538:136;;3409:323;;;3713:10;3696:28;;3409:323;3334:423;:::o;7468:151::-;7553:4;7588:25;7573:40;;;:11;:40;;;;7566:47;;7468:151;;;:::o;15336:121::-;15401:4;15449:1;15421:30;;:7;:16;15429:7;15421:16;;;;;;;;;;;;;;;;;;;;;:30;;;;15414:37;;15336:121;;;:::o;22056:114::-;22110:14;22140:24;:22;:24::i;:::-;22133:31;;22056:114;:::o;17282:164::-;17380:2;17353:15;:24;17369:7;17353:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17432:7;17428:2;17394:46;;17403:23;17418:7;17403:14;:23::i;:::-;17394:46;;;;;;;;;;;;17282:164;;:::o;6940:374::-;7066:4;7105:1;7087:20;;:6;:20;;;7079:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:121;7207:47;7226:27;7246:6;7226:19;:27::i;:::-;7207:18;:47::i;:::-;7265:4;7280;7295;7187:121;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7170:138;;:6;:138;;;7156:152;;6940:374;;;;;;;:::o;1224:92::-;1282:7;1309:1;1305;:5;;;;:::i;:::-;1298:12;;1224:92;;;;:::o;128:108::-;193:7;216;:14;;;209:21;;128:108;;;:::o;15461:334::-;15554:4;15575:16;15583:7;15575;:16::i;:::-;15567:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15647:13;15663:23;15678:7;15663:14;:23::i;:::-;15647:39;;15712:5;15701:16;;:7;:16;;;:51;;;;15745:7;15721:31;;:20;15733:7;15721:11;:20::i;:::-;:31;;;15701:51;:87;;;;15756:32;15773:5;15780:7;15756:16;:32::i;:::-;15701:87;15693:96;;;15461:334;;;;:::o;16828:450::-;16949:4;16922:31;;:23;16937:7;16922:14;:23::i;:::-;:31;;;16914:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17028:1;17014:16;;:2;:16;;;17006:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17078:39;17099:4;17105:2;17109:7;17078:20;:39::i;:::-;17124:29;17141:1;17145:7;17124:8;:29::i;:::-;17179:1;17160:9;:15;17170:4;17160:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;17204:1;17187:9;:13;17197:2;17187:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;17231:2;17212:7;:16;17220:7;17212:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17264:7;17260:2;17245:27;;17254:4;17245:27;;;;;;;;;;;;16828:450;;;:::o;19336:100::-;19407:7;:16;;;19424:5;19407:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19336:100;:::o;3114:177::-;3184:16;3203:6;;;;;;;;;;;3184:25;;3225:8;3216:6;;:17;;;;;;;;;;;;;;;;;;3276:8;3245:40;;3266:8;3245:40;;;;;;;;;;;;3177:114;3114:177;:::o;240:111::-;337:1;319:7;:14;;;:19;;;;;;;;;;;240:111;:::o;15799:104::-;15871:26;15881:2;15885:7;15871:26;;;;;;;;;;;;:9;:26::i;:::-;15799:104;;:::o;17450:267::-;17567:8;17558:17;;:5;:17;;;17550:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17650:8;17612:18;:25;17631:5;17612:25;;;;;;;;;;;;;;;:35;17638:8;17612:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17692:8;17670:41;;17685:5;17670:41;;;17702:8;17670:41;;;;;;:::i;:::-;;;;;;;;17450:267;;;:::o;15070:262::-;15180:28;15190:4;15196:2;15200:7;15180:9;:28::i;:::-;15223:48;15246:4;15252:2;15256:7;15265:5;15223:22;:48::i;:::-;15215:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15070:262;;;;:::o;741:454::-;797:13;832:1;823:5;:10;819:43;;844:10;;;;;;;;;;;;;;;;;;;;;819:43;868:12;883:5;868:20;;895:14;916:62;931:1;923:4;:9;916:62;;943:8;;;;;:::i;:::-;;;;968:2;960:10;;;;;:::i;:::-;;;916:62;;;984:19;1016:6;1006:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;984:39;;1030:132;1046:1;1037:5;:10;1030:132;;1068:1;1058:11;;;;;:::i;:::-;;;1129:2;1121:5;:10;;;;:::i;:::-;1108:2;:24;;;;:::i;:::-;1095:39;;1078:6;1085;1078:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1152:2;1143:11;;;;;:::i;:::-;;;1030:132;;;1182:6;1168:21;;;;;741:454;;;;:::o;14236:158::-;14333:4;14353:18;:25;14372:5;14353:25;;;;;;;;;;;;;;;:35;14379:8;14353:35;;;;;;;;;;;;;;;;;;;;;;;;;14346:42;;14236:158;;;;:::o;6527:304::-;6610:7;5358:90;;;;;;;;;;;;;;;;;5342:111;;;;;;6721:6;:12;;;6746:6;:11;;;6780:6;:24;;;6770:35;;;;;;6660:156;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6640:185;;;;;;6626:199;;6527:304;;;:::o;5001:200::-;5073:7;5152:20;:18;:20::i;:::-;5174:11;5123:63;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5103:92;;;;;;5089:106;;5001:200;;;:::o;18369:92::-;;;;:::o;15907:261::-;15999:18;16005:2;16009:7;15999:5;:18::i;:::-;16040:54;16071:1;16075:2;16079:7;16088:5;16040:22;:54::i;:::-;16024:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;15907:261;;;:::o;17721:644::-;17833:4;17850:15;:2;:13;;;:15::i;:::-;17846:514;;;17896:2;17880:36;;;17917:12;:10;:12::i;:::-;17931:4;17937:7;17946:5;17880:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17876:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18117:1;18100:6;:13;:18;18096:214;;18133:60;;;;;;;;;;:::i;:::-;;;;;;;;18096:214;18278:6;18272:13;18263:6;18259:2;18255:15;18248:38;17876:443;18005:41;;;17995:51;;;:6;:51;;;;17988:58;;;;;17846:514;18348:4;18341:11;;17721:644;;;;;;;:::o;16172:350::-;16262:1;16248:16;;:2;:16;;;16240:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16317:16;16325:7;16317;:16::i;:::-;16316:17;16308:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16373:45;16402:1;16406:2;16410:7;16373:20;:45::i;:::-;16442:1;16425:9;:13;16435:2;16425:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;16469:2;16450:7;:16;16458:7;16450:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16508:7;16504:2;16483:33;;16500:1;16483:33;;;;;;;;;;;;16172:350;;:::o;8840:172::-;8900:4;8913:12;8970:7;8958:20;8950:28;;9005:1;8998:4;:8;8991:15;;;8840:172;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:117::-;5047:1;5044;5037:12;5061:117;5170:1;5167;5160:12;5184:180;5232:77;5229:1;5222:88;5329:4;5326:1;5319:15;5353:4;5350:1;5343:15;5370:281;5453:27;5475:4;5453:27;:::i;:::-;5445:6;5441:40;5583:6;5571:10;5568:22;5547:18;5535:10;5532:34;5529:62;5526:88;;;5594:18;;:::i;:::-;5526:88;5634:10;5630:2;5623:22;5413:238;5370:281;;:::o;5657:129::-;5691:6;5718:20;;:::i;:::-;5708:30;;5747:33;5775:4;5767:6;5747:33;:::i;:::-;5657:129;;;:::o;5792:307::-;5853:4;5943:18;5935:6;5932:30;5929:56;;;5965:18;;:::i;:::-;5929:56;6003:29;6025:6;6003:29;:::i;:::-;5995:37;;6087:4;6081;6077:15;6069:23;;5792:307;;;:::o;6105:154::-;6189:6;6184:3;6179;6166:30;6251:1;6242:6;6237:3;6233:16;6226:27;6105:154;;;:::o;6265:410::-;6342:5;6367:65;6383:48;6424:6;6383:48;:::i;:::-;6367:65;:::i;:::-;6358:74;;6455:6;6448:5;6441:21;6493:4;6486:5;6482:16;6531:3;6522:6;6517:3;6513:16;6510:25;6507:112;;;6538:79;;:::i;:::-;6507:112;6628:41;6662:6;6657:3;6652;6628:41;:::i;:::-;6348:327;6265:410;;;;;:::o;6694:338::-;6749:5;6798:3;6791:4;6783:6;6779:17;6775:27;6765:122;;6806:79;;:::i;:::-;6765:122;6923:6;6910:20;6948:78;7022:3;7014:6;7007:4;6999:6;6995:17;6948:78;:::i;:::-;6939:87;;6755:277;6694:338;;;;:::o;7038:77::-;7075:7;7104:5;7093:16;;7038:77;;;:::o;7121:122::-;7194:24;7212:5;7194:24;:::i;:::-;7187:5;7184:35;7174:63;;7233:1;7230;7223:12;7174:63;7121:122;:::o;7249:139::-;7295:5;7333:6;7320:20;7311:29;;7349:33;7376:5;7349:33;:::i;:::-;7249:139;;;;:::o;7394:86::-;7429:7;7469:4;7462:5;7458:16;7447:27;;7394:86;;;:::o;7486:118::-;7557:22;7573:5;7557:22;:::i;:::-;7550:5;7547:33;7537:61;;7594:1;7591;7584:12;7537:61;7486:118;:::o;7610:135::-;7654:5;7692:6;7679:20;7670:29;;7708:31;7733:5;7708:31;:::i;:::-;7610:135;;;;:::o;7751:1085::-;7853:6;7861;7869;7877;7885;7934:3;7922:9;7913:7;7909:23;7905:33;7902:120;;;7941:79;;:::i;:::-;7902:120;8061:1;8086:53;8131:7;8122:6;8111:9;8107:22;8086:53;:::i;:::-;8076:63;;8032:117;8216:2;8205:9;8201:18;8188:32;8247:18;8239:6;8236:30;8233:117;;;8269:79;;:::i;:::-;8233:117;8374:62;8428:7;8419:6;8408:9;8404:22;8374:62;:::i;:::-;8364:72;;8159:287;8485:2;8511:53;8556:7;8547:6;8536:9;8532:22;8511:53;:::i;:::-;8501:63;;8456:118;8613:2;8639:53;8684:7;8675:6;8664:9;8660:22;8639:53;:::i;:::-;8629:63;;8584:118;8741:3;8768:51;8811:7;8802:6;8791:9;8787:22;8768:51;:::i;:::-;8758:61;;8712:117;7751:1085;;;;;;;;:::o;8842:98::-;8893:6;8927:5;8921:12;8911:22;;8842:98;;;:::o;8946:168::-;9029:11;9063:6;9058:3;9051:19;9103:4;9098:3;9094:14;9079:29;;8946:168;;;;:::o;9120:360::-;9206:3;9234:38;9266:5;9234:38;:::i;:::-;9288:70;9351:6;9346:3;9288:70;:::i;:::-;9281:77;;9367:52;9412:6;9407:3;9400:4;9393:5;9389:16;9367:52;:::i;:::-;9444:29;9466:6;9444:29;:::i;:::-;9439:3;9435:39;9428:46;;9210:270;9120:360;;;;:::o;9486:309::-;9597:4;9635:2;9624:9;9620:18;9612:26;;9684:9;9678:4;9674:20;9670:1;9659:9;9655:17;9648:47;9712:76;9783:4;9774:6;9712:76;:::i;:::-;9704:84;;9486:309;;;;:::o;9801:118::-;9888:24;9906:5;9888:24;:::i;:::-;9883:3;9876:37;9801:118;;:::o;9925:222::-;10018:4;10056:2;10045:9;10041:18;10033:26;;10069:71;10137:1;10126:9;10122:17;10113:6;10069:71;:::i;:::-;9925:222;;;;:::o;10153:118::-;10240:24;10258:5;10240:24;:::i;:::-;10235:3;10228:37;10153:118;;:::o;10277:222::-;10370:4;10408:2;10397:9;10393:18;10385:26;;10421:71;10489:1;10478:9;10474:17;10465:6;10421:71;:::i;:::-;10277:222;;;;:::o;10505:619::-;10582:6;10590;10598;10647:2;10635:9;10626:7;10622:23;10618:32;10615:119;;;10653:79;;:::i;:::-;10615:119;10773:1;10798:53;10843:7;10834:6;10823:9;10819:22;10798:53;:::i;:::-;10788:63;;10744:117;10900:2;10926:53;10971:7;10962:6;10951:9;10947:22;10926:53;:::i;:::-;10916:63;;10871:118;11028:2;11054:53;11099:7;11090:6;11079:9;11075:22;11054:53;:::i;:::-;11044:63;;10999:118;10505:619;;;;;:::o;11130:329::-;11189:6;11238:2;11226:9;11217:7;11213:23;11209:32;11206:119;;;11244:79;;:::i;:::-;11206:119;11364:1;11389:53;11434:7;11425:6;11414:9;11410:22;11389:53;:::i;:::-;11379:63;;11335:117;11130:329;;;;:::o;11465:308::-;11527:4;11617:18;11609:6;11606:30;11603:56;;;11639:18;;:::i;:::-;11603:56;11677:29;11699:6;11677:29;:::i;:::-;11669:37;;11761:4;11755;11751:15;11743:23;;11465:308;;;:::o;11779:412::-;11857:5;11882:66;11898:49;11940:6;11898:49;:::i;:::-;11882:66;:::i;:::-;11873:75;;11971:6;11964:5;11957:21;12009:4;12002:5;11998:16;12047:3;12038:6;12033:3;12029:16;12026:25;12023:112;;;12054:79;;:::i;:::-;12023:112;12144:41;12178:6;12173:3;12168;12144:41;:::i;:::-;11863:328;11779:412;;;;;:::o;12211:340::-;12267:5;12316:3;12309:4;12301:6;12297:17;12293:27;12283:122;;12324:79;;:::i;:::-;12283:122;12441:6;12428:20;12466:79;12541:3;12533:6;12526:4;12518:6;12514:17;12466:79;:::i;:::-;12457:88;;12273:278;12211:340;;;;:::o;12557:509::-;12626:6;12675:2;12663:9;12654:7;12650:23;12646:32;12643:119;;;12681:79;;:::i;:::-;12643:119;12829:1;12818:9;12814:17;12801:31;12859:18;12851:6;12848:30;12845:117;;;12881:79;;:::i;:::-;12845:117;12986:63;13041:7;13032:6;13021:9;13017:22;12986:63;:::i;:::-;12976:73;;12772:287;12557:509;;;;:::o;13072:104::-;13117:7;13146:24;13164:5;13146:24;:::i;:::-;13135:35;;13072:104;;;:::o;13182:138::-;13263:32;13289:5;13263:32;:::i;:::-;13256:5;13253:43;13243:71;;13310:1;13307;13300:12;13243:71;13182:138;:::o;13326:155::-;13380:5;13418:6;13405:20;13396:29;;13434:41;13469:5;13434:41;:::i;:::-;13326:155;;;;:::o;13487:345::-;13554:6;13603:2;13591:9;13582:7;13578:23;13574:32;13571:119;;;13609:79;;:::i;:::-;13571:119;13729:1;13754:61;13807:7;13798:6;13787:9;13783:22;13754:61;:::i;:::-;13744:71;;13700:125;13487:345;;;;:::o;13838:116::-;13908:21;13923:5;13908:21;:::i;:::-;13901:5;13898:32;13888:60;;13944:1;13941;13934:12;13888:60;13838:116;:::o;13960:133::-;14003:5;14041:6;14028:20;14019:29;;14057:30;14081:5;14057:30;:::i;:::-;13960:133;;;;:::o;14099:468::-;14164:6;14172;14221:2;14209:9;14200:7;14196:23;14192:32;14189:119;;;14227:79;;:::i;:::-;14189:119;14347:1;14372:53;14417:7;14408:6;14397:9;14393:22;14372:53;:::i;:::-;14362:63;;14318:117;14474:2;14500:50;14542:7;14533:6;14522:9;14518:22;14500:50;:::i;:::-;14490:60;;14445:115;14099:468;;;;;:::o;14573:943::-;14668:6;14676;14684;14692;14741:3;14729:9;14720:7;14716:23;14712:33;14709:120;;;14748:79;;:::i;:::-;14709:120;14868:1;14893:53;14938:7;14929:6;14918:9;14914:22;14893:53;:::i;:::-;14883:63;;14839:117;14995:2;15021:53;15066:7;15057:6;15046:9;15042:22;15021:53;:::i;:::-;15011:63;;14966:118;15123:2;15149:53;15194:7;15185:6;15174:9;15170:22;15149:53;:::i;:::-;15139:63;;15094:118;15279:2;15268:9;15264:18;15251:32;15310:18;15302:6;15299:30;15296:117;;;15332:79;;:::i;:::-;15296:117;15437:62;15491:7;15482:6;15471:9;15467:22;15437:62;:::i;:::-;15427:72;;15222:287;14573:943;;;;;;;:::o;15522:474::-;15590:6;15598;15647:2;15635:9;15626:7;15622:23;15618:32;15615:119;;;15653:79;;:::i;:::-;15615:119;15773:1;15798:53;15843:7;15834:6;15823:9;15819:22;15798:53;:::i;:::-;15788:63;;15744:117;15900:2;15926:53;15971:7;15962:6;15951:9;15947:22;15926:53;:::i;:::-;15916:63;;15871:118;15522:474;;;;;:::o;16002:180::-;16050:77;16047:1;16040:88;16147:4;16144:1;16137:15;16171:4;16168:1;16161:15;16188:320;16232:6;16269:1;16263:4;16259:12;16249:22;;16316:1;16310:4;16306:12;16337:18;16327:81;;16393:4;16385:6;16381:17;16371:27;;16327:81;16455:2;16447:6;16444:14;16424:18;16421:38;16418:84;;16474:18;;:::i;:::-;16418:84;16239:269;16188:320;;;:::o;16514:231::-;16654:34;16650:1;16642:6;16638:14;16631:58;16723:14;16718:2;16710:6;16706:15;16699:39;16514:231;:::o;16751:366::-;16893:3;16914:67;16978:2;16973:3;16914:67;:::i;:::-;16907:74;;16990:93;17079:3;16990:93;:::i;:::-;17108:2;17103:3;17099:12;17092:19;;16751:366;;;:::o;17123:419::-;17289:4;17327:2;17316:9;17312:18;17304:26;;17376:9;17370:4;17366:20;17362:1;17351:9;17347:17;17340:47;17404:131;17530:4;17404:131;:::i;:::-;17396:139;;17123:419;;;:::o;17548:220::-;17688:34;17684:1;17676:6;17672:14;17665:58;17757:3;17752:2;17744:6;17740:15;17733:28;17548:220;:::o;17774:366::-;17916:3;17937:67;18001:2;17996:3;17937:67;:::i;:::-;17930:74;;18013:93;18102:3;18013:93;:::i;:::-;18131:2;18126:3;18122:12;18115:19;;17774:366;;;:::o;18146:419::-;18312:4;18350:2;18339:9;18335:18;18327:26;;18399:9;18393:4;18389:20;18385:1;18374:9;18370:17;18363:47;18427:131;18553:4;18427:131;:::i;:::-;18419:139;;18146:419;;;:::o;18571:243::-;18711:34;18707:1;18699:6;18695:14;18688:58;18780:26;18775:2;18767:6;18763:15;18756:51;18571:243;:::o;18820:366::-;18962:3;18983:67;19047:2;19042:3;18983:67;:::i;:::-;18976:74;;19059:93;19148:3;19059:93;:::i;:::-;19177:2;19172:3;19168:12;19161:19;;18820:366;;;:::o;19192:419::-;19358:4;19396:2;19385:9;19381:18;19373:26;;19445:9;19439:4;19435:20;19431:1;19420:9;19416:17;19409:47;19473:131;19599:4;19473:131;:::i;:::-;19465:139;;19192:419;;;:::o;19617:220::-;19757:34;19753:1;19745:6;19741:14;19734:58;19826:3;19821:2;19813:6;19809:15;19802:28;19617:220;:::o;19843:366::-;19985:3;20006:67;20070:2;20065:3;20006:67;:::i;:::-;19999:74;;20082:93;20171:3;20082:93;:::i;:::-;20200:2;20195:3;20191:12;20184:19;;19843:366;;;:::o;20215:419::-;20381:4;20419:2;20408:9;20404:18;20396:26;;20468:9;20462:4;20458:20;20454:1;20443:9;20439:17;20432:47;20496:131;20622:4;20496:131;:::i;:::-;20488:139;;20215:419;;;:::o;20640:142::-;20743:32;20769:5;20743:32;:::i;:::-;20738:3;20731:45;20640:142;;:::o;20788:561::-;20971:4;21009:2;20998:9;20994:18;20986:26;;21022:71;21090:1;21079:9;21075:17;21066:6;21022:71;:::i;:::-;21103:88;21187:2;21176:9;21172:18;21163:6;21103:88;:::i;:::-;21238:9;21232:4;21228:20;21223:2;21212:9;21208:18;21201:48;21266:76;21337:4;21328:6;21266:76;:::i;:::-;21258:84;;20788:561;;;;;;:::o;21355:147::-;21456:11;21493:3;21478:18;;21355:147;;;;:::o;21508:373::-;21612:3;21640:38;21672:5;21640:38;:::i;:::-;21694:88;21775:6;21770:3;21694:88;:::i;:::-;21687:95;;21791:52;21836:6;21831:3;21824:4;21817:5;21813:16;21791:52;:::i;:::-;21868:6;21863:3;21859:16;21852:23;;21616:265;21508:373;;;;:::o;21887:94::-;21920:8;21968:5;21964:2;21960:14;21939:35;;21887:94;;;:::o;21987:::-;22026:7;22055:20;22069:5;22055:20;:::i;:::-;22044:31;;21987:94;;;:::o;22087:100::-;22126:7;22155:26;22175:5;22155:26;:::i;:::-;22144:37;;22087:100;;;:::o;22193:157::-;22298:45;22318:24;22336:5;22318:24;:::i;:::-;22298:45;:::i;:::-;22293:3;22286:58;22193:157;;:::o;22356:412::-;22514:3;22536:93;22625:3;22616:6;22536:93;:::i;:::-;22529:100;;22639:75;22710:3;22701:6;22639:75;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22759:3;22752:10;;22356:412;;;;;:::o;22774:271::-;22904:3;22926:93;23015:3;23006:6;22926:93;:::i;:::-;22919:100;;23036:3;23029:10;;22774:271;;;;:::o;23051:178::-;23191:30;23187:1;23179:6;23175:14;23168:54;23051:178;:::o;23235:366::-;23377:3;23398:67;23462:2;23457:3;23398:67;:::i;:::-;23391:74;;23474:93;23563:3;23474:93;:::i;:::-;23592:2;23587:3;23583:12;23576:19;;23235:366;;;:::o;23607:419::-;23773:4;23811:2;23800:9;23796:18;23788:26;;23860:9;23854:4;23850:20;23846:1;23835:9;23831:17;23824:47;23888:131;24014:4;23888:131;:::i;:::-;23880:139;;23607:419;;;:::o;24032:236::-;24172:34;24168:1;24160:6;24156:14;24149:58;24241:19;24236:2;24228:6;24224:15;24217:44;24032:236;:::o;24274:366::-;24416:3;24437:67;24501:2;24496:3;24437:67;:::i;:::-;24430:74;;24513:93;24602:3;24513:93;:::i;:::-;24631:2;24626:3;24622:12;24615:19;;24274:366;;;:::o;24646:419::-;24812:4;24850:2;24839:9;24835:18;24827:26;;24899:9;24893:4;24889:20;24885:1;24874:9;24870:17;24863:47;24927:131;25053:4;24927:131;:::i;:::-;24919:139;;24646:419;;;:::o;25071:182::-;25211:34;25207:1;25199:6;25195:14;25188:58;25071:182;:::o;25259:366::-;25401:3;25422:67;25486:2;25481:3;25422:67;:::i;:::-;25415:74;;25498:93;25587:3;25498:93;:::i;:::-;25616:2;25611:3;25607:12;25600:19;;25259:366;;;:::o;25631:419::-;25797:4;25835:2;25824:9;25820:18;25812:26;;25884:9;25878:4;25874:20;25870:1;25859:9;25855:17;25848:47;25912:131;26038:4;25912:131;:::i;:::-;25904:139;;25631:419;;;:::o;26056:228::-;26196:34;26192:1;26184:6;26180:14;26173:58;26265:11;26260:2;26252:6;26248:15;26241:36;26056:228;:::o;26290:366::-;26432:3;26453:67;26517:2;26512:3;26453:67;:::i;:::-;26446:74;;26529:93;26618:3;26529:93;:::i;:::-;26647:2;26642:3;26638:12;26631:19;;26290:366;;;:::o;26662:419::-;26828:4;26866:2;26855:9;26851:18;26843:26;;26915:9;26909:4;26905:20;26901:1;26890:9;26886:17;26879:47;26943:131;27069:4;26943:131;:::i;:::-;26935:139;;26662:419;;;:::o;27087:229::-;27227:34;27223:1;27215:6;27211:14;27204:58;27296:12;27291:2;27283:6;27279:15;27272:37;27087:229;:::o;27322:366::-;27464:3;27485:67;27549:2;27544:3;27485:67;:::i;:::-;27478:74;;27561:93;27650:3;27561:93;:::i;:::-;27679:2;27674:3;27670:12;27663:19;;27322:366;;;:::o;27694:419::-;27860:4;27898:2;27887:9;27883:18;27875:26;;27947:9;27941:4;27937:20;27933:1;27922:9;27918:17;27911:47;27975:131;28101:4;27975:131;:::i;:::-;27967:139;;27694:419;;;:::o;28119:168::-;28259:20;28255:1;28247:6;28243:14;28236:44;28119:168;:::o;28293:366::-;28435:3;28456:67;28520:2;28515:3;28456:67;:::i;:::-;28449:74;;28532:93;28621:3;28532:93;:::i;:::-;28650:2;28645:3;28641:12;28634:19;;28293:366;;;:::o;28665:419::-;28831:4;28869:2;28858:9;28854:18;28846:26;;28918:9;28912:4;28908:20;28904:1;28893:9;28889:17;28882:47;28946:131;29072:4;28946:131;:::i;:::-;28938:139;;28665:419;;;:::o;29090:233::-;29230:34;29226:1;29218:6;29214:14;29207:58;29299:16;29294:2;29286:6;29282:15;29275:41;29090:233;:::o;29329:366::-;29471:3;29492:67;29556:2;29551:3;29492:67;:::i;:::-;29485:74;;29568:93;29657:3;29568:93;:::i;:::-;29686:2;29681:3;29677:12;29670:19;;29329:366;;;:::o;29701:419::-;29867:4;29905:2;29894:9;29890:18;29882:26;;29954:9;29948:4;29944:20;29940:1;29929:9;29925:17;29918:47;29982:131;30108:4;29982:131;:::i;:::-;29974:139;;29701:419;;;:::o;30126:234::-;30266:34;30262:1;30254:6;30250:14;30243:58;30335:17;30330:2;30322:6;30318:15;30311:42;30126:234;:::o;30366:366::-;30508:3;30529:67;30593:2;30588:3;30529:67;:::i;:::-;30522:74;;30605:93;30694:3;30605:93;:::i;:::-;30723:2;30718:3;30714:12;30707:19;;30366:366;;;:::o;30738:419::-;30904:4;30942:2;30931:9;30927:18;30919:26;;30991:9;30985:4;30981:20;30977:1;30966:9;30962:17;30955:47;31019:131;31145:4;31019:131;:::i;:::-;31011:139;;30738:419;;;:::o;31163:148::-;31265:11;31302:3;31287:18;;31163:148;;;;:::o;31317:377::-;31423:3;31451:39;31484:5;31451:39;:::i;:::-;31506:89;31588:6;31583:3;31506:89;:::i;:::-;31499:96;;31604:52;31649:6;31644:3;31637:4;31630:5;31626:16;31604:52;:::i;:::-;31681:6;31676:3;31672:16;31665:23;;31427:267;31317:377;;;;:::o;31700:435::-;31880:3;31902:95;31993:3;31984:6;31902:95;:::i;:::-;31895:102;;32014:95;32105:3;32096:6;32014:95;:::i;:::-;32007:102;;32126:3;32119:10;;31700:435;;;;;:::o;32141:143::-;32198:5;32229:6;32223:13;32214:22;;32245:33;32272:5;32245:33;:::i;:::-;32141:143;;;;:::o;32290:351::-;32360:6;32409:2;32397:9;32388:7;32384:23;32380:32;32377:119;;;32415:79;;:::i;:::-;32377:119;32535:1;32560:64;32616:7;32607:6;32596:9;32592:22;32560:64;:::i;:::-;32550:74;;32506:128;32290:351;;;;:::o;32647:125::-;32713:7;32742:24;32760:5;32742:24;:::i;:::-;32731:35;;32647:125;;;:::o;32778:180::-;32880:53;32927:5;32880:53;:::i;:::-;32873:5;32870:64;32860:92;;32948:1;32945;32938:12;32860:92;32778:180;:::o;32964:201::-;33050:5;33081:6;33075:13;33066:22;;33097:62;33153:5;33097:62;:::i;:::-;32964:201;;;;:::o;33171:409::-;33270:6;33319:2;33307:9;33298:7;33294:23;33290:32;33287:119;;;33325:79;;:::i;:::-;33287:119;33445:1;33470:93;33555:7;33546:6;33535:9;33531:22;33470:93;:::i;:::-;33460:103;;33416:157;33171:409;;;;:::o;33586:225::-;33726:34;33722:1;33714:6;33710:14;33703:58;33795:8;33790:2;33782:6;33778:15;33771:33;33586:225;:::o;33817:366::-;33959:3;33980:67;34044:2;34039:3;33980:67;:::i;:::-;33973:74;;34056:93;34145:3;34056:93;:::i;:::-;34174:2;34169:3;34165:12;34158:19;;33817:366;;;:::o;34189:419::-;34355:4;34393:2;34382:9;34378:18;34370:26;;34442:9;34436:4;34432:20;34428:1;34417:9;34413:17;34406:47;34470:131;34596:4;34470:131;:::i;:::-;34462:139;;34189:419;;;:::o;34614:224::-;34754:34;34750:1;34742:6;34738:14;34731:58;34823:7;34818:2;34810:6;34806:15;34799:32;34614:224;:::o;34844:366::-;34986:3;35007:67;35071:2;35066:3;35007:67;:::i;:::-;35000:74;;35083:93;35172:3;35083:93;:::i;:::-;35201:2;35196:3;35192:12;35185:19;;34844:366;;;:::o;35216:419::-;35382:4;35420:2;35409:9;35405:18;35397:26;;35469:9;35463:4;35459:20;35455:1;35444:9;35440:17;35433:47;35497:131;35623:4;35497:131;:::i;:::-;35489:139;;35216:419;;;:::o;35641:112::-;35724:22;35740:5;35724:22;:::i;:::-;35719:3;35712:35;35641:112;;:::o;35759:545::-;35932:4;35970:3;35959:9;35955:19;35947:27;;35984:71;36052:1;36041:9;36037:17;36028:6;35984:71;:::i;:::-;36065:68;36129:2;36118:9;36114:18;36105:6;36065:68;:::i;:::-;36143:72;36211:2;36200:9;36196:18;36187:6;36143:72;:::i;:::-;36225;36293:2;36282:9;36278:18;36269:6;36225:72;:::i;:::-;35759:545;;;;;;;:::o;36310:180::-;36358:77;36355:1;36348:88;36455:4;36452:1;36445:15;36479:4;36476:1;36469:15;36496:305;36536:3;36555:20;36573:1;36555:20;:::i;:::-;36550:25;;36589:20;36607:1;36589:20;:::i;:::-;36584:25;;36743:1;36675:66;36671:74;36668:1;36665:81;36662:107;;;36749:18;;:::i;:::-;36662:107;36793:1;36790;36786:9;36779:16;;36496:305;;;;:::o;36807:231::-;36947:34;36943:1;36935:6;36931:14;36924:58;37016:14;37011:2;37003:6;36999:15;36992:39;36807:231;:::o;37044:366::-;37186:3;37207:67;37271:2;37266:3;37207:67;:::i;:::-;37200:74;;37283:93;37372:3;37283:93;:::i;:::-;37401:2;37396:3;37392:12;37385:19;;37044:366;;;:::o;37416:419::-;37582:4;37620:2;37609:9;37605:18;37597:26;;37669:9;37663:4;37659:20;37655:1;37644:9;37640:17;37633:47;37697:131;37823:4;37697:131;:::i;:::-;37689:139;;37416:419;;;:::o;37841:228::-;37981:34;37977:1;37969:6;37965:14;37958:58;38050:11;38045:2;38037:6;38033:15;38026:36;37841:228;:::o;38075:366::-;38217:3;38238:67;38302:2;38297:3;38238:67;:::i;:::-;38231:74;;38314:93;38403:3;38314:93;:::i;:::-;38432:2;38427:3;38423:12;38416:19;;38075:366;;;:::o;38447:419::-;38613:4;38651:2;38640:9;38636:18;38628:26;;38700:9;38694:4;38690:20;38686:1;38675:9;38671:17;38664:47;38728:131;38854:4;38728:131;:::i;:::-;38720:139;;38447:419;;;:::o;38872:223::-;39012:34;39008:1;39000:6;38996:14;38989:58;39081:6;39076:2;39068:6;39064:15;39057:31;38872:223;:::o;39101:366::-;39243:3;39264:67;39328:2;39323:3;39264:67;:::i;:::-;39257:74;;39340:93;39429:3;39340:93;:::i;:::-;39458:2;39453:3;39449:12;39442:19;;39101:366;;;:::o;39473:419::-;39639:4;39677:2;39666:9;39662:18;39654:26;;39726:9;39720:4;39716:20;39712:1;39701:9;39697:17;39690:47;39754:131;39880:4;39754:131;:::i;:::-;39746:139;;39473:419;;;:::o;39898:191::-;39938:4;39958:20;39976:1;39958:20;:::i;:::-;39953:25;;39992:20;40010:1;39992:20;:::i;:::-;39987:25;;40031:1;40028;40025:8;40022:34;;;40036:18;;:::i;:::-;40022:34;40081:1;40078;40074:9;40066:17;;39898:191;;;;:::o;40095:254::-;40204:4;40242:2;40231:9;40227:18;40219:26;;40255:87;40339:1;40328:9;40324:17;40315:6;40255:87;:::i;:::-;40095:254;;;;:::o;40355:175::-;40495:27;40491:1;40483:6;40479:14;40472:51;40355:175;:::o;40536:366::-;40678:3;40699:67;40763:2;40758:3;40699:67;:::i;:::-;40692:74;;40775:93;40864:3;40775:93;:::i;:::-;40893:2;40888:3;40884:12;40877:19;;40536:366;;;:::o;40908:419::-;41074:4;41112:2;41101:9;41097:18;41089:26;;41161:9;41155:4;41151:20;41147:1;41136:9;41132:17;41125:47;41189:131;41315:4;41189:131;:::i;:::-;41181:139;;40908:419;;;:::o;41333:237::-;41473:34;41469:1;41461:6;41457:14;41450:58;41542:20;41537:2;41529:6;41525:15;41518:45;41333:237;:::o;41576:366::-;41718:3;41739:67;41803:2;41798:3;41739:67;:::i;:::-;41732:74;;41815:93;41904:3;41815:93;:::i;:::-;41933:2;41928:3;41924:12;41917:19;;41576:366;;;:::o;41948:419::-;42114:4;42152:2;42141:9;42137:18;42129:26;;42201:9;42195:4;42191:20;42187:1;42176:9;42172:17;42165:47;42229:131;42355:4;42229:131;:::i;:::-;42221:139;;41948:419;;;:::o;42373:233::-;42412:3;42435:24;42453:5;42435:24;:::i;:::-;42426:33;;42481:66;42474:5;42471:77;42468:103;;42551:18;;:::i;:::-;42468:103;42598:1;42591:5;42587:13;42580:20;;42373:233;;;:::o;42612:180::-;42660:77;42657:1;42650:88;42757:4;42754:1;42747:15;42781:4;42778:1;42771:15;42798:185;42838:1;42855:20;42873:1;42855:20;:::i;:::-;42850:25;;42889:20;42907:1;42889:20;:::i;:::-;42884:25;;42928:1;42918:35;;42933:18;;:::i;:::-;42918:35;42975:1;42972;42968:9;42963:14;;42798:185;;;;:::o;42989:176::-;43021:1;43038:20;43056:1;43038:20;:::i;:::-;43033:25;;43072:20;43090:1;43072:20;:::i;:::-;43067:25;;43111:1;43101:35;;43116:18;;:::i;:::-;43101:35;43157:1;43154;43150:9;43145:14;;42989:176;;;;:::o;43171:180::-;43219:77;43216:1;43209:88;43316:4;43313:1;43306:15;43340:4;43337:1;43330:15;43357:553;43534:4;43572:3;43561:9;43557:19;43549:27;;43586:71;43654:1;43643:9;43639:17;43630:6;43586:71;:::i;:::-;43667:72;43735:2;43724:9;43720:18;43711:6;43667:72;:::i;:::-;43749;43817:2;43806:9;43802:18;43793:6;43749:72;:::i;:::-;43831;43899:2;43888:9;43884:18;43875:6;43831:72;:::i;:::-;43357:553;;;;;;;:::o;43916:214::-;44056:66;44052:1;44044:6;44040:14;44033:90;43916:214;:::o;44136:400::-;44296:3;44317:84;44399:1;44394:3;44317:84;:::i;:::-;44310:91;;44410:93;44499:3;44410:93;:::i;:::-;44528:1;44523:3;44519:11;44512:18;;44136:400;;;:::o;44542:79::-;44581:7;44610:5;44599:16;;44542:79;;;:::o;44627:157::-;44732:45;44752:24;44770:5;44752:24;:::i;:::-;44732:45;:::i;:::-;44727:3;44720:58;44627:157;;:::o;44790:663::-;45031:3;45053:148;45197:3;45053:148;:::i;:::-;45046:155;;45211:75;45282:3;45273:6;45211:75;:::i;:::-;45311:2;45306:3;45302:12;45295:19;;45324:75;45395:3;45386:6;45324:75;:::i;:::-;45424:2;45419:3;45415:12;45408:19;;45444:3;45437:10;;44790:663;;;;;:::o;45459:640::-;45654:4;45692:3;45681:9;45677:19;45669:27;;45706:71;45774:1;45763:9;45759:17;45750:6;45706:71;:::i;:::-;45787:72;45855:2;45844:9;45840:18;45831:6;45787:72;:::i;:::-;45869;45937:2;45926:9;45922:18;45913:6;45869:72;:::i;:::-;45988:9;45982:4;45978:20;45973:2;45962:9;45958:18;45951:48;46016:76;46087:4;46078:6;46016:76;:::i;:::-;46008:84;;45459:640;;;;;;;:::o;46105:141::-;46161:5;46192:6;46186:13;46177:22;;46208:32;46234:5;46208:32;:::i;:::-;46105:141;;;;:::o;46252:349::-;46321:6;46370:2;46358:9;46349:7;46345:23;46341:32;46338:119;;;46376:79;;:::i;:::-;46338:119;46496:1;46521:63;46576:7;46567:6;46556:9;46552:22;46521:63;:::i;:::-;46511:73;;46467:127;46252:349;;;;:::o;46607:182::-;46747:34;46743:1;46735:6;46731:14;46724:58;46607:182;:::o;46795:366::-;46937:3;46958:67;47022:2;47017:3;46958:67;:::i;:::-;46951:74;;47034:93;47123:3;47034:93;:::i;:::-;47152:2;47147:3;47143:12;47136:19;;46795:366;;;:::o;47167:419::-;47333:4;47371:2;47360:9;47356:18;47348:26;;47420:9;47414:4;47410:20;47406:1;47395:9;47391:17;47384:47;47448:131;47574:4;47448:131;:::i;:::-;47440:139;;47167:419;;;:::o;47592:178::-;47732:30;47728:1;47720:6;47716:14;47709:54;47592:178;:::o;47776:366::-;47918:3;47939:67;48003:2;47998:3;47939:67;:::i;:::-;47932:74;;48015:93;48104:3;48015:93;:::i;:::-;48133:2;48128:3;48124:12;48117:19;;47776:366;;;:::o;48148:419::-;48314:4;48352:2;48341:9;48337:18;48329:26;;48401:9;48395:4;48391:20;48387:1;48376:9;48372:17;48365:47;48429:131;48555:4;48429:131;:::i;:::-;48421:139;;48148:419;;;:::o

Swarm Source

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