ETH Price: $3,512.56 (+3.03%)

Token

Rekt Degenz (Clive)
 

Overview

Max Total Supply

526 Clive

Holders

440

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 Clive
0x6c0578173dfe9c399a1ae93647e8cac7dbb3022f
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:
RektDegenz

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-11-03
*/

// SPDX-License-Identifier: MIT
    
    abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}

// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
    pragma solidity ^0.8.0;
    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);}}

// File @openzeppelin/contracts/utils/[email protected]
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
    library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {return "0";} uint256 temp = value; uint256 digits; while (temp != 0) {digits++; temp /= 10;} bytes memory buffer = new bytes(digits);
        while (value != 0) {digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10;} return string(buffer);}
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {return "0x00";} uint256 temp = value; uint256 length = 0; while (temp != 0) {length++; temp >>= 8;} return toHexString(value, length);}
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4;} require(value == 0, "Strings: hex length insufficient"); return string(buffer);}}

// File: erc721a/contracts/IERC721A.sol
// ERC721A Contracts v4.0.0
    pragma solidity ^0.8.4;
    interface IERC721A {error ApprovalCallerNotOwnerNorApproved();
    error ApprovalQueryForNonexistentToken();
    error ApproveToCaller();
    error ApprovalToCurrentOwner();
    error BalanceQueryForZeroAddress();
    error MintToZeroAddress();
    error MintZeroQuantity();
    error OwnerQueryForNonexistentToken();
    error TransferCallerNotOwnerNorApproved();
    error TransferFromIncorrectOwner();
    error TransferToNonERC721ReceiverImplementer();
    error TransferToZeroAddress();
    error URIQueryForNonexistentToken();
    struct TokenOwnership {address addr; uint64 startTimestamp; bool burned;}
    function totalSupply() external view returns (uint256);
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
    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, bytes calldata data) external;
    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 setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);}

// File: erc721a/contracts/ERC721A.sol
// ERC721A Contracts v4.0.0
    pragma solidity ^0.8.4; interface ERC721A__IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);}

    contract ERC721A is IERC721A {
    uint256 private constant BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;
    uint256 private constant BITPOS_NUMBER_MINTED = 64;
    uint256 private constant BITPOS_NUMBER_BURNED = 128;
    uint256 private constant BITPOS_AUX = 192;
    uint256 private constant BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;
    uint256 private constant BITPOS_START_TIMESTAMP = 160;
    uint256 private constant BITMASK_BURNED = 1 << 224;
    uint256 private constant BITPOS_NEXT_INITIALIZED = 225;
    uint256 private constant BITMASK_NEXT_INITIALIZED = 1 << 225;
    uint256 private _currentIndex;
    uint256 private _burnCounter;
    string private _name;
    string private _symbol;
    mapping(uint256 => uint256) private _packedOwnerships;
    mapping(address => uint256) private _packedAddressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(string memory name_, string memory symbol_) {_name = name_; _symbol = symbol_; _currentIndex = _startTokenId();}
    function _startTokenId() internal view virtual returns (uint256) {return 1;}
    function _nextTokenId() internal view returns (uint256) {return _currentIndex;}
    function totalSupply() public view override returns (uint256) {unchecked {return _currentIndex - _burnCounter - _startTokenId();}}
    function _totalMinted() internal view returns (uint256) {unchecked {return _currentIndex - _startTokenId();}}
    function _totalBurned() internal view returns (uint256) {return _burnCounter;}
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {return interfaceId == 0x01ffc9a7 || interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;}
    function balanceOf(address owner) public view override returns (uint256) {if (owner == address(0)) revert BalanceQueryForZeroAddress(); return _packedAddressData[owner] & BITMASK_ADDRESS_DATA_ENTRY;}
    function _numberMinted(address owner) internal view returns (uint256) {return (_packedAddressData[owner] >> BITPOS_NUMBER_MINTED) & BITMASK_ADDRESS_DATA_ENTRY;}
    function _numberBurned(address owner) internal view returns (uint256) {return (_packedAddressData[owner] >> BITPOS_NUMBER_BURNED) & BITMASK_ADDRESS_DATA_ENTRY;}
    function _getAux(address owner) internal view returns (uint64) {return uint64(_packedAddressData[owner] >> BITPOS_AUX);}
    function _setAux(address owner, uint64 aux) internal {uint256 packed = _packedAddressData[owner]; uint256 auxCasted; assembly {auxCasted := aux}
        packed = (packed & BITMASK_AUX_COMPLEMENT) | (auxCasted << BITPOS_AUX);_packedAddressData[owner] = packed;}
    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {uint256 curr = tokenId; unchecked {
        if (_startTokenId() <= curr) 
        if (curr < _currentIndex) {uint256 packed = _packedOwnerships[curr]; 
        if (packed & BITMASK_BURNED == 0) {while (packed == 0) {packed = _packedOwnerships[--curr];} return packed; }}} revert OwnerQueryForNonexistentToken();}
    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {
        ownership.addr = address(uint160(packed)); ownership.startTimestamp = uint64(packed >> BITPOS_START_TIMESTAMP); ownership.burned = packed & BITMASK_BURNED != 0;}
    function _ownershipAt(uint256 index) internal view returns (TokenOwnership memory) {return _unpackedOwnership(_packedOwnerships[index]);}
    function _initializeOwnershipAt(uint256 index) internal {if (_packedOwnerships[index] == 0) {_packedOwnerships[index] = _packedOwnershipOf(index);}}
    function _ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {return _unpackedOwnership(_packedOwnershipOf(tokenId));}
    function ownerOf(uint256 tokenId) public view override returns (address) {return address(uint160(_packedOwnershipOf(tokenId)));}
    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); string memory baseURI = _baseURI(); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';}
    function _baseURI() internal view virtual returns (string memory) {return '';}
    function _addressToUint256(address value) private pure returns (uint256 result) {assembly {result := value}}
    function _boolToUint256(bool value) private pure returns (uint256 result) {assembly {result := value}}
    function approve(address to, uint256 tokenId) public override {address owner = address(uint160(_packedOwnershipOf(tokenId)));
        if (to == owner) revert ApprovalToCurrentOwner();
        if (_msgSenderERC721A() != owner)
        if (!isApprovedForAll(owner, _msgSenderERC721A())) {revert ApprovalCallerNotOwnerNorApproved();}_tokenApprovals[tokenId] = to;emit Approval(owner, to, tokenId);}
    function getApproved(uint256 tokenId) public view override returns (address) {if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId];}
    function setApprovalForAll(address operator, bool approved) public virtual override {
        if (operator == _msgSenderERC721A()) revert ApproveToCaller(); _operatorApprovals[_msgSenderERC721A()][operator] = approved; emit ApprovalForAll(_msgSenderERC721A(), 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 {_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 {_transfer(from, to, tokenId);
        if (to.code.length != 0)
        if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {revert TransferToNonERC721ReceiverImplementer();}}
    function _exists(uint256 tokenId) internal view returns (bool) {return
            _startTokenId() <= tokenId &&
            tokenId < _currentIndex &&
            _packedOwnerships[tokenId] & BITMASK_BURNED == 0;}
    function _safeMint(address to, uint256 quantity) internal {_safeMint(to, quantity, '');}
    function _safeMint(address to, uint256 quantity, bytes memory _data) internal {uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked {_packedAddressData[to] += quantity * ((1 << BITPOS_NUMBER_MINTED) | 1); _packedOwnerships[startTokenId] = _addressToUint256(to) | (block.timestamp << BITPOS_START_TIMESTAMP) | (_boolToUint256(quantity == 1) << BITPOS_NEXT_INITIALIZED); uint256 updatedIndex = startTokenId; uint256 end = updatedIndex + quantity;
        if (to.code.length != 0) {do {emit Transfer(address(0), to, updatedIndex);
        if (!_checkContractOnERC721Received(address(0), to, updatedIndex++, _data)) {revert TransferToNonERC721ReceiverImplementer();}} while (updatedIndex < end);
        if (_currentIndex != startTokenId) revert();} else {do {emit Transfer(address(0), to, updatedIndex++);} while (updatedIndex < end);} _currentIndex = updatedIndex;} _afterTokenTransfers(address(0), to, startTokenId, quantity);}
    function _mint(address to, uint256 quantity) internal {uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked {_packedAddressData[to] += quantity * ((1 << BITPOS_NUMBER_MINTED) | 1);
            _packedOwnerships[startTokenId] = _addressToUint256(to) | (block.timestamp << BITPOS_START_TIMESTAMP) | (_boolToUint256(quantity == 1) << BITPOS_NEXT_INITIALIZED);
            uint256 updatedIndex = startTokenId; uint256 end = updatedIndex + quantity;
            do {emit Transfer(address(0), to, updatedIndex++); } while (updatedIndex < end); _currentIndex = updatedIndex;} _afterTokenTransfers(address(0), to, startTokenId, quantity);}
    function _transfer(address from, address to, uint256 tokenId) private {uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);
        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner(); bool isApprovedOrOwner = (_msgSenderERC721A() == from || isApprovedForAll(from, _msgSenderERC721A()) || getApproved(tokenId) == _msgSenderERC721A());
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); delete _tokenApprovals[tokenId];
        unchecked { --_packedAddressData[from]; ++_packedAddressData[to]; _packedOwnerships[tokenId] = _addressToUint256(to) | (block.timestamp << BITPOS_START_TIMESTAMP) | BITMASK_NEXT_INITIALIZED;
        if (prevOwnershipPacked & BITMASK_NEXT_INITIALIZED == 0) {uint256 nextTokenId = tokenId + 1;
        if (_packedOwnerships[nextTokenId] == 0) {
        if (nextTokenId != _currentIndex) {_packedOwnerships[nextTokenId] = prevOwnershipPacked;}}}} emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1);}
    function _burn(uint256 tokenId) internal virtual {_burn(tokenId, false);}
    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); address from = address(uint160(prevOwnershipPacked));
        if (approvalCheck) {bool isApprovedOrOwner = (_msgSenderERC721A() == from || isApprovedForAll(from, _msgSenderERC721A()) || getApproved(tokenId) == _msgSenderERC721A());
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();} _beforeTokenTransfers(from, address(0), tokenId, 1); delete _tokenApprovals[tokenId];
            unchecked {_packedAddressData[from] += (1 << BITPOS_NUMBER_BURNED) - 1; _packedOwnerships[tokenId] = _addressToUint256(from) | (block.timestamp << BITPOS_START_TIMESTAMP) | BITMASK_BURNED |  BITMASK_NEXT_INITIALIZED;
        if (prevOwnershipPacked & BITMASK_NEXT_INITIALIZED == 0) {uint256 nextTokenId = tokenId + 1;
        if (_packedOwnerships[nextTokenId] == 0) {
        if (nextTokenId != _currentIndex) {_packedOwnerships[nextTokenId] = prevOwnershipPacked;}}}} emit Transfer(from, address(0), tokenId); _afterTokenTransfers(from, address(0), tokenId, 1); unchecked {_burnCounter++;}}
    function _checkContractOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (bytes4 retval) {return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;} catch (bytes memory reason) {
        if (reason.length == 0) {revert TransferToNonERC721ReceiverImplementer();} else {assembly {revert(add(32, reason), mload(reason))}}}}
    function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {}
    function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {}
    function _msgSenderERC721A() internal view virtual returns (address) {return msg.sender;}
    function _toString(uint256 value) internal pure returns (string memory ptr) {assembly {ptr := add(mload(0x40), 128) mstore(0x40, ptr) let end := ptr
        for {let temp := value ptr := sub(ptr, 1) mstore8(ptr, add(48, mod(temp, 10))) temp := div(temp, 10)} temp {temp := div(temp, 10)} 
            {ptr := sub(ptr, 1) mstore8(ptr, add(48, mod(temp, 10)))} let length := sub(end, ptr) ptr := sub(ptr, 32) mstore(ptr, length)}}}

    pragma solidity ^0.8.13;
    contract RektDegenz is Ownable, ERC721A {
    uint256 public maxSupply                    = 4444;
    uint256 public maxFreeSupply                = 4444;
    uint256 public maxPerTxDuringMint           = 10;
    uint256 public maxPerAddressDuringMint      = 11;
    uint256 public maxPerAddressDuringFreeMint  = 1;
    uint256 public price                        = 0.004 ether;
    bool    public saleIsActive                 = false;
    bool    public revealed                     = true;

    address constant internal TEAM_ADDRESS = 0xda746371650254b292Ad7c457733ea999B5653a1;
    string public baseURI = "https://gateway.pinata.cloud/ipfs/QmZFPGs9dqjTFWfEpCa1BFEweRdyTqsbi8mGC9WzDowkpW/";
    string public constant baseExtension = ".json";
    string public hiddenMetadataUri;
    mapping(address => uint256) public freeMintedAmount;
    mapping(address => uint256) public mintedAmount;
    constructor() ERC721A("Rekt Degenz", "Clive") {_safeMint(msg.sender, 50); setHiddenMetadataUri("");}

        function airdrop(address[] memory _wallets) external onlyOwner{
        require(totalSupply() + _wallets.length <= maxSupply, "Max Supply Reached.");
        for(uint i = 0; i < _wallets.length; i++)
            _safeMint(_wallets[i], 1);

    }
   function airdropToWallet(address _wallet, uint256 _num) external onlyOwner{
               require(totalSupply() + _num <= maxSupply, "Max Supply Reached.");
            _safeMint(_wallet, _num);
    }
    
    modifier mintCompliance() {require(saleIsActive, "Sale is not active yet."); require(tx.origin == msg.sender, "Wrong Caller"); _;}
    function mint(uint256 _quantity) external payable mintCompliance() {require (msg.value >= price * _quantity, "Insufficient Funds");
        require(maxSupply >= totalSupply() + _quantity, "Exceeds max supply."); uint256 _mintedAmount = mintedAmount[msg.sender];
        require(_mintedAmount + _quantity <= maxPerAddressDuringMint, "Exceeds max mints per address!");
        require(_quantity > 0 && _quantity <= maxPerTxDuringMint, "Invalid mint amount."); mintedAmount[msg.sender] = _mintedAmount + _quantity; _safeMint(msg.sender, _quantity);}
    function freeMint(uint256 _quantity) external mintCompliance() {
        require(maxFreeSupply >= totalSupply() + _quantity, "Exceeds max supply."); uint256 _freeMintedAmount = freeMintedAmount[msg.sender];
        require(_freeMintedAmount + _quantity <= maxPerAddressDuringFreeMint, "Exceeds max free mints per address!"); freeMintedAmount[msg.sender] = _freeMintedAmount + _quantity; _safeMint(msg.sender, _quantity);}
    function setPrice(uint256 _price) external onlyOwner {price = _price;}
    function setMaxPerTx(uint256 _amount) external onlyOwner {maxPerTxDuringMint = _amount;}
    function setMaxPerAddress(uint256 _amount) external onlyOwner {maxPerAddressDuringMint = _amount;}
    function setMaxFreePerAddress(uint256 _amount) external onlyOwner {maxPerAddressDuringFreeMint = _amount;}
    function flipSale() public onlyOwner {saleIsActive = !saleIsActive;}
    function setMaxSupply(uint256 newSupply) public onlyOwner {maxSupply = newSupply;}
    function cutMaxSupply(uint256 _amount) public onlyOwner {require(maxSupply - _amount >= totalSupply(), "Supply cannot fall below minted tokens."); maxSupply -= _amount;}
    function setRevealed(bool _state) public onlyOwner {revealed = _state;}
    function setBaseURI(string memory baseURI_) external onlyOwner {baseURI = baseURI_;}
    function setHiddenMetadataUri(string memory _hiddenMetadataUri) public onlyOwner {hiddenMetadataUri = _hiddenMetadataUri;}
    function _baseURI() internal view virtual override returns (string memory) {return baseURI;}
    function tokenURI(uint256 _tokenId) public view override returns (string memory) 
        {require(_exists(_tokenId), "Token does not exist."); if (revealed == false) {return hiddenMetadataUri;} 
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, Strings.toString(_tokenId), baseExtension)) : "";}
    function withdrawBalance() external payable onlyOwner {(bool success, ) = payable(TEAM_ADDRESS).call{value: address(this).balance} (""); require(success, "transfer failed.");}}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"airdropToWallet","outputs":[],"stateMutability":"nonpayable","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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"cutMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"maxFreeSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddressDuringFreeMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddressDuringMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTxDuringMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenMetadataUri","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxFreePerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setRevealed","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":[],"name":"withdrawBalance","outputs":[],"stateMutability":"payable","type":"function"}]

608060405261115c60095561115c600a55600a600b55600b600c556001600d55660e35fa931a0000600e556000600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff02191690831515021790555060405180608001604052806051815260200162004e8c605191396010908051906020019062000091929190620007eb565b503480156200009f57600080fd5b506040518060400160405280600b81526020017f52656b7420446567656e7a0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f436c6976650000000000000000000000000000000000000000000000000000008152506200012c62000120620001af60201b60201c565b620001b760201b60201c565b816003908051906020019062000144929190620007eb565b5080600490805190602001906200015d929190620007eb565b506200016e6200027b60201b60201c565b6001819055505050620001893360326200028460201b60201c565b620001a960405180602001604052806000815250620002aa60201b60201c565b62000b6e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006001905090565b620002a68282604051806020016040528060008152506200035560201b60201c565b5050565b620002ba620001af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002e06200063960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033090620008fc565b60405180910390fd5b806011908051906020019062000351929190620007eb565b5050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603620003c3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303620003fe576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200041360008583866200066260201b60201c565b600160406001901b178302600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e162000480600185146200066860201b60201c565b901b60a042901b62000498866200067260201b60201c565b1717600560008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b14620005a9575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200055560008784806001019550876200067c60201b60201c565b6200058c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210620004de578260015414620005a357600080fd5b62000615565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210620005aa575b816001819055505050620006336000858386620007dd60201b60201c565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b50505050565b6000819050919050565b6000819050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620006aa620007e360201b60201c565b8786866040518563ffffffff1660e01b8152600401620006ce949392919062000a22565b6020604051808303816000875af19250505080156200070d57506040513d601f19601f820116820180604052508101906200070a919062000ad8565b60015b6200078a573d806000811462000740576040519150601f19603f3d011682016040523d82523d6000602084013e62000745565b606091505b50600081510362000782576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b600033905090565b828054620007f99062000b39565b90600052602060002090601f0160209004810192826200081d576000855562000869565b82601f106200083857805160ff191683800117855562000869565b8280016001018555821562000869579182015b82811115620008685782518255916020019190600101906200084b565b5b5090506200087891906200087c565b5090565b5b80821115620008975760008160009055506001016200087d565b5090565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620008e46020836200089b565b9150620008f182620008ac565b602082019050919050565b600060208201905081810360008301526200091781620008d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200094b826200091e565b9050919050565b6200095d816200093e565b82525050565b6000819050919050565b620009788162000963565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620009ba5780820151818401526020810190506200099d565b83811115620009ca576000848401525b50505050565b6000601f19601f8301169050919050565b6000620009ee826200097e565b620009fa818562000989565b935062000a0c8185602086016200099a565b62000a1781620009d0565b840191505092915050565b600060808201905062000a39600083018762000952565b62000a48602083018662000952565b62000a5760408301856200096d565b818103606083015262000a6b8184620009e1565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000ab28162000a7b565b811462000abe57600080fd5b50565b60008151905062000ad28162000aa7565b92915050565b60006020828403121562000af15762000af062000a76565b5b600062000b018482850162000ac1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b5257607f821691505b60208210810362000b685762000b6762000b0a565b5b50919050565b61430e8062000b7e6000396000f3fe6080604052600436106102725760003560e01c80637bddd65b1161014f578063b88d4fde116100c1578063d5abeb011161007a578063d5abeb01146108f8578063e0a8085314610923578063e985e9c51461094c578063eb8d244414610989578063f2fde38b146109b4578063fbbf8cc3146109dd57610272565b8063b88d4fde146107ea578063bbb6431914610813578063c66828621461083c578063c6f6f21614610867578063c87b56dd14610890578063d3464cbd146108cd57610272565b806395d89b411161011357806395d89b41146106e757806396b1020114610712578063a035b1fe1461074f578063a0712d681461077a578063a22cb46514610796578063a45ba8e7146107bf57610272565b80637bddd65b146106165780637c928fe91461063f5780638bc35c2f146106685780638da5cb5b1461069357806391b7f5ed146106be57610272565b80634fdd43cb116101e85780636c0360eb116101ac5780636c0360eb1461052e5780636f8b44b01461055957806370a0823114610582578063715018a6146105bf578063729ad39e146105d65780637ba5e621146105ff57610272565b80634fdd43cb1461046a578063518302271461049357806355f804b3146104be5780635fd8c710146104e75780636352211e146104f157610272565b806318160ddd1161023a57806318160ddd1461036e57806323b872dd1461039957806323d98917146103c25780632e0fd6eb146103eb57806342842e0e14610416578063475133341461043f57610272565b806301ffc9a71461027757806306fdde03146102b4578063081812fc146102df578063095ea7b31461031c5780631141df2014610345575b600080fd5b34801561028357600080fd5b5061029e600480360381019061029991906130c6565b610a1a565b6040516102ab919061310e565b60405180910390f35b3480156102c057600080fd5b506102c9610aac565b6040516102d691906131c2565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061321a565b610b3e565b6040516103139190613288565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906132cf565b610bba565b005b34801561035157600080fd5b5061036c6004803603810190610367919061321a565b610d60565b005b34801561037a57600080fd5b50610383610e4f565b604051610390919061331e565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190613339565b610e66565b005b3480156103ce57600080fd5b506103e960048036038101906103e491906132cf565b610e76565b005b3480156103f757600080fd5b50610400610f57565b60405161040d919061331e565b60405180910390f35b34801561042257600080fd5b5061043d60048036038101906104389190613339565b610f5d565b005b34801561044b57600080fd5b50610454610f7d565b604051610461919061331e565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c91906134c1565b610f83565b005b34801561049f57600080fd5b506104a8611019565b6040516104b5919061310e565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e091906134c1565b61102c565b005b6104ef6110c2565b005b3480156104fd57600080fd5b506105186004803603810190610513919061321a565b611201565b6040516105259190613288565b60405180910390f35b34801561053a57600080fd5b50610543611213565b60405161055091906131c2565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b919061321a565b6112a1565b005b34801561058e57600080fd5b506105a960048036038101906105a4919061350a565b611327565b6040516105b6919061331e565b60405180910390f35b3480156105cb57600080fd5b506105d46113df565b005b3480156105e257600080fd5b506105fd60048036038101906105f891906135ff565b611467565b005b34801561060b57600080fd5b50610614611583565b005b34801561062257600080fd5b5061063d6004803603810190610638919061321a565b61162b565b005b34801561064b57600080fd5b506106666004803603810190610661919061321a565b6116b1565b005b34801561067457600080fd5b5061067d6118b6565b60405161068a919061331e565b60405180910390f35b34801561069f57600080fd5b506106a86118bc565b6040516106b59190613288565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061321a565b6118e5565b005b3480156106f357600080fd5b506106fc61196b565b60405161070991906131c2565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061350a565b6119fd565b604051610746919061331e565b60405180910390f35b34801561075b57600080fd5b50610764611a15565b604051610771919061331e565b60405180910390f35b610794600480360381019061078f919061321a565b611a1b565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613674565b611cc1565b005b3480156107cb57600080fd5b506107d4611e38565b6040516107e191906131c2565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c9190613755565b611ec6565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061321a565b611f39565b005b34801561084857600080fd5b50610851611fbf565b60405161085e91906131c2565b60405180910390f35b34801561087357600080fd5b5061088e6004803603810190610889919061321a565b611ff8565b005b34801561089c57600080fd5b506108b760048036038101906108b2919061321a565b61207e565b6040516108c491906131c2565b60405180910390f35b3480156108d957600080fd5b506108e261220b565b6040516108ef919061331e565b60405180910390f35b34801561090457600080fd5b5061090d612211565b60405161091a919061331e565b60405180910390f35b34801561092f57600080fd5b5061094a600480360381019061094591906137d8565b612217565b005b34801561095857600080fd5b50610973600480360381019061096e9190613805565b6122b0565b604051610980919061310e565b60405180910390f35b34801561099557600080fd5b5061099e612344565b6040516109ab919061310e565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d6919061350a565b612357565b005b3480156109e957600080fd5b50610a0460048036038101906109ff919061350a565b61244e565b604051610a11919061331e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a7557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aa55750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060038054610abb90613874565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613874565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b5050505050905090565b6000610b4982612466565b610b7f576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610bc5826124c5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c2c576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c4b612591565b73ffffffffffffffffffffffffffffffffffffffff1614610cae57610c7781610c72612591565b6122b0565b610cad576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610d68612599565b73ffffffffffffffffffffffffffffffffffffffff16610d866118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd3906138f1565b60405180910390fd5b610de4610e4f565b81600954610df29190613940565b1015610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906139e6565b60405180910390fd5b8060096000828254610e459190613940565b9250508190555050565b6000610e596125a1565b6002546001540303905090565b610e718383836125aa565b505050565b610e7e612599565b73ffffffffffffffffffffffffffffffffffffffff16610e9c6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee9906138f1565b60405180910390fd5b60095481610efe610e4f565b610f089190613a06565b1115610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090613aa8565b60405180910390fd5b610f538282612951565b5050565b600d5481565b610f7883838360405180602001604052806000815250611ec6565b505050565b600a5481565b610f8b612599565b73ffffffffffffffffffffffffffffffffffffffff16610fa96118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff6906138f1565b60405180910390fd5b8060119080519060200190611015929190612fb7565b5050565b600f60019054906101000a900460ff1681565b611034612599565b73ffffffffffffffffffffffffffffffffffffffff166110526118bc565b73ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f906138f1565b60405180910390fd5b80601090805190602001906110be929190612fb7565b5050565b6110ca612599565b73ffffffffffffffffffffffffffffffffffffffff166110e86118bc565b73ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906138f1565b60405180910390fd5b600073da746371650254b292ad7c457733ea999b5653a173ffffffffffffffffffffffffffffffffffffffff164760405161117890613af9565b60006040518083038185875af1925050503d80600081146111b5576040519150601f19603f3d011682016040523d82523d6000602084013e6111ba565b606091505b50509050806111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590613b5a565b60405180910390fd5b50565b600061120c826124c5565b9050919050565b6010805461122090613874565b80601f016020809104026020016040519081016040528092919081815260200182805461124c90613874565b80156112995780601f1061126e57610100808354040283529160200191611299565b820191906000526020600020905b81548152906001019060200180831161127c57829003601f168201915b505050505081565b6112a9612599565b73ffffffffffffffffffffffffffffffffffffffff166112c76118bc565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611314906138f1565b60405180910390fd5b8060098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138e576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6113e7612599565b73ffffffffffffffffffffffffffffffffffffffff166114056118bc565b73ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611452906138f1565b60405180910390fd5b611465600061296f565b565b61146f612599565b73ffffffffffffffffffffffffffffffffffffffff1661148d6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906138f1565b60405180910390fd5b60095481516114f0610e4f565b6114fa9190613a06565b111561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290613aa8565b60405180910390fd5b60005b815181101561157f5761156c82828151811061155d5761155c613b7a565b5b60200260200101516001612951565b808061157790613ba9565b91505061153e565b5050565b61158b612599565b73ffffffffffffffffffffffffffffffffffffffff166115a96118bc565b73ffffffffffffffffffffffffffffffffffffffff16146115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f6906138f1565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b611633612599565b73ffffffffffffffffffffffffffffffffffffffff166116516118bc565b73ffffffffffffffffffffffffffffffffffffffff16146116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e906138f1565b60405180910390fd5b80600c8190555050565b600f60009054906101000a900460ff16611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790613c3d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590613ca9565b60405180910390fd5b80611777610e4f565b6117819190613a06565b600a5410156117c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bc90613d15565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600d5482826118189190613a06565b1115611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613da7565b60405180910390fd5b81816118659190613a06565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118b23383612951565b5050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118ed612599565b73ffffffffffffffffffffffffffffffffffffffff1661190b6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611958906138f1565b60405180910390fd5b80600e8190555050565b60606004805461197a90613874565b80601f01602080910402602001604051908101604052809291908181526020018280546119a690613874565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b5050505050905090565b60126020528060005260406000206000915090505481565b600e5481565b600f60009054906101000a900460ff16611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613c3d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf90613ca9565b60405180910390fd5b80600e54611ae69190613dc7565b341015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613e6d565b60405180910390fd5b80611b31610e4f565b611b3b9190613a06565b6009541015611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7690613d15565b60405180910390fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600c548282611bd29190613a06565b1115611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613ed9565b60405180910390fd5b600082118015611c255750600b548211155b611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b90613f45565b60405180910390fd5b8181611c709190613a06565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cbd3383612951565b5050565b611cc9612591565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2d576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060086000611d3a612591565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611de7612591565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e2c919061310e565b60405180910390a35050565b60118054611e4590613874565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7190613874565b8015611ebe5780601f10611e9357610100808354040283529160200191611ebe565b820191906000526020600020905b815481529060010190602001808311611ea157829003601f168201915b505050505081565b611ed18484846125aa565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611f3357611efc84848484612a33565b611f32576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611f41612599565b73ffffffffffffffffffffffffffffffffffffffff16611f5f6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac906138f1565b60405180910390fd5b80600d8190555050565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b612000612599565b73ffffffffffffffffffffffffffffffffffffffff1661201e6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b906138f1565b60405180910390fd5b80600b8190555050565b606061208982612466565b6120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90613fb1565b60405180910390fd5b60001515600f60019054906101000a900460ff1615150361217557601180546120f090613874565b80601f016020809104026020016040519081016040528092919081815260200182805461211c90613874565b80156121695780601f1061213e57610100808354040283529160200191612169565b820191906000526020600020905b81548152906001019060200180831161214c57829003601f168201915b50505050509050612206565b60006010805461218490613874565b9050116121a05760405180602001604052806000815250612203565b60106121ab83612b83565b6040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506040516020016121f3939291906140a1565b6040516020818303038152906040525b90505b919050565b600b5481565b60095481565b61221f612599565b73ffffffffffffffffffffffffffffffffffffffff1661223d6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a906138f1565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f60009054906101000a900460ff1681565b61235f612599565b73ffffffffffffffffffffffffffffffffffffffff1661237d6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca906138f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243990614144565b60405180910390fd5b61244b8161296f565b50565b60136020528060005260406000206000915090505481565b6000816124716125a1565b11158015612480575060015482105b80156124be575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600080829050806124d46125a1565b1161255a576001548110156125595760006005600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612557575b6000810361254d576005600083600190039350838152602001908152602001600020549050612523565b809250505061258c565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600033905090565b600033905090565b60006001905090565b60006125b5826124c5565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461261c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661263d612591565b73ffffffffffffffffffffffffffffffffffffffff16148061266c575061266b85612666612591565b6122b0565b5b806126b1575061267a612591565b73ffffffffffffffffffffffffffffffffffffffff1661269984610b3e565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806126ea576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612750576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61275d8585856001612ce3565b6007600084815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055507c020000000000000000000000000000000000000000000000000000000060a042901b61285a86612ce9565b1717600560008581526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008316036128e257600060018401905060006005600083815260200190815260200160002054036128e05760015481146128df578260056000838152602001908152602001600020819055505b5b505b828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461294a8585856001612cf3565b5050505050565b61296b828260405180602001604052806000815250612cf9565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a59612591565b8786866040518563ffffffff1660e01b8152600401612a7b94939291906141b9565b6020604051808303816000875af1925050508015612ab757506040513d601f19601f82011682018060405250810190612ab4919061421a565b60015b612b30573d8060008114612ae7576040519150601f19603f3d011682016040523d82523d6000602084013e612aec565b606091505b506000815103612b28576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008203612bca576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cde565b600082905060005b60008214612bfc578080612be590613ba9565b915050600a82612bf59190614276565b9150612bd2565b60008167ffffffffffffffff811115612c1857612c17613396565b5b6040519080825280601f01601f191660200182016040528015612c4a5781602001600182028036833780820191505090505b5090505b60008514612cd757600182612c639190613940565b9150600a85612c7291906142a7565b6030612c7e9190613a06565b60f81b818381518110612c9457612c93613b7a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612cd09190614276565b9450612c4e565b8093505050505b919050565b50505050565b6000819050919050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d66576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612da0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612dad6000858386612ce3565b600160406001901b178302600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e1612e1260018514612fad565b901b60a042901b612e2286612ce9565b1717600560008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b14612f26575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ed66000878480600101955087612a33565b612f0c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210612e67578260015414612f2157600080fd5b612f91565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210612f27575b816001819055505050612fa76000858386612cf3565b50505050565b6000819050919050565b828054612fc390613874565b90600052602060002090601f016020900481019282612fe5576000855561302c565b82601f10612ffe57805160ff191683800117855561302c565b8280016001018555821561302c579182015b8281111561302b578251825591602001919060010190613010565b5b509050613039919061303d565b5090565b5b8082111561305657600081600090555060010161303e565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130a38161306e565b81146130ae57600080fd5b50565b6000813590506130c08161309a565b92915050565b6000602082840312156130dc576130db613064565b5b60006130ea848285016130b1565b91505092915050565b60008115159050919050565b613108816130f3565b82525050565b600060208201905061312360008301846130ff565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613163578082015181840152602081019050613148565b83811115613172576000848401525b50505050565b6000601f19601f8301169050919050565b600061319482613129565b61319e8185613134565b93506131ae818560208601613145565b6131b781613178565b840191505092915050565b600060208201905081810360008301526131dc8184613189565b905092915050565b6000819050919050565b6131f7816131e4565b811461320257600080fd5b50565b600081359050613214816131ee565b92915050565b6000602082840312156132305761322f613064565b5b600061323e84828501613205565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061327282613247565b9050919050565b61328281613267565b82525050565b600060208201905061329d6000830184613279565b92915050565b6132ac81613267565b81146132b757600080fd5b50565b6000813590506132c9816132a3565b92915050565b600080604083850312156132e6576132e5613064565b5b60006132f4858286016132ba565b925050602061330585828601613205565b9150509250929050565b613318816131e4565b82525050565b6000602082019050613333600083018461330f565b92915050565b60008060006060848603121561335257613351613064565b5b6000613360868287016132ba565b9350506020613371868287016132ba565b925050604061338286828701613205565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133ce82613178565b810181811067ffffffffffffffff821117156133ed576133ec613396565b5b80604052505050565b600061340061305a565b905061340c82826133c5565b919050565b600067ffffffffffffffff82111561342c5761342b613396565b5b61343582613178565b9050602081019050919050565b82818337600083830152505050565b600061346461345f84613411565b6133f6565b9050828152602081018484840111156134805761347f613391565b5b61348b848285613442565b509392505050565b600082601f8301126134a8576134a761338c565b5b81356134b8848260208601613451565b91505092915050565b6000602082840312156134d7576134d6613064565b5b600082013567ffffffffffffffff8111156134f5576134f4613069565b5b61350184828501613493565b91505092915050565b6000602082840312156135205761351f613064565b5b600061352e848285016132ba565b91505092915050565b600067ffffffffffffffff82111561355257613551613396565b5b602082029050602081019050919050565b600080fd5b600061357b61357684613537565b6133f6565b9050808382526020820190506020840283018581111561359e5761359d613563565b5b835b818110156135c757806135b388826132ba565b8452602084019350506020810190506135a0565b5050509392505050565b600082601f8301126135e6576135e561338c565b5b81356135f6848260208601613568565b91505092915050565b60006020828403121561361557613614613064565b5b600082013567ffffffffffffffff81111561363357613632613069565b5b61363f848285016135d1565b91505092915050565b613651816130f3565b811461365c57600080fd5b50565b60008135905061366e81613648565b92915050565b6000806040838503121561368b5761368a613064565b5b6000613699858286016132ba565b92505060206136aa8582860161365f565b9150509250929050565b600067ffffffffffffffff8211156136cf576136ce613396565b5b6136d882613178565b9050602081019050919050565b60006136f86136f3846136b4565b6133f6565b90508281526020810184848401111561371457613713613391565b5b61371f848285613442565b509392505050565b600082601f83011261373c5761373b61338c565b5b813561374c8482602086016136e5565b91505092915050565b6000806000806080858703121561376f5761376e613064565b5b600061377d878288016132ba565b945050602061378e878288016132ba565b935050604061379f87828801613205565b925050606085013567ffffffffffffffff8111156137c0576137bf613069565b5b6137cc87828801613727565b91505092959194509250565b6000602082840312156137ee576137ed613064565b5b60006137fc8482850161365f565b91505092915050565b6000806040838503121561381c5761381b613064565b5b600061382a858286016132ba565b925050602061383b858286016132ba565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388c57607f821691505b60208210810361389f5761389e613845565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138db602083613134565b91506138e6826138a5565b602082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394b826131e4565b9150613956836131e4565b92508282101561396957613968613911565b5b828203905092915050565b7f537570706c792063616e6e6f742066616c6c2062656c6f77206d696e7465642060008201527f746f6b656e732e00000000000000000000000000000000000000000000000000602082015250565b60006139d0602783613134565b91506139db82613974565b604082019050919050565b600060208201905081810360008301526139ff816139c3565b9050919050565b6000613a11826131e4565b9150613a1c836131e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5157613a50613911565b5b828201905092915050565b7f4d617820537570706c7920526561636865642e00000000000000000000000000600082015250565b6000613a92601383613134565b9150613a9d82613a5c565b602082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b600081905092915050565b50565b6000613ae3600083613ac8565b9150613aee82613ad3565b600082019050919050565b6000613b0482613ad6565b9150819050919050565b7f7472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b6000613b44601083613134565b9150613b4f82613b0e565b602082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bb4826131e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613be657613be5613911565b5b600182019050919050565b7f53616c65206973206e6f7420616374697665207965742e000000000000000000600082015250565b6000613c27601783613134565b9150613c3282613bf1565b602082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f57726f6e672043616c6c65720000000000000000000000000000000000000000600082015250565b6000613c93600c83613134565b9150613c9e82613c5d565b602082019050919050565b60006020820190508181036000830152613cc281613c86565b9050919050565b7f45786365656473206d617820737570706c792e00000000000000000000000000600082015250565b6000613cff601383613134565b9150613d0a82613cc9565b602082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b7f45786365656473206d61782066726565206d696e74732070657220616464726560008201527f7373210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d91602383613134565b9150613d9c82613d35565b604082019050919050565b60006020820190508181036000830152613dc081613d84565b9050919050565b6000613dd2826131e4565b9150613ddd836131e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1657613e15613911565b5b828202905092915050565b7f496e73756666696369656e742046756e64730000000000000000000000000000600082015250565b6000613e57601283613134565b9150613e6282613e21565b602082019050919050565b60006020820190508181036000830152613e8681613e4a565b9050919050565b7f45786365656473206d6178206d696e7473207065722061646472657373210000600082015250565b6000613ec3601e83613134565b9150613ece82613e8d565b602082019050919050565b60006020820190508181036000830152613ef281613eb6565b9050919050565b7f496e76616c6964206d696e7420616d6f756e742e000000000000000000000000600082015250565b6000613f2f601483613134565b9150613f3a82613ef9565b602082019050919050565b60006020820190508181036000830152613f5e81613f22565b9050919050565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b6000613f9b601583613134565b9150613fa682613f65565b602082019050919050565b60006020820190508181036000830152613fca81613f8e565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613ffe81613874565b6140088186613fd1565b94506001821660008114614023576001811461403457614067565b60ff19831686528186019350614067565b61403d85613fdc565b60005b8381101561405f57815481890152600182019150602081019050614040565b838801955050505b50505092915050565b600061407b82613129565b6140858185613fd1565b9350614095818560208601613145565b80840191505092915050565b60006140ad8286613ff1565b91506140b98285614070565b91506140c58284614070565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061412e602683613134565b9150614139826140d2565b604082019050919050565b6000602082019050818103600083015261415d81614121565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061418b82614164565b614195818561416f565b93506141a5818560208601613145565b6141ae81613178565b840191505092915050565b60006080820190506141ce6000830187613279565b6141db6020830186613279565b6141e8604083018561330f565b81810360608301526141fa8184614180565b905095945050505050565b6000815190506142148161309a565b92915050565b6000602082840312156142305761422f613064565b5b600061423e84828501614205565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614281826131e4565b915061428c836131e4565b92508261429c5761429b614247565b5b828204905092915050565b60006142b2826131e4565b91506142bd836131e4565b9250826142cd576142cc614247565b5b82820690509291505056fea26469706673582212206650effbf9b3ea0ce8350831eff0a0009510dfad2e909f834968fdc31c8411f264736f6c634300080d003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d5a465047733964716a54465766457043613142464577655264795471736269386d474339577a446f776b70572f

Deployed Bytecode

0x6080604052600436106102725760003560e01c80637bddd65b1161014f578063b88d4fde116100c1578063d5abeb011161007a578063d5abeb01146108f8578063e0a8085314610923578063e985e9c51461094c578063eb8d244414610989578063f2fde38b146109b4578063fbbf8cc3146109dd57610272565b8063b88d4fde146107ea578063bbb6431914610813578063c66828621461083c578063c6f6f21614610867578063c87b56dd14610890578063d3464cbd146108cd57610272565b806395d89b411161011357806395d89b41146106e757806396b1020114610712578063a035b1fe1461074f578063a0712d681461077a578063a22cb46514610796578063a45ba8e7146107bf57610272565b80637bddd65b146106165780637c928fe91461063f5780638bc35c2f146106685780638da5cb5b1461069357806391b7f5ed146106be57610272565b80634fdd43cb116101e85780636c0360eb116101ac5780636c0360eb1461052e5780636f8b44b01461055957806370a0823114610582578063715018a6146105bf578063729ad39e146105d65780637ba5e621146105ff57610272565b80634fdd43cb1461046a578063518302271461049357806355f804b3146104be5780635fd8c710146104e75780636352211e146104f157610272565b806318160ddd1161023a57806318160ddd1461036e57806323b872dd1461039957806323d98917146103c25780632e0fd6eb146103eb57806342842e0e14610416578063475133341461043f57610272565b806301ffc9a71461027757806306fdde03146102b4578063081812fc146102df578063095ea7b31461031c5780631141df2014610345575b600080fd5b34801561028357600080fd5b5061029e600480360381019061029991906130c6565b610a1a565b6040516102ab919061310e565b60405180910390f35b3480156102c057600080fd5b506102c9610aac565b6040516102d691906131c2565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061321a565b610b3e565b6040516103139190613288565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906132cf565b610bba565b005b34801561035157600080fd5b5061036c6004803603810190610367919061321a565b610d60565b005b34801561037a57600080fd5b50610383610e4f565b604051610390919061331e565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190613339565b610e66565b005b3480156103ce57600080fd5b506103e960048036038101906103e491906132cf565b610e76565b005b3480156103f757600080fd5b50610400610f57565b60405161040d919061331e565b60405180910390f35b34801561042257600080fd5b5061043d60048036038101906104389190613339565b610f5d565b005b34801561044b57600080fd5b50610454610f7d565b604051610461919061331e565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c91906134c1565b610f83565b005b34801561049f57600080fd5b506104a8611019565b6040516104b5919061310e565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e091906134c1565b61102c565b005b6104ef6110c2565b005b3480156104fd57600080fd5b506105186004803603810190610513919061321a565b611201565b6040516105259190613288565b60405180910390f35b34801561053a57600080fd5b50610543611213565b60405161055091906131c2565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b919061321a565b6112a1565b005b34801561058e57600080fd5b506105a960048036038101906105a4919061350a565b611327565b6040516105b6919061331e565b60405180910390f35b3480156105cb57600080fd5b506105d46113df565b005b3480156105e257600080fd5b506105fd60048036038101906105f891906135ff565b611467565b005b34801561060b57600080fd5b50610614611583565b005b34801561062257600080fd5b5061063d6004803603810190610638919061321a565b61162b565b005b34801561064b57600080fd5b506106666004803603810190610661919061321a565b6116b1565b005b34801561067457600080fd5b5061067d6118b6565b60405161068a919061331e565b60405180910390f35b34801561069f57600080fd5b506106a86118bc565b6040516106b59190613288565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061321a565b6118e5565b005b3480156106f357600080fd5b506106fc61196b565b60405161070991906131c2565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061350a565b6119fd565b604051610746919061331e565b60405180910390f35b34801561075b57600080fd5b50610764611a15565b604051610771919061331e565b60405180910390f35b610794600480360381019061078f919061321a565b611a1b565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613674565b611cc1565b005b3480156107cb57600080fd5b506107d4611e38565b6040516107e191906131c2565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c9190613755565b611ec6565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061321a565b611f39565b005b34801561084857600080fd5b50610851611fbf565b60405161085e91906131c2565b60405180910390f35b34801561087357600080fd5b5061088e6004803603810190610889919061321a565b611ff8565b005b34801561089c57600080fd5b506108b760048036038101906108b2919061321a565b61207e565b6040516108c491906131c2565b60405180910390f35b3480156108d957600080fd5b506108e261220b565b6040516108ef919061331e565b60405180910390f35b34801561090457600080fd5b5061090d612211565b60405161091a919061331e565b60405180910390f35b34801561092f57600080fd5b5061094a600480360381019061094591906137d8565b612217565b005b34801561095857600080fd5b50610973600480360381019061096e9190613805565b6122b0565b604051610980919061310e565b60405180910390f35b34801561099557600080fd5b5061099e612344565b6040516109ab919061310e565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d6919061350a565b612357565b005b3480156109e957600080fd5b50610a0460048036038101906109ff919061350a565b61244e565b604051610a11919061331e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a7557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aa55750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060038054610abb90613874565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613874565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b5050505050905090565b6000610b4982612466565b610b7f576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610bc5826124c5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c2c576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c4b612591565b73ffffffffffffffffffffffffffffffffffffffff1614610cae57610c7781610c72612591565b6122b0565b610cad576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610d68612599565b73ffffffffffffffffffffffffffffffffffffffff16610d866118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd3906138f1565b60405180910390fd5b610de4610e4f565b81600954610df29190613940565b1015610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906139e6565b60405180910390fd5b8060096000828254610e459190613940565b9250508190555050565b6000610e596125a1565b6002546001540303905090565b610e718383836125aa565b505050565b610e7e612599565b73ffffffffffffffffffffffffffffffffffffffff16610e9c6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee9906138f1565b60405180910390fd5b60095481610efe610e4f565b610f089190613a06565b1115610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090613aa8565b60405180910390fd5b610f538282612951565b5050565b600d5481565b610f7883838360405180602001604052806000815250611ec6565b505050565b600a5481565b610f8b612599565b73ffffffffffffffffffffffffffffffffffffffff16610fa96118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff6906138f1565b60405180910390fd5b8060119080519060200190611015929190612fb7565b5050565b600f60019054906101000a900460ff1681565b611034612599565b73ffffffffffffffffffffffffffffffffffffffff166110526118bc565b73ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f906138f1565b60405180910390fd5b80601090805190602001906110be929190612fb7565b5050565b6110ca612599565b73ffffffffffffffffffffffffffffffffffffffff166110e86118bc565b73ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906138f1565b60405180910390fd5b600073da746371650254b292ad7c457733ea999b5653a173ffffffffffffffffffffffffffffffffffffffff164760405161117890613af9565b60006040518083038185875af1925050503d80600081146111b5576040519150601f19603f3d011682016040523d82523d6000602084013e6111ba565b606091505b50509050806111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590613b5a565b60405180910390fd5b50565b600061120c826124c5565b9050919050565b6010805461122090613874565b80601f016020809104026020016040519081016040528092919081815260200182805461124c90613874565b80156112995780601f1061126e57610100808354040283529160200191611299565b820191906000526020600020905b81548152906001019060200180831161127c57829003601f168201915b505050505081565b6112a9612599565b73ffffffffffffffffffffffffffffffffffffffff166112c76118bc565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611314906138f1565b60405180910390fd5b8060098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138e576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6113e7612599565b73ffffffffffffffffffffffffffffffffffffffff166114056118bc565b73ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611452906138f1565b60405180910390fd5b611465600061296f565b565b61146f612599565b73ffffffffffffffffffffffffffffffffffffffff1661148d6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906138f1565b60405180910390fd5b60095481516114f0610e4f565b6114fa9190613a06565b111561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290613aa8565b60405180910390fd5b60005b815181101561157f5761156c82828151811061155d5761155c613b7a565b5b60200260200101516001612951565b808061157790613ba9565b91505061153e565b5050565b61158b612599565b73ffffffffffffffffffffffffffffffffffffffff166115a96118bc565b73ffffffffffffffffffffffffffffffffffffffff16146115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f6906138f1565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b611633612599565b73ffffffffffffffffffffffffffffffffffffffff166116516118bc565b73ffffffffffffffffffffffffffffffffffffffff16146116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e906138f1565b60405180910390fd5b80600c8190555050565b600f60009054906101000a900460ff16611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790613c3d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590613ca9565b60405180910390fd5b80611777610e4f565b6117819190613a06565b600a5410156117c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bc90613d15565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600d5482826118189190613a06565b1115611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613da7565b60405180910390fd5b81816118659190613a06565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118b23383612951565b5050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118ed612599565b73ffffffffffffffffffffffffffffffffffffffff1661190b6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611958906138f1565b60405180910390fd5b80600e8190555050565b60606004805461197a90613874565b80601f01602080910402602001604051908101604052809291908181526020018280546119a690613874565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b5050505050905090565b60126020528060005260406000206000915090505481565b600e5481565b600f60009054906101000a900460ff16611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613c3d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf90613ca9565b60405180910390fd5b80600e54611ae69190613dc7565b341015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613e6d565b60405180910390fd5b80611b31610e4f565b611b3b9190613a06565b6009541015611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7690613d15565b60405180910390fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600c548282611bd29190613a06565b1115611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613ed9565b60405180910390fd5b600082118015611c255750600b548211155b611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b90613f45565b60405180910390fd5b8181611c709190613a06565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cbd3383612951565b5050565b611cc9612591565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2d576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060086000611d3a612591565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611de7612591565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e2c919061310e565b60405180910390a35050565b60118054611e4590613874565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7190613874565b8015611ebe5780601f10611e9357610100808354040283529160200191611ebe565b820191906000526020600020905b815481529060010190602001808311611ea157829003601f168201915b505050505081565b611ed18484846125aa565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611f3357611efc84848484612a33565b611f32576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611f41612599565b73ffffffffffffffffffffffffffffffffffffffff16611f5f6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac906138f1565b60405180910390fd5b80600d8190555050565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b612000612599565b73ffffffffffffffffffffffffffffffffffffffff1661201e6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b906138f1565b60405180910390fd5b80600b8190555050565b606061208982612466565b6120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90613fb1565b60405180910390fd5b60001515600f60019054906101000a900460ff1615150361217557601180546120f090613874565b80601f016020809104026020016040519081016040528092919081815260200182805461211c90613874565b80156121695780601f1061213e57610100808354040283529160200191612169565b820191906000526020600020905b81548152906001019060200180831161214c57829003601f168201915b50505050509050612206565b60006010805461218490613874565b9050116121a05760405180602001604052806000815250612203565b60106121ab83612b83565b6040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506040516020016121f3939291906140a1565b6040516020818303038152906040525b90505b919050565b600b5481565b60095481565b61221f612599565b73ffffffffffffffffffffffffffffffffffffffff1661223d6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a906138f1565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f60009054906101000a900460ff1681565b61235f612599565b73ffffffffffffffffffffffffffffffffffffffff1661237d6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca906138f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243990614144565b60405180910390fd5b61244b8161296f565b50565b60136020528060005260406000206000915090505481565b6000816124716125a1565b11158015612480575060015482105b80156124be575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600080829050806124d46125a1565b1161255a576001548110156125595760006005600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612557575b6000810361254d576005600083600190039350838152602001908152602001600020549050612523565b809250505061258c565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600033905090565b600033905090565b60006001905090565b60006125b5826124c5565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461261c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661263d612591565b73ffffffffffffffffffffffffffffffffffffffff16148061266c575061266b85612666612591565b6122b0565b5b806126b1575061267a612591565b73ffffffffffffffffffffffffffffffffffffffff1661269984610b3e565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806126ea576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612750576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61275d8585856001612ce3565b6007600084815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055507c020000000000000000000000000000000000000000000000000000000060a042901b61285a86612ce9565b1717600560008581526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008316036128e257600060018401905060006005600083815260200190815260200160002054036128e05760015481146128df578260056000838152602001908152602001600020819055505b5b505b828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461294a8585856001612cf3565b5050505050565b61296b828260405180602001604052806000815250612cf9565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a59612591565b8786866040518563ffffffff1660e01b8152600401612a7b94939291906141b9565b6020604051808303816000875af1925050508015612ab757506040513d601f19601f82011682018060405250810190612ab4919061421a565b60015b612b30573d8060008114612ae7576040519150601f19603f3d011682016040523d82523d6000602084013e612aec565b606091505b506000815103612b28576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008203612bca576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cde565b600082905060005b60008214612bfc578080612be590613ba9565b915050600a82612bf59190614276565b9150612bd2565b60008167ffffffffffffffff811115612c1857612c17613396565b5b6040519080825280601f01601f191660200182016040528015612c4a5781602001600182028036833780820191505090505b5090505b60008514612cd757600182612c639190613940565b9150600a85612c7291906142a7565b6030612c7e9190613a06565b60f81b818381518110612c9457612c93613b7a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612cd09190614276565b9450612c4e565b8093505050505b919050565b50505050565b6000819050919050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d66576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612da0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612dad6000858386612ce3565b600160406001901b178302600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e1612e1260018514612fad565b901b60a042901b612e2286612ce9565b1717600560008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b14612f26575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ed66000878480600101955087612a33565b612f0c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210612e67578260015414612f2157600080fd5b612f91565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210612f27575b816001819055505050612fa76000858386612cf3565b50505050565b6000819050919050565b828054612fc390613874565b90600052602060002090601f016020900481019282612fe5576000855561302c565b82601f10612ffe57805160ff191683800117855561302c565b8280016001018555821561302c579182015b8281111561302b578251825591602001919060010190613010565b5b509050613039919061303d565b5090565b5b8082111561305657600081600090555060010161303e565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130a38161306e565b81146130ae57600080fd5b50565b6000813590506130c08161309a565b92915050565b6000602082840312156130dc576130db613064565b5b60006130ea848285016130b1565b91505092915050565b60008115159050919050565b613108816130f3565b82525050565b600060208201905061312360008301846130ff565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613163578082015181840152602081019050613148565b83811115613172576000848401525b50505050565b6000601f19601f8301169050919050565b600061319482613129565b61319e8185613134565b93506131ae818560208601613145565b6131b781613178565b840191505092915050565b600060208201905081810360008301526131dc8184613189565b905092915050565b6000819050919050565b6131f7816131e4565b811461320257600080fd5b50565b600081359050613214816131ee565b92915050565b6000602082840312156132305761322f613064565b5b600061323e84828501613205565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061327282613247565b9050919050565b61328281613267565b82525050565b600060208201905061329d6000830184613279565b92915050565b6132ac81613267565b81146132b757600080fd5b50565b6000813590506132c9816132a3565b92915050565b600080604083850312156132e6576132e5613064565b5b60006132f4858286016132ba565b925050602061330585828601613205565b9150509250929050565b613318816131e4565b82525050565b6000602082019050613333600083018461330f565b92915050565b60008060006060848603121561335257613351613064565b5b6000613360868287016132ba565b9350506020613371868287016132ba565b925050604061338286828701613205565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133ce82613178565b810181811067ffffffffffffffff821117156133ed576133ec613396565b5b80604052505050565b600061340061305a565b905061340c82826133c5565b919050565b600067ffffffffffffffff82111561342c5761342b613396565b5b61343582613178565b9050602081019050919050565b82818337600083830152505050565b600061346461345f84613411565b6133f6565b9050828152602081018484840111156134805761347f613391565b5b61348b848285613442565b509392505050565b600082601f8301126134a8576134a761338c565b5b81356134b8848260208601613451565b91505092915050565b6000602082840312156134d7576134d6613064565b5b600082013567ffffffffffffffff8111156134f5576134f4613069565b5b61350184828501613493565b91505092915050565b6000602082840312156135205761351f613064565b5b600061352e848285016132ba565b91505092915050565b600067ffffffffffffffff82111561355257613551613396565b5b602082029050602081019050919050565b600080fd5b600061357b61357684613537565b6133f6565b9050808382526020820190506020840283018581111561359e5761359d613563565b5b835b818110156135c757806135b388826132ba565b8452602084019350506020810190506135a0565b5050509392505050565b600082601f8301126135e6576135e561338c565b5b81356135f6848260208601613568565b91505092915050565b60006020828403121561361557613614613064565b5b600082013567ffffffffffffffff81111561363357613632613069565b5b61363f848285016135d1565b91505092915050565b613651816130f3565b811461365c57600080fd5b50565b60008135905061366e81613648565b92915050565b6000806040838503121561368b5761368a613064565b5b6000613699858286016132ba565b92505060206136aa8582860161365f565b9150509250929050565b600067ffffffffffffffff8211156136cf576136ce613396565b5b6136d882613178565b9050602081019050919050565b60006136f86136f3846136b4565b6133f6565b90508281526020810184848401111561371457613713613391565b5b61371f848285613442565b509392505050565b600082601f83011261373c5761373b61338c565b5b813561374c8482602086016136e5565b91505092915050565b6000806000806080858703121561376f5761376e613064565b5b600061377d878288016132ba565b945050602061378e878288016132ba565b935050604061379f87828801613205565b925050606085013567ffffffffffffffff8111156137c0576137bf613069565b5b6137cc87828801613727565b91505092959194509250565b6000602082840312156137ee576137ed613064565b5b60006137fc8482850161365f565b91505092915050565b6000806040838503121561381c5761381b613064565b5b600061382a858286016132ba565b925050602061383b858286016132ba565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388c57607f821691505b60208210810361389f5761389e613845565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138db602083613134565b91506138e6826138a5565b602082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394b826131e4565b9150613956836131e4565b92508282101561396957613968613911565b5b828203905092915050565b7f537570706c792063616e6e6f742066616c6c2062656c6f77206d696e7465642060008201527f746f6b656e732e00000000000000000000000000000000000000000000000000602082015250565b60006139d0602783613134565b91506139db82613974565b604082019050919050565b600060208201905081810360008301526139ff816139c3565b9050919050565b6000613a11826131e4565b9150613a1c836131e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5157613a50613911565b5b828201905092915050565b7f4d617820537570706c7920526561636865642e00000000000000000000000000600082015250565b6000613a92601383613134565b9150613a9d82613a5c565b602082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b600081905092915050565b50565b6000613ae3600083613ac8565b9150613aee82613ad3565b600082019050919050565b6000613b0482613ad6565b9150819050919050565b7f7472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b6000613b44601083613134565b9150613b4f82613b0e565b602082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bb4826131e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613be657613be5613911565b5b600182019050919050565b7f53616c65206973206e6f7420616374697665207965742e000000000000000000600082015250565b6000613c27601783613134565b9150613c3282613bf1565b602082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f57726f6e672043616c6c65720000000000000000000000000000000000000000600082015250565b6000613c93600c83613134565b9150613c9e82613c5d565b602082019050919050565b60006020820190508181036000830152613cc281613c86565b9050919050565b7f45786365656473206d617820737570706c792e00000000000000000000000000600082015250565b6000613cff601383613134565b9150613d0a82613cc9565b602082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b7f45786365656473206d61782066726565206d696e74732070657220616464726560008201527f7373210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d91602383613134565b9150613d9c82613d35565b604082019050919050565b60006020820190508181036000830152613dc081613d84565b9050919050565b6000613dd2826131e4565b9150613ddd836131e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1657613e15613911565b5b828202905092915050565b7f496e73756666696369656e742046756e64730000000000000000000000000000600082015250565b6000613e57601283613134565b9150613e6282613e21565b602082019050919050565b60006020820190508181036000830152613e8681613e4a565b9050919050565b7f45786365656473206d6178206d696e7473207065722061646472657373210000600082015250565b6000613ec3601e83613134565b9150613ece82613e8d565b602082019050919050565b60006020820190508181036000830152613ef281613eb6565b9050919050565b7f496e76616c6964206d696e7420616d6f756e742e000000000000000000000000600082015250565b6000613f2f601483613134565b9150613f3a82613ef9565b602082019050919050565b60006020820190508181036000830152613f5e81613f22565b9050919050565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b6000613f9b601583613134565b9150613fa682613f65565b602082019050919050565b60006020820190508181036000830152613fca81613f8e565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613ffe81613874565b6140088186613fd1565b94506001821660008114614023576001811461403457614067565b60ff19831686528186019350614067565b61403d85613fdc565b60005b8381101561405f57815481890152600182019150602081019050614040565b838801955050505b50505092915050565b600061407b82613129565b6140858185613fd1565b9350614095818560208601613145565b80840191505092915050565b60006140ad8286613ff1565b91506140b98285614070565b91506140c58284614070565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061412e602683613134565b9150614139826140d2565b604082019050919050565b6000602082019050818103600083015261415d81614121565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061418b82614164565b614195818561416f565b93506141a5818560208601613145565b6141ae81613178565b840191505092915050565b60006080820190506141ce6000830187613279565b6141db6020830186613279565b6141e8604083018561330f565b81810360608301526141fa8184614180565b905095945050505050565b6000815190506142148161309a565b92915050565b6000602082840312156142305761422f613064565b5b600061423e84828501614205565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614281826131e4565b915061428c836131e4565b92508261429c5761429b614247565b5b828204905092915050565b60006142b2826131e4565b91506142bd836131e4565b9250826142cd576142cc614247565b5b82820690509291505056fea26469706673582212206650effbf9b3ea0ce8350831eff0a0009510dfad2e909f834968fdc31c8411f264736f6c634300080d0033

Deployed Bytecode Sourcemap

17043:4238:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6374:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8748:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9940:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9536:398;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20207:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6039:130;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10565:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18323:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17314:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10691:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17147:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20549:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17490:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20459:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21105:175;;;:::i;:::-;;8614:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17639:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20119:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6564:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;780:87;;;;;;;;;;;;;:::i;:::-;;18068:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20045:68;;;;;;;;;;;;;:::i;:::-;;19829:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19230:423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17259:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;602:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19659:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8838:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17844:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17368:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18675:549;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10123:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17806:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10832:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19933:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17753:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19735:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20775:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17204:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17090:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20382:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10411:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17432:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;873:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17902:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6374:184;6459:4;6488:10;6473:25;;:11;:25;;;;:54;;;;6517:10;6502:25;;:11;:25;;;;6473:54;:83;;;;6546:10;6531:25;;:11;:25;;;;6473:83;6466:90;;6374:184;;;:::o;8748:84::-;8802:13;8825:5;8818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8748:84;:::o;9940:177::-;10008:7;10023:16;10031:7;10023;:16::i;:::-;10018:64;;10048:34;;;;;;;;;;;;;;10018:64;10091:15;:24;10107:7;10091:24;;;;;;;;;;;;;;;;;;;;;10084:31;;9940:177;;;:::o;9536:398::-;9599:13;9631:27;9650:7;9631:18;:27::i;:::-;9599:61;;9681:5;9675:11;;:2;:11;;;9671:48;;9695:24;;;;;;;;;;;;;;9671:48;9757:5;9734:28;;:19;:17;:19::i;:::-;:28;;;9730:139;;9778:44;9795:5;9802:19;:17;:19::i;:::-;9778:16;:44::i;:::-;9773:96;;9832:35;;;;;;;;;;;;;;9773:96;9730:139;9896:2;9869:15;:24;9885:7;9869:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9924:7;9920:2;9904:28;;9913:5;9904:28;;;;;;;;;;;;9598:336;9536:398;;:::o;20207:169::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20295:13:::1;:11;:13::i;:::-;20284:7;20272:9;;:19;;;;:::i;:::-;:36;;20264:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20367:7;20354:9;;:20;;;;;;;:::i;:::-;;;;;;;;20207:169:::0;:::o;6039:130::-;6092:7;6151:15;:13;:15::i;:::-;6136:12;;6120:13;;:28;:46;6113:53;;6039:130;:::o;10565:120::-;10655:28;10665:4;10671:2;10675:7;10655:9;:28::i;:::-;10565:120;;;:::o;18323:204::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18447:9:::1;;18439:4;18423:13;:11;:13::i;:::-;:20;;;;:::i;:::-;:33;;18415:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18495:24;18505:7;18514:4;18495:9;:24::i;:::-;18323:204:::0;;:::o;17314:47::-;;;;:::o;10691:135::-;10785:39;10802:4;10808:2;10812:7;10785:39;;;;;;;;;;;;:16;:39::i;:::-;10691:135;;;:::o;17147:50::-;;;;:::o;20549:122::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20651:18:::1;20631:17;:38;;;;;;;;;;;;:::i;:::-;;20549:122:::0;:::o;17490:50::-;;;;;;;;;;;;;:::o;20459:84::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20533:8:::1;20523:7;:18;;;;;;;;;;;;:::i;:::-;;20459:84:::0;:::o;21105:175::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21161:12:::1;17590:42;21179:26;;21213:21;21179:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21160:80;;;21250:7;21242:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21159:121;21105:175::o:0;8614:128::-;8678:7;8711:27;8730:7;8711:18;:27::i;:::-;8688:52;;8614:128;;;:::o;17639:107::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20119:82::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20190:9:::1;20178;:21;;;;20119:82:::0;:::o;6564:199::-;6628:7;6659:1;6642:19;;:5;:19;;;6638:60;;6670:28;;;;;;;;;;;;;;6638:60;4859:13;6707:18;:25;6726:5;6707:25;;;;;;;;;;;;;;;;:54;6700:61;;6564:199;;;:::o;780:87::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;835:30:::1;862:1;835:18;:30::i;:::-;780:87::o:0;18068:250::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18184:9:::1;;18165:8;:15;18149:13;:11;:13::i;:::-;:31;;;;:::i;:::-;:44;;18141:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18232:6;18228:80;18248:8;:15;18244:1;:19;18228:80;;;18283:25;18293:8;18302:1;18293:11;;;;;;;;:::i;:::-;;;;;;;;18306:1;18283:9;:25::i;:::-;18265:3;;;;;:::i;:::-;;;;18228:80;;;;18068:250:::0;:::o;20045:68::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20099:12:::1;;;;;;;;;;;20098:13;20083:12;;:28;;;;;;;;;;;;;;;;;;20045:68::o:0;19829:98::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19918:7:::1;19892:23;:33;;;;19829:98:::0;:::o;19230:423::-;18574:12;;;;;;;;;;;18566:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18637:10;18624:23;;:9;:23;;;18616:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19345:9:::1;19329:13;:11;:13::i;:::-;:25;;;;:::i;:::-;19312:13;;:42;;19304:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19380:25;19408:16;:28;19425:10;19408:28;;;;;;;;;;;;;;;;19380:56;;19488:27;;19475:9;19455:17;:29;;;;:::i;:::-;:60;;19447:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;19608:9;19588:17;:29;;;;:::i;:::-;19557:16;:28;19574:10;19557:28;;;;;;;;;;;;;;;:60;;;;19619:32;19629:10;19641:9;19619;:32::i;:::-;19293:360;19230:423:::0;:::o;17259:48::-;;;;:::o;602:71::-;648:7;665:6;;;;;;;;;;;658:13;;602:71;:::o;19659:70::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19721:6:::1;19713:5;:14;;;;19659:70:::0;:::o;8838:88::-;8894:13;8917:7;8910:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8838:88;:::o;17844:51::-;;;;;;;;;;;;;;;;;:::o;17368:57::-;;;;:::o;18675:549::-;18574:12;;;;;;;;;;;18566:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18637:10;18624:23;;:9;:23;;;18616:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18773:9:::1;18765:5;;:17;;;;:::i;:::-;18752:9;:30;;18743:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18853:9;18837:13;:11;:13::i;:::-;:25;;;;:::i;:::-;18824:9;;:38;;18816:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18888:21;18912:12;:24;18925:10;18912:24;;;;;;;;;;;;;;;;18888:48;;18984:23;;18971:9;18955:13;:25;;;;:::i;:::-;:52;;18947:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19073:1;19061:9;:13;:48;;;;;19091:18;;19078:9;:31;;19061:48;19053:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;19179:9;19163:13;:25;;;;:::i;:::-;19136:12;:24;19149:10;19136:24;;;;;;;;;;;;;;;:52;;;;19190:32;19200:10;19212:9;19190;:32::i;:::-;18742:482;18675:549:::0;:::o;10123:282::-;10234:19;:17;:19::i;:::-;10222:31;;:8;:31;;;10218:61;;10262:17;;;;;;;;;;;;;;10218:61;10333:8;10281:18;:39;10300:19;:17;:19::i;:::-;10281:39;;;;;;;;;;;;;;;:49;10321:8;10281:49;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;10384:8;10348:55;;10363:19;:17;:19::i;:::-;10348:55;;;10394:8;10348:55;;;;;;:::i;:::-;;;;;;;;10123:282;;:::o;17806:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10832:301::-;10946:28;10956:4;10962:2;10966:7;10946:9;:28::i;:::-;11007:1;10989:2;:14;;;:19;10985:147;;11024:56;11055:4;11061:2;11065:7;11074:5;11024:30;:56::i;:::-;11019:113;;11090:40;;;;;;;;;;;;;;11019:113;10985:147;10832:301;;;;:::o;19933:106::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20030:7:::1;20000:27;:37;;;;19933:106:::0;:::o;17753:46::-;;;;;;;;;;;;;;;;;;;:::o;19735:88::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19814:7:::1;19793:18;:28;;;;19735:88:::0;:::o;20775:324::-;20841:13;20875:17;20883:8;20875:7;:17::i;:::-;20867:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;20936:5;20924:17;;:8;;;;;;;;;;;:17;;;20920:50;;20951:17;20944:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20920:50;21012:1;20994:7;20988:21;;;;;:::i;:::-;;;:25;:109;;;;;;;;;;;;;;;;;21040:7;21049:26;21066:8;21049:16;:26::i;:::-;21077:13;;;;;;;;;;;;;;;;;21023:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20988:109;20981:116;;20775:324;;;;:::o;17204:48::-;;;;:::o;17090:50::-;;;;:::o;20382:71::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20445:6:::1;20434:8;;:17;;;;;;;;;;;;;;;;;;20382:71:::0;:::o;10411:148::-;10508:4;10522:18;:25;10541:5;10522:25;;;;;;;;;;;;;;;:35;10548:8;10522:35;;;;;;;;;;;;;;;;;;;;;;;;;10515:42;;10411:148;;;;:::o;17432:51::-;;;;;;;;;;;;;:::o;873:176::-;720:12;:10;:12::i;:::-;709:23;;:7;:5;:7::i;:::-;:23;;;701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;972:1:::1;952:22;;:8;:22;;::::0;944:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1019:28;1038:8;1019:18;:28::i;:::-;873:176:::0;:::o;17902:47::-;;;;;;;;;;;;;;;;;:::o;11139:217::-;11196:4;11242:7;11223:15;:13;:15::i;:::-;:26;;:66;;;;;11276:13;;11266:7;:23;11223:66;:131;;;;;11353:1;5215:8;11306:17;:26;11324:7;11306:26;;;;;;;;;;;;:43;:48;11223:131;11203:151;;11139:217;;;:::o;7494:392::-;7561:7;7571:12;7586:7;7571:22;;7639:4;7620:15;:13;:15::i;:::-;:23;7616:228;;7666:13;;7659:4;:20;7655:189;;;7682:14;7699:17;:23;7717:4;7699:23;;;;;;;;;;;;7682:40;;7765:1;5215:8;7738:6;:23;:28;7734:109;;7769:57;7786:1;7776:6;:11;7769:57;;7799:17;:25;7817:6;;;;;;;7799:25;;;;;;;;;;;;7790:34;;7769:57;;;7834:6;7827:13;;;;;;7734:109;7681:163;7655:189;7616:228;7853:31;;;;;;;;;;;;;;7494:392;;;;:::o;16479:89::-;16539:7;16556:10;16549:17;;16479:89;:::o;76:82::-;129:7;146:10;139:17;;76:82;:::o;5872:76::-;5928:7;5945:1;5938:8;;5872:76;:::o;13375:1129::-;13446:27;13476;13495:7;13476:18;:27::i;:::-;13446:57;;13559:4;13518:45;;13534:19;13518:45;;;13514:86;;13572:28;;;;;;;;;;;;;;13514:86;13602:22;13651:4;13628:27;;:19;:17;:19::i;:::-;:27;;;:74;;;;13659:43;13676:4;13682:19;:17;:19::i;:::-;13659:16;:43::i;:::-;13628:74;:121;;;;13730:19;:17;:19::i;:::-;13706:43;;:20;13718:7;13706:11;:20::i;:::-;:43;;;13628:121;13602:148;;13766:17;13761:66;;13792:35;;;;;;;;;;;;;;13761:66;13856:1;13842:16;;:2;:16;;;13838:52;;13867:23;;;;;;;;;;;;;;13838:52;13892:43;13914:4;13920:2;13924:7;13933:1;13892:21;:43::i;:::-;13944:15;:24;13960:7;13944:24;;;;;;;;;;;;13937:31;;;;;;;;;;;13993:18;:24;14012:4;13993:24;;;;;;;;;;;;;;;;13991:26;;;;;;;;;;;;14021:18;:22;14040:2;14021:22;;;;;;;;;;;;;;;;14019:24;;;;;;;;;;;5343:8;5163:3;14099:15;:41;;14074:21;14092:2;14074:17;:21::i;:::-;:67;:94;14045:17;:26;14063:7;14045:26;;;;;;;;;;;:123;;;;14233:1;5343:8;14183:19;:46;:51;14179:245;;14237:19;14269:1;14259:7;:11;14237:33;;14319:1;14285:17;:30;14303:11;14285:30;;;;;;;;;;;;:35;14281:142;;14352:13;;14337:11;:28;14333:89;;14401:19;14368:17;:30;14386:11;14368:30;;;;;;;;;;;:52;;;;14333:89;14281:142;14236:188;14179:245;14450:7;14446:2;14431:27;;14440:4;14431:27;;;;;;;;;;;;14460:42;14481:4;14487:2;14491:7;14500:1;14460:20;:42::i;:::-;13445:1059;;13375:1129;;;:::o;11362:88::-;11421:27;11431:2;11435:8;11421:27;;;;;;;;;;;;:9;:27::i;:::-;11362:88;;:::o;1055:157::-;1119:16;1138:6;;;;;;;;;;;1119:25;;1155:8;1146:6;;:17;;;;;;;;;;;;;;;;;;1201:8;1170:40;;1191:8;1170:40;;;;;;;;;;;;1118:94;1055:157;:::o;15729:501::-;15849:4;15895:2;15870:45;;;15916:19;:17;:19::i;:::-;15937:4;15943:7;15952:5;15870:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15866:363;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16118:1;16101:6;:13;:18;16097:131;;16129:40;;;;;;;;;;;;;;16097:131;16218:6;16212:13;16203:6;16199:2;16195:15;16188:38;15866:363;16001:54;;;15991:64;;;:6;:64;;;;15984:71;;;15729:501;;;;;;:::o;1421:370::-;1477:13;1516:1;1507:5;:10;1503:29;;1520:10;;;;;;;;;;;;;;;;;;;;;1503:29;1533:12;1548:5;1533:20;;1555:14;1571:41;1586:1;1578:4;:9;1571:41;;1590:8;;;;;:::i;:::-;;;;1608:2;1600:10;;;;;:::i;:::-;;;1571:41;;;1613:19;1645:6;1635:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:39;;1663:104;1679:1;1670:5;:10;1663:104;;1693:1;1683:11;;;;;:::i;:::-;;;1747:2;1739:5;:10;;;;:::i;:::-;1726:2;:24;;;;:::i;:::-;1713:39;;1696:6;1703;1696:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1763:2;1754:11;;;;;:::i;:::-;;;1663:104;;;1782:6;1768:21;;;;;1421:370;;;;:::o;16236:116::-;;;;;:::o;9314:108::-;9378:14;9415:5;9405:15;;9314:108;;;:::o;16358:115::-;;;;;:::o;11456:1101::-;11535:20;11558:13;;11535:36;;11600:1;11586:16;;:2;:16;;;11582:48;;11611:19;;;;;;;;;;;;;;11582:48;11657:1;11645:8;:13;11641:44;;11667:18;;;;;;;;;;;;;;11641:44;11687:61;11717:1;11721:2;11725:12;11739:8;11687:21;:61::i;:::-;11829:1;4927:2;11800:1;:25;;11799:31;11787:8;:44;11761:18;:22;11780:2;11761:22;;;;;;;;;;;;;;;;:70;;;;;;;;;;;5281:3;11938:29;11965:1;11953:8;:13;11938:14;:29::i;:::-;:56;;5163:3;11892:15;:41;;11867:21;11885:2;11867:17;:21::i;:::-;:67;:128;11833:17;:31;11851:12;11833:31;;;;;;;;;;;:162;;;;11997:20;12020:12;11997:35;;12034:11;12063:8;12048:12;:23;12034:37;;12104:1;12086:2;:14;;;:19;12082:381;;12108:213;12142:12;12138:2;12117:38;;12134:1;12117:38;;;;;;;;;;;;12171:69;12210:1;12214:2;12218:14;;;;;;12234:5;12171:30;:69::i;:::-;12166:126;;12250:40;;;;;;;;;;;;;;12166:126;12316:3;12301:12;:18;12108:213;;12352:12;12335:13;;:29;12331:43;;12366:8;;;12331:43;12082:381;;;12383:79;12417:14;;;;;;12413:2;12392:40;;12409:1;12392:40;;;;;;;;;;;;12457:3;12442:12;:18;12383:79;;12082:381;12480:12;12464:13;:28;;;;11750:744;;12495:60;12524:1;12528:2;12532:12;12546:8;12495:20;:60::i;:::-;11534:1023;11456:1101;;;:::o;9428:102::-;9486:14;9523:5;9513:15;;9428:102;;;:::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:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:117::-;6024:1;6021;6014:12;6038:117;6147:1;6144;6137:12;6161:180;6209:77;6206:1;6199:88;6306:4;6303:1;6296:15;6330:4;6327:1;6320:15;6347:281;6430:27;6452:4;6430:27;:::i;:::-;6422:6;6418:40;6560:6;6548:10;6545:22;6524:18;6512:10;6509:34;6506:62;6503:88;;;6571:18;;:::i;:::-;6503:88;6611:10;6607:2;6600:22;6390:238;6347:281;;:::o;6634:129::-;6668:6;6695:20;;:::i;:::-;6685:30;;6724:33;6752:4;6744:6;6724:33;:::i;:::-;6634:129;;;:::o;6769:308::-;6831:4;6921:18;6913:6;6910:30;6907:56;;;6943:18;;:::i;:::-;6907:56;6981:29;7003:6;6981:29;:::i;:::-;6973:37;;7065:4;7059;7055:15;7047:23;;6769:308;;;:::o;7083:154::-;7167:6;7162:3;7157;7144:30;7229:1;7220:6;7215:3;7211:16;7204:27;7083:154;;;:::o;7243:412::-;7321:5;7346:66;7362:49;7404:6;7362:49;:::i;:::-;7346:66;:::i;:::-;7337:75;;7435:6;7428:5;7421:21;7473:4;7466:5;7462:16;7511:3;7502:6;7497:3;7493:16;7490:25;7487:112;;;7518:79;;:::i;:::-;7487:112;7608:41;7642:6;7637:3;7632;7608:41;:::i;:::-;7327:328;7243:412;;;;;:::o;7675:340::-;7731:5;7780:3;7773:4;7765:6;7761:17;7757:27;7747:122;;7788:79;;:::i;:::-;7747:122;7905:6;7892:20;7930:79;8005:3;7997:6;7990:4;7982:6;7978:17;7930:79;:::i;:::-;7921:88;;7737:278;7675:340;;;;:::o;8021:509::-;8090:6;8139:2;8127:9;8118:7;8114:23;8110:32;8107:119;;;8145:79;;:::i;:::-;8107:119;8293:1;8282:9;8278:17;8265:31;8323:18;8315:6;8312:30;8309:117;;;8345:79;;:::i;:::-;8309:117;8450:63;8505:7;8496:6;8485:9;8481:22;8450:63;:::i;:::-;8440:73;;8236:287;8021:509;;;;:::o;8536:329::-;8595:6;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8536:329;;;;:::o;8871:311::-;8948:4;9038:18;9030:6;9027:30;9024:56;;;9060:18;;:::i;:::-;9024:56;9110:4;9102:6;9098:17;9090:25;;9170:4;9164;9160:15;9152:23;;8871:311;;;:::o;9188:117::-;9297:1;9294;9287:12;9328:710;9424:5;9449:81;9465:64;9522:6;9465:64;:::i;:::-;9449:81;:::i;:::-;9440:90;;9550:5;9579:6;9572:5;9565:21;9613:4;9606:5;9602:16;9595:23;;9666:4;9658:6;9654:17;9646:6;9642:30;9695:3;9687:6;9684:15;9681:122;;;9714:79;;:::i;:::-;9681:122;9829:6;9812:220;9846:6;9841:3;9838:15;9812:220;;;9921:3;9950:37;9983:3;9971:10;9950:37;:::i;:::-;9945:3;9938:50;10017:4;10012:3;10008:14;10001:21;;9888:144;9872:4;9867:3;9863:14;9856:21;;9812:220;;;9816:21;9430:608;;9328:710;;;;;:::o;10061:370::-;10132:5;10181:3;10174:4;10166:6;10162:17;10158:27;10148:122;;10189:79;;:::i;:::-;10148:122;10306:6;10293:20;10331:94;10421:3;10413:6;10406:4;10398:6;10394:17;10331:94;:::i;:::-;10322:103;;10138:293;10061:370;;;;:::o;10437:539::-;10521:6;10570:2;10558:9;10549:7;10545:23;10541:32;10538:119;;;10576:79;;:::i;:::-;10538:119;10724:1;10713:9;10709:17;10696:31;10754:18;10746:6;10743:30;10740:117;;;10776:79;;:::i;:::-;10740:117;10881:78;10951:7;10942:6;10931:9;10927:22;10881:78;:::i;:::-;10871:88;;10667:302;10437:539;;;;:::o;10982:116::-;11052:21;11067:5;11052:21;:::i;:::-;11045:5;11042:32;11032:60;;11088:1;11085;11078:12;11032:60;10982:116;:::o;11104:133::-;11147:5;11185:6;11172:20;11163:29;;11201:30;11225:5;11201:30;:::i;:::-;11104:133;;;;:::o;11243:468::-;11308:6;11316;11365:2;11353:9;11344:7;11340:23;11336:32;11333:119;;;11371:79;;:::i;:::-;11333:119;11491:1;11516:53;11561:7;11552:6;11541:9;11537:22;11516:53;:::i;:::-;11506:63;;11462:117;11618:2;11644:50;11686:7;11677:6;11666:9;11662:22;11644:50;:::i;:::-;11634:60;;11589:115;11243:468;;;;;:::o;11717:307::-;11778:4;11868:18;11860:6;11857:30;11854:56;;;11890:18;;:::i;:::-;11854:56;11928:29;11950:6;11928:29;:::i;:::-;11920:37;;12012:4;12006;12002:15;11994:23;;11717:307;;;:::o;12030:410::-;12107:5;12132:65;12148:48;12189:6;12148:48;:::i;:::-;12132:65;:::i;:::-;12123:74;;12220:6;12213:5;12206:21;12258:4;12251:5;12247:16;12296:3;12287:6;12282:3;12278:16;12275:25;12272:112;;;12303:79;;:::i;:::-;12272:112;12393:41;12427:6;12422:3;12417;12393:41;:::i;:::-;12113:327;12030:410;;;;;:::o;12459:338::-;12514:5;12563:3;12556:4;12548:6;12544:17;12540:27;12530:122;;12571:79;;:::i;:::-;12530:122;12688:6;12675:20;12713:78;12787:3;12779:6;12772:4;12764:6;12760:17;12713:78;:::i;:::-;12704:87;;12520:277;12459:338;;;;:::o;12803:943::-;12898:6;12906;12914;12922;12971:3;12959:9;12950:7;12946:23;12942:33;12939:120;;;12978:79;;:::i;:::-;12939:120;13098:1;13123:53;13168:7;13159:6;13148:9;13144:22;13123:53;:::i;:::-;13113:63;;13069:117;13225:2;13251:53;13296:7;13287:6;13276:9;13272:22;13251:53;:::i;:::-;13241:63;;13196:118;13353:2;13379:53;13424:7;13415:6;13404:9;13400:22;13379:53;:::i;:::-;13369:63;;13324:118;13509:2;13498:9;13494:18;13481:32;13540:18;13532:6;13529:30;13526:117;;;13562:79;;:::i;:::-;13526:117;13667:62;13721:7;13712:6;13701:9;13697:22;13667:62;:::i;:::-;13657:72;;13452:287;12803:943;;;;;;;:::o;13752:323::-;13808:6;13857:2;13845:9;13836:7;13832:23;13828:32;13825:119;;;13863:79;;:::i;:::-;13825:119;13983:1;14008:50;14050:7;14041:6;14030:9;14026:22;14008:50;:::i;:::-;13998:60;;13954:114;13752:323;;;;:::o;14081:474::-;14149:6;14157;14206:2;14194:9;14185:7;14181:23;14177:32;14174:119;;;14212:79;;:::i;:::-;14174:119;14332:1;14357:53;14402:7;14393:6;14382:9;14378:22;14357:53;:::i;:::-;14347:63;;14303:117;14459:2;14485:53;14530:7;14521:6;14510:9;14506:22;14485:53;:::i;:::-;14475:63;;14430:118;14081:474;;;;;:::o;14561:180::-;14609:77;14606:1;14599:88;14706:4;14703:1;14696:15;14730:4;14727:1;14720:15;14747:320;14791:6;14828:1;14822:4;14818:12;14808:22;;14875:1;14869:4;14865:12;14896:18;14886:81;;14952:4;14944:6;14940:17;14930:27;;14886:81;15014:2;15006:6;15003:14;14983:18;14980:38;14977:84;;15033:18;;:::i;:::-;14977:84;14798:269;14747:320;;;:::o;15073:182::-;15213:34;15209:1;15201:6;15197:14;15190:58;15073:182;:::o;15261:366::-;15403:3;15424:67;15488:2;15483:3;15424:67;:::i;:::-;15417:74;;15500:93;15589:3;15500:93;:::i;:::-;15618:2;15613:3;15609:12;15602:19;;15261:366;;;:::o;15633:419::-;15799:4;15837:2;15826:9;15822:18;15814:26;;15886:9;15880:4;15876:20;15872:1;15861:9;15857:17;15850:47;15914:131;16040:4;15914:131;:::i;:::-;15906:139;;15633:419;;;:::o;16058:180::-;16106:77;16103:1;16096:88;16203:4;16200:1;16193:15;16227:4;16224:1;16217:15;16244:191;16284:4;16304:20;16322:1;16304:20;:::i;:::-;16299:25;;16338:20;16356:1;16338:20;:::i;:::-;16333:25;;16377:1;16374;16371:8;16368:34;;;16382:18;;:::i;:::-;16368:34;16427:1;16424;16420:9;16412:17;;16244:191;;;;:::o;16441:226::-;16581:34;16577:1;16569:6;16565:14;16558:58;16650:9;16645:2;16637:6;16633:15;16626:34;16441:226;:::o;16673:366::-;16815:3;16836:67;16900:2;16895:3;16836:67;:::i;:::-;16829:74;;16912:93;17001:3;16912:93;:::i;:::-;17030:2;17025:3;17021:12;17014:19;;16673:366;;;:::o;17045:419::-;17211:4;17249:2;17238:9;17234:18;17226:26;;17298:9;17292:4;17288:20;17284:1;17273:9;17269:17;17262:47;17326:131;17452:4;17326:131;:::i;:::-;17318:139;;17045:419;;;:::o;17470:305::-;17510:3;17529:20;17547:1;17529:20;:::i;:::-;17524:25;;17563:20;17581:1;17563:20;:::i;:::-;17558:25;;17717:1;17649:66;17645:74;17642:1;17639:81;17636:107;;;17723:18;;:::i;:::-;17636:107;17767:1;17764;17760:9;17753:16;;17470:305;;;;:::o;17781:169::-;17921:21;17917:1;17909:6;17905:14;17898:45;17781:169;:::o;17956:366::-;18098:3;18119:67;18183:2;18178:3;18119:67;:::i;:::-;18112:74;;18195:93;18284:3;18195:93;:::i;:::-;18313:2;18308:3;18304:12;18297:19;;17956:366;;;:::o;18328:419::-;18494:4;18532:2;18521:9;18517:18;18509:26;;18581:9;18575:4;18571:20;18567:1;18556:9;18552:17;18545:47;18609:131;18735:4;18609:131;:::i;:::-;18601:139;;18328:419;;;:::o;18753:147::-;18854:11;18891:3;18876:18;;18753:147;;;;:::o;18906:114::-;;:::o;19026:398::-;19185:3;19206:83;19287:1;19282:3;19206:83;:::i;:::-;19199:90;;19298:93;19387:3;19298:93;:::i;:::-;19416:1;19411:3;19407:11;19400:18;;19026:398;;;:::o;19430:379::-;19614:3;19636:147;19779:3;19636:147;:::i;:::-;19629:154;;19800:3;19793:10;;19430:379;;;:::o;19815:166::-;19955:18;19951:1;19943:6;19939:14;19932:42;19815:166;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:180::-;20832:77;20829:1;20822:88;20929:4;20926:1;20919:15;20953:4;20950:1;20943:15;20970:233;21009:3;21032:24;21050:5;21032:24;:::i;:::-;21023:33;;21078:66;21071:5;21068:77;21065:103;;21148:18;;:::i;:::-;21065:103;21195:1;21188:5;21184:13;21177:20;;20970:233;;;:::o;21209:173::-;21349:25;21345:1;21337:6;21333:14;21326:49;21209:173;:::o;21388:366::-;21530:3;21551:67;21615:2;21610:3;21551:67;:::i;:::-;21544:74;;21627:93;21716:3;21627:93;:::i;:::-;21745:2;21740:3;21736:12;21729:19;;21388:366;;;:::o;21760:419::-;21926:4;21964:2;21953:9;21949:18;21941:26;;22013:9;22007:4;22003:20;21999:1;21988:9;21984:17;21977:47;22041:131;22167:4;22041:131;:::i;:::-;22033:139;;21760:419;;;:::o;22185:162::-;22325:14;22321:1;22313:6;22309:14;22302:38;22185:162;:::o;22353:366::-;22495:3;22516:67;22580:2;22575:3;22516:67;:::i;:::-;22509:74;;22592:93;22681:3;22592:93;:::i;:::-;22710:2;22705:3;22701:12;22694:19;;22353:366;;;:::o;22725:419::-;22891:4;22929:2;22918:9;22914:18;22906:26;;22978:9;22972:4;22968:20;22964:1;22953:9;22949:17;22942:47;23006:131;23132:4;23006:131;:::i;:::-;22998:139;;22725:419;;;:::o;23150:169::-;23290:21;23286:1;23278:6;23274:14;23267:45;23150:169;:::o;23325:366::-;23467:3;23488:67;23552:2;23547:3;23488:67;:::i;:::-;23481:74;;23564:93;23653:3;23564:93;:::i;:::-;23682:2;23677:3;23673:12;23666:19;;23325:366;;;:::o;23697:419::-;23863:4;23901:2;23890:9;23886:18;23878:26;;23950:9;23944:4;23940:20;23936:1;23925:9;23921:17;23914:47;23978:131;24104:4;23978:131;:::i;:::-;23970:139;;23697:419;;;:::o;24122:222::-;24262:34;24258:1;24250:6;24246:14;24239:58;24331:5;24326:2;24318:6;24314:15;24307:30;24122:222;:::o;24350:366::-;24492:3;24513:67;24577:2;24572:3;24513:67;:::i;:::-;24506:74;;24589:93;24678:3;24589:93;:::i;:::-;24707:2;24702:3;24698:12;24691:19;;24350:366;;;:::o;24722:419::-;24888:4;24926:2;24915:9;24911:18;24903:26;;24975:9;24969:4;24965:20;24961:1;24950:9;24946:17;24939:47;25003:131;25129:4;25003:131;:::i;:::-;24995:139;;24722:419;;;:::o;25147:348::-;25187:7;25210:20;25228:1;25210:20;:::i;:::-;25205:25;;25244:20;25262:1;25244:20;:::i;:::-;25239:25;;25432:1;25364:66;25360:74;25357:1;25354:81;25349:1;25342:9;25335:17;25331:105;25328:131;;;25439:18;;:::i;:::-;25328:131;25487:1;25484;25480:9;25469:20;;25147:348;;;;:::o;25501:168::-;25641:20;25637:1;25629:6;25625:14;25618:44;25501:168;:::o;25675:366::-;25817:3;25838:67;25902:2;25897:3;25838:67;:::i;:::-;25831:74;;25914:93;26003:3;25914:93;:::i;:::-;26032:2;26027:3;26023:12;26016:19;;25675:366;;;:::o;26047:419::-;26213:4;26251:2;26240:9;26236:18;26228:26;;26300:9;26294:4;26290:20;26286:1;26275:9;26271:17;26264:47;26328:131;26454:4;26328:131;:::i;:::-;26320:139;;26047:419;;;:::o;26472:180::-;26612:32;26608:1;26600:6;26596:14;26589:56;26472:180;:::o;26658:366::-;26800:3;26821:67;26885:2;26880:3;26821:67;:::i;:::-;26814:74;;26897:93;26986:3;26897:93;:::i;:::-;27015:2;27010:3;27006:12;26999:19;;26658:366;;;:::o;27030:419::-;27196:4;27234:2;27223:9;27219:18;27211:26;;27283:9;27277:4;27273:20;27269:1;27258:9;27254:17;27247:47;27311:131;27437:4;27311:131;:::i;:::-;27303:139;;27030:419;;;:::o;27455:170::-;27595:22;27591:1;27583:6;27579:14;27572:46;27455:170;:::o;27631:366::-;27773:3;27794:67;27858:2;27853:3;27794:67;:::i;:::-;27787:74;;27870:93;27959:3;27870:93;:::i;:::-;27988:2;27983:3;27979:12;27972:19;;27631:366;;;:::o;28003:419::-;28169:4;28207:2;28196:9;28192:18;28184:26;;28256:9;28250:4;28246:20;28242:1;28231:9;28227:17;28220:47;28284:131;28410:4;28284:131;:::i;:::-;28276:139;;28003:419;;;:::o;28428:171::-;28568:23;28564:1;28556:6;28552:14;28545:47;28428:171;:::o;28605:366::-;28747:3;28768:67;28832:2;28827:3;28768:67;:::i;:::-;28761:74;;28844:93;28933:3;28844:93;:::i;:::-;28962:2;28957:3;28953:12;28946:19;;28605:366;;;:::o;28977:419::-;29143:4;29181:2;29170:9;29166:18;29158:26;;29230:9;29224:4;29220:20;29216:1;29205:9;29201:17;29194:47;29258:131;29384:4;29258:131;:::i;:::-;29250:139;;28977:419;;;:::o;29402:148::-;29504:11;29541:3;29526:18;;29402:148;;;;:::o;29556:141::-;29605:4;29628:3;29620:11;;29651:3;29648:1;29641:14;29685:4;29682:1;29672:18;29664:26;;29556:141;;;:::o;29727:845::-;29830:3;29867:5;29861:12;29896:36;29922:9;29896:36;:::i;:::-;29948:89;30030:6;30025:3;29948:89;:::i;:::-;29941:96;;30068:1;30057:9;30053:17;30084:1;30079:137;;;;30230:1;30225:341;;;;30046:520;;30079:137;30163:4;30159:9;30148;30144:25;30139:3;30132:38;30199:6;30194:3;30190:16;30183:23;;30079:137;;30225:341;30292:38;30324:5;30292:38;:::i;:::-;30352:1;30366:154;30380:6;30377:1;30374:13;30366:154;;;30454:7;30448:14;30444:1;30439:3;30435:11;30428:35;30504:1;30495:7;30491:15;30480:26;;30402:4;30399:1;30395:12;30390:17;;30366:154;;;30549:6;30544:3;30540:16;30533:23;;30232:334;;30046:520;;29834:738;;29727:845;;;;:::o;30578:377::-;30684:3;30712:39;30745:5;30712:39;:::i;:::-;30767:89;30849:6;30844:3;30767:89;:::i;:::-;30760:96;;30865:52;30910:6;30905:3;30898:4;30891:5;30887:16;30865:52;:::i;:::-;30942:6;30937:3;30933:16;30926:23;;30688:267;30578:377;;;;:::o;30961:589::-;31186:3;31208:92;31296:3;31287:6;31208:92;:::i;:::-;31201:99;;31317:95;31408:3;31399:6;31317:95;:::i;:::-;31310:102;;31429:95;31520:3;31511:6;31429:95;:::i;:::-;31422:102;;31541:3;31534:10;;30961:589;;;;;;:::o;31556:225::-;31696:34;31692:1;31684:6;31680:14;31673:58;31765:8;31760:2;31752:6;31748:15;31741:33;31556:225;:::o;31787:366::-;31929:3;31950:67;32014:2;32009:3;31950:67;:::i;:::-;31943:74;;32026:93;32115:3;32026:93;:::i;:::-;32144:2;32139:3;32135:12;32128:19;;31787:366;;;:::o;32159:419::-;32325:4;32363:2;32352:9;32348:18;32340:26;;32412:9;32406:4;32402:20;32398:1;32387:9;32383:17;32376:47;32440:131;32566:4;32440:131;:::i;:::-;32432:139;;32159:419;;;:::o;32584:98::-;32635:6;32669:5;32663:12;32653:22;;32584:98;;;:::o;32688:168::-;32771:11;32805:6;32800:3;32793:19;32845:4;32840:3;32836:14;32821:29;;32688:168;;;;:::o;32862:360::-;32948:3;32976:38;33008:5;32976:38;:::i;:::-;33030:70;33093:6;33088:3;33030:70;:::i;:::-;33023:77;;33109:52;33154:6;33149:3;33142:4;33135:5;33131:16;33109:52;:::i;:::-;33186:29;33208:6;33186:29;:::i;:::-;33181:3;33177:39;33170:46;;32952:270;32862:360;;;;:::o;33228:640::-;33423:4;33461:3;33450:9;33446:19;33438:27;;33475:71;33543:1;33532:9;33528:17;33519:6;33475:71;:::i;:::-;33556:72;33624:2;33613:9;33609:18;33600:6;33556:72;:::i;:::-;33638;33706:2;33695:9;33691:18;33682:6;33638:72;:::i;:::-;33757:9;33751:4;33747:20;33742:2;33731:9;33727:18;33720:48;33785:76;33856:4;33847:6;33785:76;:::i;:::-;33777:84;;33228:640;;;;;;;:::o;33874:141::-;33930:5;33961:6;33955:13;33946:22;;33977:32;34003:5;33977:32;:::i;:::-;33874:141;;;;:::o;34021:349::-;34090:6;34139:2;34127:9;34118:7;34114:23;34110:32;34107:119;;;34145:79;;:::i;:::-;34107:119;34265:1;34290:63;34345:7;34336:6;34325:9;34321:22;34290:63;:::i;:::-;34280:73;;34236:127;34021:349;;;;:::o;34376:180::-;34424:77;34421:1;34414:88;34521:4;34518:1;34511:15;34545:4;34542:1;34535:15;34562:185;34602:1;34619:20;34637:1;34619:20;:::i;:::-;34614:25;;34653:20;34671:1;34653:20;:::i;:::-;34648:25;;34692:1;34682:35;;34697:18;;:::i;:::-;34682:35;34739:1;34736;34732:9;34727:14;;34562:185;;;;:::o;34753:176::-;34785:1;34802:20;34820:1;34802:20;:::i;:::-;34797:25;;34836:20;34854:1;34836:20;:::i;:::-;34831:25;;34875:1;34865:35;;34880:18;;:::i;:::-;34865:35;34921:1;34918;34914:9;34909:14;;34753:176;;;;:::o

Swarm Source

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