ETH Price: $3,297.13 (+1.57%)
Gas: 2 Gwei

Token

 

Overview

Max Total Supply

6

Holders

1

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
boringcrypto.eth
0x9e6e344f94305d36ea59912b0911fe2c9149ed3e
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:
UnRealArt

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]
// License-Identifier: MIT
pragma solidity ^0.8.0;

// solhint-disable no-inline-assembly

library BoringAddress {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendNative(address to, uint256 amount) internal {
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, ) = to.call{value: amount}("");
        require(success, "BoringAddress: transfer failed");
    }
}

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]
// License-Identifier: MIT
pragma solidity ^0.8.0;

// solhint-disable no-inline-assembly
// solhint-disable no-empty-blocks

/// @title Base64
/// @author Brecht Devos - <[email protected]>
/// @notice Provides functions for encoding/decoding base64
library Base64 {
    function encode(bytes memory data) internal pure returns (string memory) {
        if (data.length == 0) return "";

        // load the table into memory
        string memory table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

        // multiply by 4/3 rounded up
        uint256 encodedLen = 4 * ((data.length + 2) / 3);

        // add some extra buffer at the end required for the writing
        string memory result = new string(encodedLen + 32);

        assembly {
            // set the actual output length
            mstore(result, encodedLen)

            // prepare the lookup table
            let tablePtr := add(table, 1)

            // input ptr
            let dataPtr := data
            let endPtr := add(dataPtr, mload(data))

            // result ptr, jump over length
            let resultPtr := add(result, 32)

            // run over the input, 3 bytes at a time
            for {

            } lt(dataPtr, endPtr) {

            } {
                // read 3 bytes
                dataPtr := add(dataPtr, 3)
                let input := mload(dataPtr)

                // write 4 characters
                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))
                resultPtr := add(resultPtr, 1)
            }

            // padding with '='
            switch mod(mload(data), 3)
                case 1 {
                    mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
                }
                case 2 {
                    mstore(sub(resultPtr, 1), shl(248, 0x3d))
                }
        }

        return result;
    }
}

// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]
// License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC165 {
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]
// License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC1155 is IERC165 {
    event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);
    event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
    event URI(string _value, uint256 indexed _id);

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _id,
        uint256 _value,
        bytes calldata _data
    ) external;

    function safeBatchTransferFrom(
        address _from,
        address _to,
        uint256[] calldata _ids,
        uint256[] calldata _values,
        bytes calldata _data
    ) external;

    function balanceOf(address _owner, uint256 _id) external view returns (uint256);

    function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);

    function setApprovalForAll(address _operator, bool _approved) external;

    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]
// License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC1155TokenReceiver {
    function onERC1155Received(
        address _operator,
        address _from,
        uint256 _id,
        uint256 _value,
        bytes calldata _data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address _operator,
        address _from,
        uint256[] calldata _ids,
        uint256[] calldata _values,
        bytes calldata _data
    ) external returns (bytes4);
}

// File @boringcrypto/boring-solidity/contracts/[email protected]
// License-Identifier: MIT
pragma solidity ^0.8.0;



// Written by OreNoMochi (https://github.com/OreNoMochii), BoringCrypto

contract ERC1155 is IERC1155 {
    using BoringAddress for address;

    // mappings
    mapping(address => mapping(address => bool)) public override isApprovedForAll; // map of operator approval
    mapping(address => mapping(uint256 => uint256)) public override balanceOf; // map of tokens owned by
    mapping(uint256 => uint256) public totalSupply; // totalSupply per token

    function supportsInterface(bytes4 interfaceID) public pure override virtual returns (bool) {
        return
            interfaceID == this.supportsInterface.selector || // EIP-165
            interfaceID == 0xd9b67a26 || // ERC-1155
            interfaceID == 0x0e89341c; // EIP-1155 Metadata
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view override returns (uint256[] memory balances) {
        uint256 len = owners.length;
        require(len == ids.length, "ERC1155: Length mismatch");

        balances = new uint256[](len);

        for (uint256 i = 0; i < len; i++) {
            balances[i] = balanceOf[owners[i]][ids[i]];
        }
    }

    function _mint(
        address to,
        uint256 id,
        uint256 value
    ) internal {
        require(to != address(0), "No 0 address");

        balanceOf[to][id] += value;
        totalSupply[id] += value;

        emit TransferSingle(msg.sender, address(0), to, id, value);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 value
    ) internal {
        require(from != address(0), "No 0 address");

        balanceOf[from][id] -= value;
        totalSupply[id] -= value;

        emit TransferSingle(msg.sender, from, address(0), id, value);
    }

    function _transferSingle(
        address from,
        address to,
        uint256 id,
        uint256 value
    ) internal {
        require(to != address(0), "No 0 address");

        balanceOf[from][id] -= value;
        balanceOf[to][id] += value;

        emit TransferSingle(msg.sender, from, to, id, value);
    }

    function _transferBatch(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata values
    ) internal {
        require(to != address(0), "No 0 address");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 value = values[i];
            balanceOf[from][id] -= value;
            balanceOf[to][id] += value;
        }

        emit TransferBatch(msg.sender, from, to, ids, values);
    }

    function _requireTransferAllowed(address from) internal view virtual {
        require(from == msg.sender || isApprovedForAll[from][msg.sender] == true, "Transfer not allowed");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external override {
        _requireTransferAllowed(from);

        _transferSingle(from, to, id, value);

        if (to.isContract()) {
            require(
                IERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, value, data) ==
                    bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")),
                "Wrong return value"
            );
        }
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external override {
        require(ids.length == values.length, "ERC1155: Length mismatch");
        _requireTransferAllowed(from);

        _transferBatch(from, to, ids, values);

        if (to.isContract()) {
            require(
                IERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, values, data) ==
                    bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)")),
                "Wrong return value"
            );
        }
    }

    function setApprovalForAll(address operator, bool approved) external virtual override {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function uri(
        uint256 /*assetId*/
    ) external view virtual returns (string memory) {
        return "";
    }
}

// File contracts/UnRealArt.sol
//License-Identifier: MIT
pragma solidity 0.8.9;



// Simple contract for registering series of NFT artworks
// Contract isn't very flexible on purpose. Trying to keep it as simple as possible, since no audits are done and minimal testing.
contract UnRealArt is ERC1155 {
    using BoringAddress for address;
    using Base64 for bytes;

    function supportsInterface(bytes4 interfaceID) public pure override returns (bool) {
        return super.supportsInterface(interfaceID) || interfaceID == 0x2a55205a; // EIP-2981 NFT Royalty Standard
    }

    struct Series {
        address creator;
        string author; // Twitter handle or name
        string name; // Short name of the series
        string description; // Description of the series, such as inspiration, etc
        string process; // Describe the tools & prompts used
        uint128 price; // Price
        // Each image should be added to IPFS **individually**. This means that anyone owning the
        // NFT only needs to keep a copy of their picture to proof ownership in the (far) future,
        // not the entire series as is the case with a lot of PFP NFTs :D
        string[] artworks; // List of IPFS v0 CIDs of the artworks "Qm...."
    }

    Series[] public series;

    // Keeping track of artworks that are sold. Instead of storing just a boolean, we store the address it was sold
    // to because gas cost is the same.
    mapping(uint256 => address) public soldTo;

    function getSerie(uint256 serie) public view returns (Series memory) {
        return series[serie];
    }

    function seriesCount() public view returns (uint256) {
        return series.length;
    }

    event LogCreateSeries(uint256 indexed index);
    event LogBuy(uint256 indexed serie, uint256 indexed artwork, uint128 price, address indexed gallery);

    function createSeries(
        string calldata author,
        string calldata name,
        string calldata description,
        string calldata process,
        uint128 price,
        string[] calldata imageUrls
    ) public returns (uint32 index) {
        // Get the index of the new series in the array
        index = uint32(series.length);

        // Initialize a new series with name and description.
        // Creator is set to the sender
        Series memory s;
        s.creator = msg.sender;
        s.author = author;
        s.name = name;
        s.description = description;
        s.process = process;
        s.price = price;

        series.push(s);

        for (uint256 i = 0; i < imageUrls.length; i++) {
            uint256 id = index * 1e18 + series[index].artworks.length;
            _mint(msg.sender, id, 1);
            series[index].artworks.push(imageUrls[i]);
        }

        emit LogCreateSeries(index);
    }

    // Reentrancy guard on the buy function
    bool private buying = false;

    function buy(
        uint32 serie,
        uint32 artwork,
        address gallery
    ) public payable {
        require(!buying, "Not again!");
        buying = true;
        uint256 id = uint32(serie) * 1e18 + uint32(artwork);

        require(soldTo[id] == address(0), "Already sold"); // Can only be sold once by the creator
        require(balanceOf[series[serie].creator][id] == 1, "Not for sale"); // Has to be owned by the creator (series owner), could have been transferred
        uint128 price = series[serie].price;
        // Check if enough ETH was sent. Not really needed as we attempt the actual transfer later.
        require(msg.value >= price, "Not enough funds sent");
        require(msg.sender != series[serie].creator, "Cannot buy own work");

        // Flag as sold
        soldTo[id] = msg.sender;

        _transferSingle(series[serie].creator, msg.sender, id, 1);

        // Refund any excess ETH by sending any remaining ETH on the contract back.
        msg.sender.sendNative(address(this).balance - price);

        // The creator gets the remaining 90%
        series[serie].creator.sendNative((price * 90) / 100);

        // The gallery that sold the artwork gets 10% commission
        // Sure, the buyer could redirect this back to themselves when they bypass the UI, but like
        // royalty payments, we rely on some honesty/convenience here. If no gallery is given, the 10%
        // goes to the platform
        (gallery != address(0) ? gallery : 0x9e6e344f94305d36eA59912b0911fE2c9149Ed3E).sendNative((price * 10) / 100);

        emit LogBuy(serie, artwork, price, gallery);
        buying = false;
    }

    function royaltyInfo(uint256 id, uint256 price) public view returns (address receiver, uint256 royaltyAmount) {
        return (series[id / 1e18].creator, price / 10);
    }

    function uri(uint256 id) external view override returns (string memory) {
        uint256 serie = id / 1e18;
        uint256 artwork = id % 1e18;

        // solhint-disable quotes
        return
            string(
                abi.encodePacked(
                    "data:application/json;base64,",
                    abi
                        .encodePacked(
                            '{"name":"',
                            series[serie].name,
                            '","description":"',
                            series[serie].description,
                            '","image":"ipfs://ipfs/',
                            series[serie].artworks[artwork],
                            '","decimals":0,"properties":{"author":"',
                            series[serie].author,
                            '","process":"',
                            series[serie].process,
                            '"}}'
                        )
                        .encode()
                )
            );
    }
}

Contract Security Audit

Contract ABI

[{"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":"uint256","name":"serie","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"artwork","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"price","type":"uint128"},{"indexed":true,"internalType":"address","name":"gallery","type":"address"}],"name":"LogBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"}],"name":"LogCreateSeries","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_value","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"serie","type":"uint32"},{"internalType":"uint32","name":"artwork","type":"uint32"},{"internalType":"address","name":"gallery","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"process","type":"string"},{"internalType":"uint128","name":"price","type":"uint128"},{"internalType":"string[]","name":"imageUrls","type":"string[]"}],"name":"createSeries","outputs":[{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"serie","type":"uint256"}],"name":"getSerie","outputs":[{"components":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"process","type":"string"},{"internalType":"uint128","name":"price","type":"uint128"},{"internalType":"string[]","name":"artworks","type":"string[]"}],"internalType":"struct UnRealArt.Series","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"series","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"process","type":"string"},{"internalType":"uint128","name":"price","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"seriesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"name":"soldTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526005805460ff1916905534801561001a57600080fd5b5061359c8061002a6000396000f3fe6080604052600436106100f25760003560e01c8063a22cb4651161008a578063dc22cb6a11610059578063dc22cb6a14610311578063e985e9c514610343578063f242432a1461037b578063f2b8f4241461039b57600080fd5b8063a22cb4651461029c578063bd85b039146102bc578063d78e7c9a146102e9578063d7f2c0ef146102fc57600080fd5b80632eb2c2d6116100c65780632eb2c2d6146101eb5780634e1273f41461020d57806353576d951461023a578063662b1d231461026757600080fd5b8062fdd58e146100f757806301ffc9a7146101425780630e89341c146101725780632a55205a1461019f575b600080fd5b34801561010357600080fd5b5061012f610112366004612684565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561014e57600080fd5b5061016261015d3660046126dc565b610403565b6040519015158152602001610139565b34801561017e57600080fd5b5061019261018d366004612700565b610460565b6040516101399190612793565b3480156101ab57600080fd5b506101bf6101ba3660046127a6565b6105b0565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610139565b3480156101f757600080fd5b5061020b61020636600461284f565b610615565b005b34801561021957600080fd5b5061022d61022836600461290a565b6107fe565b6040516101399190612976565b34801561024657600080fd5b5061025a610255366004612700565b610982565b6040516101399190612a0f565b34801561027357600080fd5b50610287610282366004612b2e565b610d7b565b60405163ffffffff9091168152602001610139565b3480156102a857600080fd5b5061020b6102b7366004612c32565b61115b565b3480156102c857600080fd5b5061012f6102d7366004612700565b60026020526000908152604090205481565b61020b6102f7366004612c82565b6111f0565b34801561030857600080fd5b5060035461012f565b34801561031d57600080fd5b5061033161032c366004612700565b61179d565b60405161013996959493929190612cc5565b34801561034f57600080fd5b5061016261035e366004612d54565b600060208181529281526040808220909352908152205460ff1681565b34801561038757600080fd5b5061020b610396366004612d87565b611a2e565b3480156103a757600080fd5b506103de6103b6366004612700565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610139565b600061040e82611ba1565b8061045a57507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000610476670de0b6b3a764000084612e5d565b9050600061048c670de0b6b3a764000085612e71565b9050610588600383815481106104a4576104a4612e85565b9060005260206000209060070201600201600384815481106104c8576104c8612e85565b9060005260206000209060070201600301600385815481106104ec576104ec612e85565b9060005260206000209060070201600601848154811061050e5761050e612e85565b906000526020600020016003868154811061052b5761052b612e85565b90600052602060002090600702016001016003878154811061054f5761054f612e85565b9060005260206000209060070201600401604051602001610574959493929190612fd9565b604051602081830303815290604052611c82565b6040516020016105989190613129565b60405160208183030381529060405292505050919050565b60008060036105c7670de0b6b3a764000086612e5d565b815481106105d7576105d7612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16610609600a85612e5d565b915091505b9250929050565b848314610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f455243313135353a204c656e677468206d69736d61746368000000000000000060448201526064015b60405180910390fd5b61068c88611e5b565b61069a888888888888611f1b565b73ffffffffffffffffffffffffffffffffffffffff87163b156107f4576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906107199033908d908c908c908c908c908c908c90600401613206565b602060405180830381600087803b15801561073357600080fd5b505af1158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190613277565b7fffffffff0000000000000000000000000000000000000000000000000000000016146107f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f57726f6e672072657475726e2076616c75650000000000000000000000000000604482015260640161067a565b5050505050505050565b60608382811461086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f455243313135353a204c656e677468206d69736d617463680000000000000000604482015260640161067a565b8067ffffffffffffffff81111561088357610883613294565b6040519080825280602002602001820160405280156108ac578160200160208202803683370190505b50915060005b8181101561097857600160008888848181106108d0576108d0612e85565b90506020020160208101906108e591906132c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086868481811061093357610933612e85565b9050602002013581526020019081526020016000205483828151811061095b5761095b612e85565b602090810291909101015280610970816132de565b9150506108b2565b5050949350505050565b6109ea6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081526020016060815260200160006fffffffffffffffffffffffffffffffff168152602001606081525090565b600382815481106109fd576109fd612e85565b60009182526020918290206040805160e08101909152600790920201805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610a4a90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7690612eb4565b8015610ac35780601f10610a9857610100808354040283529160200191610ac3565b820191906000526020600020905b815481529060010190602001808311610aa657829003601f168201915b50505050508152602001600282018054610adc90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890612eb4565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b50505050508152602001600382018054610b6e90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9a90612eb4565b8015610be75780601f10610bbc57610100808354040283529160200191610be7565b820191906000526020600020905b815481529060010190602001808311610bca57829003601f168201915b50505050508152602001600482018054610c0090612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2c90612eb4565b8015610c795780601f10610c4e57610100808354040283529160200191610c79565b820191906000526020600020905b815481529060010190602001808311610c5c57829003601f168201915b505050918352505060058201546fffffffffffffffffffffffffffffffff16602080830191909152600683018054604080518285028101850182528281529401939260009084015b82821015610d6d578382906000526020600020018054610ce090612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0c90612eb4565b8015610d595780601f10610d2e57610100808354040283529160200191610d59565b820191906000526020600020905b815481529060010190602001808311610d3c57829003601f168201915b505050505081526020019060010190610cc1565b505050915250909392505050565b6003546040805160e0810182526060602080830182905282840182905281830182905260808301829052600060a084015260c08301919091523382528251601f8f018290048202810182019093528d83529091908e908e908190840183828082843760009201919091525050505060208083019190915260408051601f8d018390048302810183019091528b8152908c908c908190840183828082843760009201919091525050505060408083019190915280516020601f8b01819004810282018101909252898152908a908a90819084018382808284376000920191909152505050506060820152604080516020601f8901819004810282018101909252878152908890889081908401838280828437600092018290525060808601949094525050506fffffffffffffffffffffffffffffffff861660a083015260038054600181018255915281517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600790920291820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117815560208084015180518594610f6a937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909101920190612480565b5060408201518051610f86916002840191602090910190612480565b5060608201518051610fa2916003840191602090910190612480565b5060808201518051610fbe916004840191602090910190612480565b5060a08201516005820180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff90921691909117905560c08201518051611021916006840191602090910190612504565b50505060005b8381101561111957600060038463ffffffff168154811061104a5761104a612e85565b600091825260209091206006600790920201015461107663ffffffff8616670de0b6b3a7640000613317565b67ffffffffffffffff1661108a9190613347565b90506110983382600161210c565b60038463ffffffff16815481106110b1576110b1612e85565b90600052602060002090600702016006018686848181106110d4576110d4612e85565b90506020028101906110e6919061335f565b8254600181018455600093845260209093206111049301919061255d565b50508080611111906132de565b915050611027565b5060405163ffffffff8316907f2371cef6032b20ad35a9487c8cce5e454620dab2674022e4302a03ccff15031c90600090a2509b9a5050505050505050505050565b3360008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60055460ff161561125d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f7420616761696e2100000000000000000000000000000000000000000000604482015260640161067a565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600063ffffffff808416906112a7908616670de0b6b3a7640000613317565b6112b191906133c4565b67ffffffffffffffff1660008181526004602052604090205490915073ffffffffffffffffffffffffffffffffffffffff161561134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f416c726561647920736f6c640000000000000000000000000000000000000000604482015260640161067a565b6001600060038663ffffffff168154811061136757611367612e85565b6000918252602080832060079092029091015473ffffffffffffffffffffffffffffffffffffffff1683528281019390935260409182018120848252909252902054600114611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420666f722073616c650000000000000000000000000000000000000000604482015260640161067a565b600060038563ffffffff168154811061142d5761142d612e85565b60009182526020909120600560079092020101546fffffffffffffffffffffffffffffffff169050348111156114bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420656e6f7567682066756e64732073656e740000000000000000000000604482015260640161067a565b60038563ffffffff16815481106114d8576114d8612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16331415611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43616e6e6f7420627579206f776e20776f726b00000000000000000000000000604482015260640161067a565b600082815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380546115ed919063ffffffff88169081106115bd576115bd612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff163384600161224c565b61161361160c6fffffffffffffffffffffffffffffffff8316476133f0565b33906123b1565b611685606461162383605a613407565b61162d9190613436565b6fffffffffffffffffffffffffffffffff1660038763ffffffff168154811061165857611658612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16906123b1565b611704606461169583600a613407565b61169f9190613436565b6fffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff85166116e657739e6e344f94305d36ea59912b0911fe2c9149ed3e6116e8565b845b73ffffffffffffffffffffffffffffffffffffffff16906123b1565b6040516fffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff84169063ffffffff80871691908816907fc14306f241220755eadc850dca73f5e0ecd55bfa3c7ae970b5fe1911d9cd84ae9060200160405180910390a45050600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050565b600381815481106117ad57600080fd5b60009182526020909120600790910201805460018201805473ffffffffffffffffffffffffffffffffffffffff9092169350906117e990612eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461181590612eb4565b80156118625780601f1061183757610100808354040283529160200191611862565b820191906000526020600020905b81548152906001019060200180831161184557829003601f168201915b50505050509080600201805461187790612eb4565b80601f01602080910402602001604051908101604052809291908181526020018280546118a390612eb4565b80156118f05780601f106118c5576101008083540402835291602001916118f0565b820191906000526020600020905b8154815290600101906020018083116118d357829003601f168201915b50505050509080600301805461190590612eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461193190612eb4565b801561197e5780601f106119535761010080835404028352916020019161197e565b820191906000526020600020905b81548152906001019060200180831161196157829003601f168201915b50505050509080600401805461199390612eb4565b80601f01602080910402602001604051908101604052809291908181526020018280546119bf90612eb4565b8015611a0c5780601f106119e157610100808354040283529160200191611a0c565b820191906000526020600020905b8154815290600101906020018083116119ef57829003601f168201915b505050600590930154919250506fffffffffffffffffffffffffffffffff1686565b611a3786611e5b565b611a438686868661224c565b73ffffffffffffffffffffffffffffffffffffffff85163b15611b99576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611abe9033908b908a908a908a908a90600401613465565b602060405180830381600087803b158015611ad857600080fd5b505af1158015611aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b109190613277565b7fffffffff000000000000000000000000000000000000000000000000000000001614611b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f57726f6e672072657475726e2076616c75650000000000000000000000000000604482015260640161067a565b505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611c3457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061045a5750507fffffffff00000000000000000000000000000000000000000000000000000000167f0e89341c000000000000000000000000000000000000000000000000000000001490565b6060815160001415611ca257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135276040913990506000600384516002611cd19190613347565b611cdb9190612e5d565b611ce69060046134b7565b90506000611cf5826020613347565b67ffffffffffffffff811115611d0d57611d0d613294565b6040519080825280601f01601f191660200182016040528015611d37576020820181803683370190505b509050818152600183018586518101602084015b81831015611da3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101611d4b565b600389510660018114611dbd5760028114611e0757611e4d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152611e4d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331480611eb2575073ffffffffffffffffffffffffffffffffffffffff811660009081526020818152604080832033845290915290205460ff1615156001145b611f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000604482015260640161067a565b50565b73ffffffffffffffffffffffffffffffffffffffff8516611f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b60005b83811015612081576000858583818110611fb757611fb7612e85565b9050602002013590506000848484818110611fd457611fd4612e85565b73ffffffffffffffffffffffffffffffffffffffff8c166000908152600160209081526040808320888452825282208054939091029490940135945084939250906120209084906133f0565b909155505073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832085845290915281208054839290612065908490613347565b9250508190555050508080612079906132de565b915050611f9b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878787876040516120fc94939291906134f4565b60405180910390a4505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316612189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040808320858452909152812080548392906121c9908490613347565b9091555050600082815260026020526040812080548392906121ec908490613347565b9091555050604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff85169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b73ffffffffffffffffffffffffffffffffffffffff83166122c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152812080548392906123099084906133f0565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083208584529091528120805483929061234e908490613347565b9091555050604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff808616929087169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a450505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461240b576040519150601f19603f3d011682016040523d82523d6000602084013e612410565b606091505b505090508061247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f426f72696e67416464726573733a207472616e73666572206661696c65640000604482015260640161067a565b505050565b82805461248c90612eb4565b90600052602060002090601f0160209004810192826124ae57600085556124f4565b82601f106124c757805160ff19168380011785556124f4565b828001600101855582156124f4579182015b828111156124f45782518255916020019190600101906124d9565b506125009291506125ef565b5090565b828054828255906000526020600020908101928215612551579160200282015b828111156125515782518051612541918491602090910190612480565b5091602001919060010190612524565b50612500929150612604565b82805461256990612eb4565b90600052602060002090601f01602090048101928261258b57600085556124f4565b82601f106125c2578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556124f4565b828001600101855582156124f4579182015b828111156124f45782358255916020019190600101906125d4565b5b8082111561250057600081556001016125f0565b808211156125005760006126188282612621565b50600101612604565b50805461262d90612eb4565b6000825580601f1061263d575050565b601f016020900490600052602060002090810190611f1891906125ef565b803573ffffffffffffffffffffffffffffffffffffffff8116811461267f57600080fd5b919050565b6000806040838503121561269757600080fd5b6126a08361265b565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611f1857600080fd5b6000602082840312156126ee57600080fd5b81356126f9816126ae565b9392505050565b60006020828403121561271257600080fd5b5035919050565b60005b8381101561273457818101518382015260200161271c565b83811115612743576000848401525b50505050565b60008151808452612761816020860160208601612719565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126f96020830184612749565b600080604083850312156127b957600080fd5b50508035926020909101359150565b60008083601f8401126127da57600080fd5b50813567ffffffffffffffff8111156127f257600080fd5b6020830191508360208260051b850101111561060e57600080fd5b60008083601f84011261281f57600080fd5b50813567ffffffffffffffff81111561283757600080fd5b60208301915083602082850101111561060e57600080fd5b60008060008060008060008060a0898b03121561286b57600080fd5b6128748961265b565b975061288260208a0161265b565b9650604089013567ffffffffffffffff8082111561289f57600080fd5b6128ab8c838d016127c8565b909850965060608b01359150808211156128c457600080fd5b6128d08c838d016127c8565b909650945060808b01359150808211156128e957600080fd5b506128f68b828c0161280d565b999c989b5096995094979396929594505050565b6000806000806040858703121561292057600080fd5b843567ffffffffffffffff8082111561293857600080fd5b612944888389016127c8565b9096509450602087013591508082111561295d57600080fd5b5061296a878288016127c8565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156129ae57835183529284019291840191600101612992565b50909695505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015612a025782840389526129f0848351612749565b988501989350908401906001016129d8565b5091979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526000602083015160e06040840152612a4c610100840182612749565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152612a888383612749565b92506060860151915080858403016080860152612aa58383612749565b925060808601519150808584030160a0860152612ac28383612749565b925060a08601519150612ae960c08601836fffffffffffffffffffffffffffffffff169052565b60c08601519150808584030160e086015250612b0582826129ba565b95945050505050565b80356fffffffffffffffffffffffffffffffff8116811461267f57600080fd5b600080600080600080600080600080600060c08c8e031215612b4f57600080fd5b67ffffffffffffffff808d351115612b6657600080fd5b612b738e8e358f0161280d565b909c509a5060208d0135811015612b8957600080fd5b612b998e60208f01358f0161280d565b909a50985060408d0135811015612baf57600080fd5b612bbf8e60408f01358f0161280d565b909850965060608d0135811015612bd557600080fd5b612be58e60608f01358f0161280d565b9096509450612bf660808e01612b0e565b93508060a08e01351115612c0957600080fd5b50612c1a8d60a08e01358e016127c8565b81935080925050509295989b509295989b9093969950565b60008060408385031215612c4557600080fd5b612c4e8361265b565b915060208301358015158114612c6357600080fd5b809150509250929050565b803563ffffffff8116811461267f57600080fd5b600080600060608486031215612c9757600080fd5b612ca084612c6e565b9250612cae60208501612c6e565b9150612cbc6040850161265b565b90509250925092565b73ffffffffffffffffffffffffffffffffffffffff8716815260c060208201526000612cf460c0830188612749565b8281036040840152612d068188612749565b90508281036060840152612d1a8187612749565b90508281036080840152612d2e8186612749565b9150506fffffffffffffffffffffffffffffffff831660a0830152979650505050505050565b60008060408385031215612d6757600080fd5b612d708361265b565b9150612d7e6020840161265b565b90509250929050565b60008060008060008060a08789031215612da057600080fd5b612da98761265b565b9550612db76020880161265b565b94506040870135935060608701359250608087013567ffffffffffffffff811115612de157600080fd5b612ded89828a0161280d565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082612e6c57612e6c612dff565b500490565b600082612e8057612e80612dff565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680612ec857607f821691505b60208210811415612f02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8054600090600181811c9080831680612f2257607f831692505b6020808410821415612f5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b818015612f715760018114612fa057612fcd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650612fcd565b60008881526020902060005b86811015612fc55781548b820152908501908301612fac565b505084890196505b50505050505092915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000008152600061300b6009830188612f08565b7f222c226465736372697074696f6e223a22000000000000000000000000000000815261303b6011820188612f08565b90507f222c22696d616765223a22697066733a2f2f697066732f000000000000000000815261306d6017820187612f08565b90507f222c22646563696d616c73223a302c2270726f70657274696573223a7b22617581527f74686f72223a220000000000000000000000000000000000000000000000000060208201526130c56027820186612f08565b90507f222c2270726f63657373223a220000000000000000000000000000000000000081526130f7600d820185612f08565b7f227d7d0000000000000000000000000000000000000000000000000000000000815260030198975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161316181601d850160208701612719565b91909101601d0192915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a057600080fd5b8260051b8083602087013760009401602001938452509192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261324060a08301888a61316e565b828103606084015261325381878961316e565b905082810360808401526132688185876131bd565b9b9a5050505050505050505050565b60006020828403121561328957600080fd5b81516126f9816126ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156132d557600080fd5b6126f98261265b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331057613310612e2e565b5060010190565b600067ffffffffffffffff8083168185168183048111821515161561333e5761333e612e2e565b02949350505050565b6000821982111561335a5761335a612e2e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261339457600080fd5b83018035915067ffffffffffffffff8211156133af57600080fd5b60200191503681900382131561060e57600080fd5b600067ffffffffffffffff8083168185168083038211156133e7576133e7612e2e565b01949350505050565b60008282101561340257613402612e2e565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561333e5761333e612e2e565b60006fffffffffffffffffffffffffffffffff8084168061345957613459612dff565b92169190910492915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301526134ab60a0830184866131bd565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ef576134ef612e2e565b500290565b60408152600061350860408301868861316e565b828103602084015261351b81858761316e565b97965050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220bb5a9d8fcfc545131b6d8c2b2fc2bfc63e2030a10fed30a9945a8f4ea8960d2a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106100f25760003560e01c8063a22cb4651161008a578063dc22cb6a11610059578063dc22cb6a14610311578063e985e9c514610343578063f242432a1461037b578063f2b8f4241461039b57600080fd5b8063a22cb4651461029c578063bd85b039146102bc578063d78e7c9a146102e9578063d7f2c0ef146102fc57600080fd5b80632eb2c2d6116100c65780632eb2c2d6146101eb5780634e1273f41461020d57806353576d951461023a578063662b1d231461026757600080fd5b8062fdd58e146100f757806301ffc9a7146101425780630e89341c146101725780632a55205a1461019f575b600080fd5b34801561010357600080fd5b5061012f610112366004612684565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561014e57600080fd5b5061016261015d3660046126dc565b610403565b6040519015158152602001610139565b34801561017e57600080fd5b5061019261018d366004612700565b610460565b6040516101399190612793565b3480156101ab57600080fd5b506101bf6101ba3660046127a6565b6105b0565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610139565b3480156101f757600080fd5b5061020b61020636600461284f565b610615565b005b34801561021957600080fd5b5061022d61022836600461290a565b6107fe565b6040516101399190612976565b34801561024657600080fd5b5061025a610255366004612700565b610982565b6040516101399190612a0f565b34801561027357600080fd5b50610287610282366004612b2e565b610d7b565b60405163ffffffff9091168152602001610139565b3480156102a857600080fd5b5061020b6102b7366004612c32565b61115b565b3480156102c857600080fd5b5061012f6102d7366004612700565b60026020526000908152604090205481565b61020b6102f7366004612c82565b6111f0565b34801561030857600080fd5b5060035461012f565b34801561031d57600080fd5b5061033161032c366004612700565b61179d565b60405161013996959493929190612cc5565b34801561034f57600080fd5b5061016261035e366004612d54565b600060208181529281526040808220909352908152205460ff1681565b34801561038757600080fd5b5061020b610396366004612d87565b611a2e565b3480156103a757600080fd5b506103de6103b6366004612700565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610139565b600061040e82611ba1565b8061045a57507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000610476670de0b6b3a764000084612e5d565b9050600061048c670de0b6b3a764000085612e71565b9050610588600383815481106104a4576104a4612e85565b9060005260206000209060070201600201600384815481106104c8576104c8612e85565b9060005260206000209060070201600301600385815481106104ec576104ec612e85565b9060005260206000209060070201600601848154811061050e5761050e612e85565b906000526020600020016003868154811061052b5761052b612e85565b90600052602060002090600702016001016003878154811061054f5761054f612e85565b9060005260206000209060070201600401604051602001610574959493929190612fd9565b604051602081830303815290604052611c82565b6040516020016105989190613129565b60405160208183030381529060405292505050919050565b60008060036105c7670de0b6b3a764000086612e5d565b815481106105d7576105d7612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16610609600a85612e5d565b915091505b9250929050565b848314610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f455243313135353a204c656e677468206d69736d61746368000000000000000060448201526064015b60405180910390fd5b61068c88611e5b565b61069a888888888888611f1b565b73ffffffffffffffffffffffffffffffffffffffff87163b156107f4576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906107199033908d908c908c908c908c908c908c90600401613206565b602060405180830381600087803b15801561073357600080fd5b505af1158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190613277565b7fffffffff0000000000000000000000000000000000000000000000000000000016146107f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f57726f6e672072657475726e2076616c75650000000000000000000000000000604482015260640161067a565b5050505050505050565b60608382811461086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f455243313135353a204c656e677468206d69736d617463680000000000000000604482015260640161067a565b8067ffffffffffffffff81111561088357610883613294565b6040519080825280602002602001820160405280156108ac578160200160208202803683370190505b50915060005b8181101561097857600160008888848181106108d0576108d0612e85565b90506020020160208101906108e591906132c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086868481811061093357610933612e85565b9050602002013581526020019081526020016000205483828151811061095b5761095b612e85565b602090810291909101015280610970816132de565b9150506108b2565b5050949350505050565b6109ea6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081526020016060815260200160006fffffffffffffffffffffffffffffffff168152602001606081525090565b600382815481106109fd576109fd612e85565b60009182526020918290206040805160e08101909152600790920201805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610a4a90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7690612eb4565b8015610ac35780601f10610a9857610100808354040283529160200191610ac3565b820191906000526020600020905b815481529060010190602001808311610aa657829003601f168201915b50505050508152602001600282018054610adc90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890612eb4565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b50505050508152602001600382018054610b6e90612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9a90612eb4565b8015610be75780601f10610bbc57610100808354040283529160200191610be7565b820191906000526020600020905b815481529060010190602001808311610bca57829003601f168201915b50505050508152602001600482018054610c0090612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2c90612eb4565b8015610c795780601f10610c4e57610100808354040283529160200191610c79565b820191906000526020600020905b815481529060010190602001808311610c5c57829003601f168201915b505050918352505060058201546fffffffffffffffffffffffffffffffff16602080830191909152600683018054604080518285028101850182528281529401939260009084015b82821015610d6d578382906000526020600020018054610ce090612eb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0c90612eb4565b8015610d595780601f10610d2e57610100808354040283529160200191610d59565b820191906000526020600020905b815481529060010190602001808311610d3c57829003601f168201915b505050505081526020019060010190610cc1565b505050915250909392505050565b6003546040805160e0810182526060602080830182905282840182905281830182905260808301829052600060a084015260c08301919091523382528251601f8f018290048202810182019093528d83529091908e908e908190840183828082843760009201919091525050505060208083019190915260408051601f8d018390048302810183019091528b8152908c908c908190840183828082843760009201919091525050505060408083019190915280516020601f8b01819004810282018101909252898152908a908a90819084018382808284376000920191909152505050506060820152604080516020601f8901819004810282018101909252878152908890889081908401838280828437600092018290525060808601949094525050506fffffffffffffffffffffffffffffffff861660a083015260038054600181018255915281517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600790920291820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117815560208084015180518594610f6a937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909101920190612480565b5060408201518051610f86916002840191602090910190612480565b5060608201518051610fa2916003840191602090910190612480565b5060808201518051610fbe916004840191602090910190612480565b5060a08201516005820180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff90921691909117905560c08201518051611021916006840191602090910190612504565b50505060005b8381101561111957600060038463ffffffff168154811061104a5761104a612e85565b600091825260209091206006600790920201015461107663ffffffff8616670de0b6b3a7640000613317565b67ffffffffffffffff1661108a9190613347565b90506110983382600161210c565b60038463ffffffff16815481106110b1576110b1612e85565b90600052602060002090600702016006018686848181106110d4576110d4612e85565b90506020028101906110e6919061335f565b8254600181018455600093845260209093206111049301919061255d565b50508080611111906132de565b915050611027565b5060405163ffffffff8316907f2371cef6032b20ad35a9487c8cce5e454620dab2674022e4302a03ccff15031c90600090a2509b9a5050505050505050505050565b3360008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60055460ff161561125d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f7420616761696e2100000000000000000000000000000000000000000000604482015260640161067a565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600063ffffffff808416906112a7908616670de0b6b3a7640000613317565b6112b191906133c4565b67ffffffffffffffff1660008181526004602052604090205490915073ffffffffffffffffffffffffffffffffffffffff161561134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f416c726561647920736f6c640000000000000000000000000000000000000000604482015260640161067a565b6001600060038663ffffffff168154811061136757611367612e85565b6000918252602080832060079092029091015473ffffffffffffffffffffffffffffffffffffffff1683528281019390935260409182018120848252909252902054600114611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420666f722073616c650000000000000000000000000000000000000000604482015260640161067a565b600060038563ffffffff168154811061142d5761142d612e85565b60009182526020909120600560079092020101546fffffffffffffffffffffffffffffffff169050348111156114bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420656e6f7567682066756e64732073656e740000000000000000000000604482015260640161067a565b60038563ffffffff16815481106114d8576114d8612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16331415611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43616e6e6f7420627579206f776e20776f726b00000000000000000000000000604482015260640161067a565b600082815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380546115ed919063ffffffff88169081106115bd576115bd612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff163384600161224c565b61161361160c6fffffffffffffffffffffffffffffffff8316476133f0565b33906123b1565b611685606461162383605a613407565b61162d9190613436565b6fffffffffffffffffffffffffffffffff1660038763ffffffff168154811061165857611658612e85565b600091825260209091206007909102015473ffffffffffffffffffffffffffffffffffffffff16906123b1565b611704606461169583600a613407565b61169f9190613436565b6fffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff85166116e657739e6e344f94305d36ea59912b0911fe2c9149ed3e6116e8565b845b73ffffffffffffffffffffffffffffffffffffffff16906123b1565b6040516fffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff84169063ffffffff80871691908816907fc14306f241220755eadc850dca73f5e0ecd55bfa3c7ae970b5fe1911d9cd84ae9060200160405180910390a45050600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050565b600381815481106117ad57600080fd5b60009182526020909120600790910201805460018201805473ffffffffffffffffffffffffffffffffffffffff9092169350906117e990612eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461181590612eb4565b80156118625780601f1061183757610100808354040283529160200191611862565b820191906000526020600020905b81548152906001019060200180831161184557829003601f168201915b50505050509080600201805461187790612eb4565b80601f01602080910402602001604051908101604052809291908181526020018280546118a390612eb4565b80156118f05780601f106118c5576101008083540402835291602001916118f0565b820191906000526020600020905b8154815290600101906020018083116118d357829003601f168201915b50505050509080600301805461190590612eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461193190612eb4565b801561197e5780601f106119535761010080835404028352916020019161197e565b820191906000526020600020905b81548152906001019060200180831161196157829003601f168201915b50505050509080600401805461199390612eb4565b80601f01602080910402602001604051908101604052809291908181526020018280546119bf90612eb4565b8015611a0c5780601f106119e157610100808354040283529160200191611a0c565b820191906000526020600020905b8154815290600101906020018083116119ef57829003601f168201915b505050600590930154919250506fffffffffffffffffffffffffffffffff1686565b611a3786611e5b565b611a438686868661224c565b73ffffffffffffffffffffffffffffffffffffffff85163b15611b99576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611abe9033908b908a908a908a908a90600401613465565b602060405180830381600087803b158015611ad857600080fd5b505af1158015611aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b109190613277565b7fffffffff000000000000000000000000000000000000000000000000000000001614611b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f57726f6e672072657475726e2076616c75650000000000000000000000000000604482015260640161067a565b505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611c3457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061045a5750507fffffffff00000000000000000000000000000000000000000000000000000000167f0e89341c000000000000000000000000000000000000000000000000000000001490565b6060815160001415611ca257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135276040913990506000600384516002611cd19190613347565b611cdb9190612e5d565b611ce69060046134b7565b90506000611cf5826020613347565b67ffffffffffffffff811115611d0d57611d0d613294565b6040519080825280601f01601f191660200182016040528015611d37576020820181803683370190505b509050818152600183018586518101602084015b81831015611da3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101611d4b565b600389510660018114611dbd5760028114611e0757611e4d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152611e4d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331480611eb2575073ffffffffffffffffffffffffffffffffffffffff811660009081526020818152604080832033845290915290205460ff1615156001145b611f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000604482015260640161067a565b50565b73ffffffffffffffffffffffffffffffffffffffff8516611f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b60005b83811015612081576000858583818110611fb757611fb7612e85565b9050602002013590506000848484818110611fd457611fd4612e85565b73ffffffffffffffffffffffffffffffffffffffff8c166000908152600160209081526040808320888452825282208054939091029490940135945084939250906120209084906133f0565b909155505073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832085845290915281208054839290612065908490613347565b9250508190555050508080612079906132de565b915050611f9b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878787876040516120fc94939291906134f4565b60405180910390a4505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316612189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040808320858452909152812080548392906121c9908490613347565b9091555050600082815260026020526040812080548392906121ec908490613347565b9091555050604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff85169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b73ffffffffffffffffffffffffffffffffffffffff83166122c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f203020616464726573730000000000000000000000000000000000000000604482015260640161067a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152812080548392906123099084906133f0565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083208584529091528120805483929061234e908490613347565b9091555050604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff808616929087169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a450505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461240b576040519150601f19603f3d011682016040523d82523d6000602084013e612410565b606091505b505090508061247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f426f72696e67416464726573733a207472616e73666572206661696c65640000604482015260640161067a565b505050565b82805461248c90612eb4565b90600052602060002090601f0160209004810192826124ae57600085556124f4565b82601f106124c757805160ff19168380011785556124f4565b828001600101855582156124f4579182015b828111156124f45782518255916020019190600101906124d9565b506125009291506125ef565b5090565b828054828255906000526020600020908101928215612551579160200282015b828111156125515782518051612541918491602090910190612480565b5091602001919060010190612524565b50612500929150612604565b82805461256990612eb4565b90600052602060002090601f01602090048101928261258b57600085556124f4565b82601f106125c2578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556124f4565b828001600101855582156124f4579182015b828111156124f45782358255916020019190600101906125d4565b5b8082111561250057600081556001016125f0565b808211156125005760006126188282612621565b50600101612604565b50805461262d90612eb4565b6000825580601f1061263d575050565b601f016020900490600052602060002090810190611f1891906125ef565b803573ffffffffffffffffffffffffffffffffffffffff8116811461267f57600080fd5b919050565b6000806040838503121561269757600080fd5b6126a08361265b565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611f1857600080fd5b6000602082840312156126ee57600080fd5b81356126f9816126ae565b9392505050565b60006020828403121561271257600080fd5b5035919050565b60005b8381101561273457818101518382015260200161271c565b83811115612743576000848401525b50505050565b60008151808452612761816020860160208601612719565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126f96020830184612749565b600080604083850312156127b957600080fd5b50508035926020909101359150565b60008083601f8401126127da57600080fd5b50813567ffffffffffffffff8111156127f257600080fd5b6020830191508360208260051b850101111561060e57600080fd5b60008083601f84011261281f57600080fd5b50813567ffffffffffffffff81111561283757600080fd5b60208301915083602082850101111561060e57600080fd5b60008060008060008060008060a0898b03121561286b57600080fd5b6128748961265b565b975061288260208a0161265b565b9650604089013567ffffffffffffffff8082111561289f57600080fd5b6128ab8c838d016127c8565b909850965060608b01359150808211156128c457600080fd5b6128d08c838d016127c8565b909650945060808b01359150808211156128e957600080fd5b506128f68b828c0161280d565b999c989b5096995094979396929594505050565b6000806000806040858703121561292057600080fd5b843567ffffffffffffffff8082111561293857600080fd5b612944888389016127c8565b9096509450602087013591508082111561295d57600080fd5b5061296a878288016127c8565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156129ae57835183529284019291840191600101612992565b50909695505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015612a025782840389526129f0848351612749565b988501989350908401906001016129d8565b5091979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526000602083015160e06040840152612a4c610100840182612749565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152612a888383612749565b92506060860151915080858403016080860152612aa58383612749565b925060808601519150808584030160a0860152612ac28383612749565b925060a08601519150612ae960c08601836fffffffffffffffffffffffffffffffff169052565b60c08601519150808584030160e086015250612b0582826129ba565b95945050505050565b80356fffffffffffffffffffffffffffffffff8116811461267f57600080fd5b600080600080600080600080600080600060c08c8e031215612b4f57600080fd5b67ffffffffffffffff808d351115612b6657600080fd5b612b738e8e358f0161280d565b909c509a5060208d0135811015612b8957600080fd5b612b998e60208f01358f0161280d565b909a50985060408d0135811015612baf57600080fd5b612bbf8e60408f01358f0161280d565b909850965060608d0135811015612bd557600080fd5b612be58e60608f01358f0161280d565b9096509450612bf660808e01612b0e565b93508060a08e01351115612c0957600080fd5b50612c1a8d60a08e01358e016127c8565b81935080925050509295989b509295989b9093969950565b60008060408385031215612c4557600080fd5b612c4e8361265b565b915060208301358015158114612c6357600080fd5b809150509250929050565b803563ffffffff8116811461267f57600080fd5b600080600060608486031215612c9757600080fd5b612ca084612c6e565b9250612cae60208501612c6e565b9150612cbc6040850161265b565b90509250925092565b73ffffffffffffffffffffffffffffffffffffffff8716815260c060208201526000612cf460c0830188612749565b8281036040840152612d068188612749565b90508281036060840152612d1a8187612749565b90508281036080840152612d2e8186612749565b9150506fffffffffffffffffffffffffffffffff831660a0830152979650505050505050565b60008060408385031215612d6757600080fd5b612d708361265b565b9150612d7e6020840161265b565b90509250929050565b60008060008060008060a08789031215612da057600080fd5b612da98761265b565b9550612db76020880161265b565b94506040870135935060608701359250608087013567ffffffffffffffff811115612de157600080fd5b612ded89828a0161280d565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082612e6c57612e6c612dff565b500490565b600082612e8057612e80612dff565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680612ec857607f821691505b60208210811415612f02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8054600090600181811c9080831680612f2257607f831692505b6020808410821415612f5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b818015612f715760018114612fa057612fcd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650612fcd565b60008881526020902060005b86811015612fc55781548b820152908501908301612fac565b505084890196505b50505050505092915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000008152600061300b6009830188612f08565b7f222c226465736372697074696f6e223a22000000000000000000000000000000815261303b6011820188612f08565b90507f222c22696d616765223a22697066733a2f2f697066732f000000000000000000815261306d6017820187612f08565b90507f222c22646563696d616c73223a302c2270726f70657274696573223a7b22617581527f74686f72223a220000000000000000000000000000000000000000000000000060208201526130c56027820186612f08565b90507f222c2270726f63657373223a220000000000000000000000000000000000000081526130f7600d820185612f08565b7f227d7d0000000000000000000000000000000000000000000000000000000000815260030198975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161316181601d850160208701612719565b91909101601d0192915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a057600080fd5b8260051b8083602087013760009401602001938452509192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261324060a08301888a61316e565b828103606084015261325381878961316e565b905082810360808401526132688185876131bd565b9b9a5050505050505050505050565b60006020828403121561328957600080fd5b81516126f9816126ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156132d557600080fd5b6126f98261265b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331057613310612e2e565b5060010190565b600067ffffffffffffffff8083168185168183048111821515161561333e5761333e612e2e565b02949350505050565b6000821982111561335a5761335a612e2e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261339457600080fd5b83018035915067ffffffffffffffff8211156133af57600080fd5b60200191503681900382131561060e57600080fd5b600067ffffffffffffffff8083168185168083038211156133e7576133e7612e2e565b01949350505050565b60008282101561340257613402612e2e565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561333e5761333e612e2e565b60006fffffffffffffffffffffffffffffffff8084168061345957613459612dff565b92169190910492915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301526134ab60a0830184866131bd565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ef576134ef612e2e565b500290565b60408152600061350860408301868861316e565b828103602084015261351b81858761316e565b97965050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220bb5a9d8fcfc545131b6d8c2b2fc2bfc63e2030a10fed30a9945a8f4ea8960d2a64736f6c63430008090033

Deployed Bytecode Sourcemap

10261:5621:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5732:73;;;;;;;;;;-1:-1:-1;5732:73:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;620:25:1;;;608:2;593:18;5732:73:0;;;;;;;;10367:207;;;;;;;;;;-1:-1:-1;10367:207:0;;;;;:::i;:::-;;:::i;:::-;;;1253:14:1;;1246:22;1228:41;;1216:2;1201:18;10367:207:0;1088:187:1;14829:1050:0;;;;;;;;;;-1:-1:-1;14829:1050:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14646:175::-;;;;;;;;;;-1:-1:-1;14646:175:0;;;;;:::i;:::-;;:::i;:::-;;;;2732:42:1;2720:55;;;2702:74;;2807:2;2792:18;;2785:34;;;;2675:18;14646:175:0;2528:297:1;8907:708:0;;;;;;;;;;-1:-1:-1;8907:708:0;;;;;:::i;:::-;;:::i;:::-;;6230:402;;;;;;;;;;-1:-1:-1;6230:402:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11506:108::-;;;;;;;;;;-1:-1:-1;11506:108:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11882:978::-;;;;;;;;;;-1:-1:-1;11882:978:0;;;;;:::i;:::-;;:::i;:::-;;;10365:10:1;10353:23;;;10335:42;;10323:2;10308:18;11882:978:0;10191:192:1;9623:218:0;;;;;;;;;;-1:-1:-1;9623:218:0;;;;;:::i;:::-;;:::i;5838:46::-;;;;;;;;;;-1:-1:-1;5838:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;12949:1689;;;;;;:::i;:::-;;:::i;11622:92::-;;;;;;;;;;-1:-1:-1;11693:6:0;:13;11622:92;;11267:22;;;;;;;;;;-1:-1:-1;11267:22:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;5620:77::-;;;;;;;;;;-1:-1:-1;5620:77:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8312:587;;;;;;;;;;-1:-1:-1;8312:587:0;;;;;:::i;:::-;;:::i;11456:41::-;;;;;;;;;;-1:-1:-1;11456:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13334:42:1;13322:55;;;13304:74;;13292:2;13277:18;11456:41:0;13158:226:1;10367:207:0;10444:4;10468:36;10492:11;10468:23;:36::i;:::-;:65;;;-1:-1:-1;10508:25:0;;;;;10468:65;10461:72;10367:207;-1:-1:-1;;10367:207:0:o;14829:1050::-;14886:13;14912;14928:9;14933:4;14928:2;:9;:::i;:::-;14912:25;-1:-1:-1;14948:15:0;14966:9;14971:4;14966:2;:9;:::i;:::-;14948:27;;15161:676;15276:6;15283:5;15276:13;;;;;;;;:::i;:::-;;;;;;;;;;;:18;;15375:6;15382:5;15375:13;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;15487:6;15494:5;15487:13;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;15510:7;15487:31;;;;;;;;:::i;:::-;;;;;;;;15621:6;15628:5;15621:13;;;;;;;;:::i;:::-;;;;;;;;;;;:20;;15718:6;15725:5;15718:13;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;15161:641;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:674;:676::i;:::-;15068:788;;;;;;;;:::i;:::-;;;;;;;;;;;;;15023:848;;;;14829:1050;;;:::o;14646:175::-;14715:16;;14775:6;14782:9;14787:4;14782:2;:9;:::i;:::-;14775:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;14802:10;14810:2;14802:5;:10;:::i;:::-;14767:46;;;;14646:175;;;;;;:::o;8907:708::-;9125:27;;;9117:64;;;;;;;18418:2:1;9117:64:0;;;18400:21:1;18457:2;18437:18;;;18430:30;18496:26;18476:18;;;18469:54;18540:18;;9117:64:0;;;;;;;;;9192:29;9216:4;9192:23;:29::i;:::-;9234:37;9249:4;9255:2;9259:3;;9264:6;;9234:14;:37::i;:::-;9288:13;;;376:20;424:8;9284:324;;9346:85;;:196;:85;;;:196;:48;;;;;;:85;;9395:10;;9407:4;;9413:3;;;;9418:6;;;;9426:4;;;;9346:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:196;;;9320:276;;;;;;;20696:2:1;9320:276:0;;;20678:21:1;20735:2;20715:18;;;20708:30;20774:20;20754:18;;;20747:48;20812:18;;9320:276:0;20494:342:1;9320:276:0;8907:708;;;;;;;;:::o;6230:402::-;6337:25;6389:6;6421:17;;;6413:54;;;;;;;18418:2:1;6413:54:0;;;18400:21:1;18457:2;18437:18;;;18430:30;18496:26;18476:18;;;18469:54;18540:18;;6413:54:0;18216:348:1;6413:54:0;6505:3;6491:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6491:18:0;;6480:29;;6527:9;6522:103;6546:3;6542:1;:7;6522:103;;;6585:9;:20;6595:6;;6602:1;6595:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6585:20;;;;;;;;;;;;;;;:28;6606:3;;6610:1;6606:6;;;;;;;:::i;:::-;;;;;;;6585:28;;;;;;;;;;;;6571:8;6580:1;6571:11;;;;;;;;:::i;:::-;;;;;;;;;;:42;6551:3;;;;:::i;:::-;;;;6522:103;;;;6364:268;6230:402;;;;;;:::o;11506:108::-;11560:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11560:13:0;11593:6;11600:5;11593:13;;;;;;;;:::i;:::-;;;;;;;;;;11586:20;;;;;;;;;11593:13;;;;;11586:20;;;;;;;;;;;;;11593:13;;11586:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11586:20:0;;;-1:-1:-1;;11586:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11586:20:0;;-1:-1:-1;11586:20:0;;11506:108;-1:-1:-1;;;11506:108:0:o;11882:978::-;12222:6;:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12391:10:0;12379:22;;12412:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12412:17:0;12423:6;;12412:17;;;;;;12423:6;12412:17;;12423:6;12412:17;;;;;;;;;-1:-1:-1;;;;12412:8:0;;;;:17;;;;12440:13;;;12412:17;12440:13;;;;;;;;;;;;;;;;;;12449:4;;;;;;12440:13;;12449:4;;;;12440:13;;;;;;;;;-1:-1:-1;;;;12440:6:0;;;;:13;;;;12464:27;;;12440:13;12464:27;;;;;;;;;;;;;;;;;;12480:11;;;;;;12464:27;;12480:11;;;;12464:27;;;;;;;;;-1:-1:-1;;;;12464:13:0;;;:27;12502:19;;;;12464:27;12502:19;;;;;;;;;;;;;;;;;;12514:7;;;;;;12502:19;;12514:7;;;;12502:19;;;;;;;;-1:-1:-1;12502:9:0;;;:19;;;;-1:-1:-1;;;12532:15:0;;;:7;;;:15;12560:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12502:9;;12560:14;;;;;;;;;;:::i;:::-;-1:-1:-1;12560:14:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12560:14:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12560:14:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12560:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12592:9;12587:226;12607:20;;;12587:226;;;12649:10;12677:6;12684:5;12677:13;;;;;;;;;;:::i;:::-;;;;;;;;;:22;:13;;;;;:22;:29;12662:12;;;;12670:4;12662:12;:::i;:::-;:44;;;;;;:::i;:::-;12649:57;;12721:24;12727:10;12739:2;12743:1;12721:5;:24::i;:::-;12760:6;12767:5;12760:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;12788:9;;12798:1;12788:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;12760:41;;;;;;;-1:-1:-1;12760:41:0;;;;;;;;;;;;;:::i;:::-;;12634:179;12629:3;;;;;:::i;:::-;;;;12587:226;;;-1:-1:-1;12830:22:0;;;;;;;;;;;12139:721;11882:978;;;;;;;;;;;;;:::o;9623:218::-;9737:10;9720:16;:28;;;;;;;;;;;;:38;;;;;;;;;;;;:49;;;;;;;;;;;;;9787:46;;1228:41:1;;;9720:38:0;;9737:10;9787:46;;1201:18:1;9787:46:0;;;;;;;9623:218;;:::o;12949:1689::-;13078:6;;;;13077:7;13069:30;;;;;;;22617:2:1;13069:30:0;;;22599:21:1;22656:2;22636:18;;;22629:30;22695:12;22675:18;;;22668:40;22725:18;;13069:30:0;22415:334:1;13069:30:0;13110:6;:13;;;;13119:4;13110:13;;;:6;13147:38;;;;;:20;;;;13163:4;13147:20;:::i;:::-;:38;;;;:::i;:::-;13134:51;;13228:1;13206:10;;;:6;:10;;;;;;13134:51;;-1:-1:-1;13206:24:0;:10;:24;13198:49;;;;;;;23197:2:1;13198:49:0;;;23179:21:1;23236:2;23216:18;;;23209:30;23275:14;23255:18;;;23248:42;23307:18;;13198:49:0;22995:336:1;13198:49:0;13306:9;:32;13316:6;13323:5;13316:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:21;;;13306:32;;;;;;;;;;;;;;;:36;;;;;;;;;13316:21;13306:41;13298:66;;;;;;;23538:2:1;13298:66:0;;;23520:21:1;23577:2;23557:18;;;23550:30;23616:14;23596:18;;;23589:42;23648:18;;13298:66:0;23336:336:1;13298:66:0;13453:13;13469:6;13476:5;13469:13;;;;;;;;;;:::i;:::-;;;;;;;;;:19;:13;;;;;:19;;;;;-1:-1:-1;13608:9:0;:18;-1:-1:-1;13608:18:0;13600:52;;;;;;;23879:2:1;13600:52:0;;;23861:21:1;23918:2;23898:18;;;23891:30;23957:23;23937:18;;;23930:51;23998:18;;13600:52:0;23677:345:1;13600:52:0;13685:6;13692:5;13685:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:21;;;13671:10;:35;;13663:67;;;;;;;24229:2:1;13663:67:0;;;24211:21:1;24268:2;24248:18;;;24241:30;24307:21;24287:18;;;24280:49;24346:18;;13663:67:0;24027:343:1;13663:67:0;13768:10;;;;:6;:10;;;;;:23;;;;13781:10;13768:23;;;13820:6;:13;;13804:57;;13820:6;:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:21;;;13843:10;13855:2;13820:21;13804:15;:57::i;:::-;13959:52;13981:29;;;;:21;:29;:::i;:::-;13959:10;;:21;:52::i;:::-;14071;14119:3;14105:10;:5;14113:2;14105:10;:::i;:::-;14104:18;;;;:::i;:::-;14071:52;;:6;14078:5;14071:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:21;;;;:32;:52::i;:::-;14440:109;14545:3;14531:10;:5;14539:2;14531:10;:::i;:::-;14530:18;;;;:::i;:::-;14440:109;;14441:21;;;:76;;14475:42;14441:76;;;14465:7;14441:76;14440:89;;;;:109::i;:::-;14567:38;;25194:34:1;25182:47;;25164:66;;14567:38:0;;;;;;;;;;;;;;;25152:2:1;25137:18;14567:38:0;;;;;;;-1:-1:-1;;14616:6:0;:14;;;;;;-1:-1:-1;;;12949:1689:0:o;11267:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11267:22:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11267:22:0;;;;;;;-1:-1:-1;;11267:22:0;;;:::o;8312:587::-;8493:29;8517:4;8493:23;:29::i;:::-;8535:36;8551:4;8557:2;8561;8565:5;8535:15;:36::i;:::-;8588:13;;;376:20;424:8;8584:308;;8646:78;;:180;:78;;;:180;:43;;;;;;:78;;8690:10;;8702:4;;8708:2;;8712:5;;8719:4;;;;8646:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:180;;;8620:260;;;;;;;20696:2:1;8620:260:0;;;20678:21:1;20735:2;20715:18;;;20708:30;20774:20;20754:18;;;20747:48;20812:18;;8620:260:0;20494:342:1;8620:260:0;8312:587;;;;;;:::o;5918:304::-;6003:4;6040:46;;;6055:31;6040:46;;:99;;-1:-1:-1;6114:25:0;;;;;6040:99;:153;;;-1:-1:-1;;6168:25:0;;;;;5918:304::o;1058:2059::-;1116:13;1146:4;:11;1161:1;1146:16;1142:31;;;-1:-1:-1;;1164:9:0;;;;;;;;;-1:-1:-1;1164:9:0;;;1058:2059::o;1142:31::-;1225:19;:88;;;;;;;;;;;;;;;;;;;1365:18;1411:1;1392:4;:11;1406:1;1392:15;;;;:::i;:::-;1391:21;;;;:::i;:::-;1386:27;;:1;:27;:::i;:::-;1365:48;-1:-1:-1;1496:20:0;1530:15;1365:48;1543:2;1530:15;:::i;:::-;1519:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1519:27:0;;1496:50;;1643:10;1635:6;1628:26;1738:1;1731:5;1727:13;1797:4;1848;1842:11;1833:7;1829:25;1944:2;1936:6;1932:15;2017:763;2052:6;2043:7;2040:19;2017:763;;;2155:1;2146:7;2142:15;2131:26;;2194:7;2188:14;2320:4;2312:5;2308:2;2304:14;2300:25;2290:8;2286:40;2280:47;2269:9;2261:67;2374:1;2363:9;2359:17;2346:30;;2453:4;2445:5;2441:2;2437:14;2433:25;2423:8;2419:40;2413:47;2402:9;2394:67;2507:1;2496:9;2492:17;2479:30;;2585:4;2577:5;2574:1;2570:13;2566:24;2556:8;2552:39;2546:46;2535:9;2527:66;2639:1;2628:9;2624:17;2611:30;;2709:4;2702:5;2698:16;2688:8;2684:31;2678:38;2667:9;2659:58;-1:-1:-1;2763:1:0;2748:17;2017:763;;;2853:1;2846:4;2840:11;2836:19;2878:1;2873:92;;;;2988:1;2983:90;;;;2829:244;;2873:92;2929:16;2910:17;;;2903:43;2873:92;;2983:90;3039:14;3020:17;;;3013:41;2829:244;-1:-1:-1;3103:6:0;;1058:2059;-1:-1:-1;;;;;;;;1058:2059:0:o;8119:185::-;8207:18;;;8215:10;8207:18;;:64;;-1:-1:-1;8229:22:0;;;:16;:22;;;;;;;;;;;8252:10;8229:34;;;;;;;;;;:42;;:34;:42;8207:64;8199:97;;;;;;;26291:2:1;8199:97:0;;;26273:21:1;26330:2;26310:18;;;26303:30;26369:22;26349:18;;;26342:50;26409:18;;8199:97:0;26089:344:1;8199:97:0;8119:185;:::o;7609:502::-;7781:16;;;7773:41;;;;;;;26640:2:1;7773:41:0;;;26622:21:1;26679:2;26659:18;;;26652:30;26718:14;26698:18;;;26691:42;26750:18;;7773:41:0;26438:336:1;7773:41:0;7832:9;7827:211;7847:14;;;7827:211;;;7883:10;7896:3;;7900:1;7896:6;;;;;;;:::i;:::-;;;;;;;7883:19;;7917:13;7933:6;;7940:1;7933:9;;;;;;;:::i;:::-;7957:15;;;;;;;:9;7933;7957:15;;;;;;;:19;;;;;;;:28;;7933:9;;;;;;;;;;-1:-1:-1;7933:9:0;;7957:19;-1:-1:-1;7957:15:0;:28;;7933:9;;7957:28;:::i;:::-;;;;-1:-1:-1;;8000:13:0;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:26;;8021:5;;8000:13;:26;;8021:5;;8000:26;:::i;:::-;;;;;;;;7868:170;;7863:3;;;;;:::i;:::-;;;;7827:211;;;;8087:2;8055:48;;8081:4;8055:48;;8069:10;8055:48;;;8091:3;;8096:6;;8055:48;;;;;;;;;:::i;:::-;;;;;;;;7609:502;;;;;;:::o;6640:302::-;6756:16;;;6748:41;;;;;;;26640:2:1;6748:41:0;;;26622:21:1;26679:2;26659:18;;;26652:30;26718:14;26698:18;;;26691:42;26750:18;;6748:41:0;26438:336:1;6748:41:0;6802:13;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:26;;6823:5;;6802:13;:26;;6823:5;;6802:26;:::i;:::-;;;;-1:-1:-1;;6839:15:0;;;;:11;:15;;;;;:24;;6858:5;;6839:15;:24;;6858:5;;6839:24;:::i;:::-;;;;-1:-1:-1;;6881:53:0;;;27477:25:1;;;27533:2;27518:18;;27511:34;;;6881:53:0;;;;6916:1;;6896:10;;6881:53;;27450:18:1;6881:53:0;;;;;;;6640:302;;;:::o;7268:333::-;7417:16;;;7409:41;;;;;;;26640:2:1;7409:41:0;;;26622:21:1;26679:2;26659:18;;;26652:30;26718:14;26698:18;;;26691:42;26750:18;;7409:41:0;26438:336:1;7409:41:0;7463:15;;;;;;;:9;:15;;;;;;;;:19;;;;;;;;:28;;7486:5;;7463:15;:28;;7486:5;;7463:28;:::i;:::-;;;;-1:-1:-1;;7502:13:0;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:26;;7523:5;;7502:13;:26;;7523:5;;7502:26;:::i;:::-;;;;-1:-1:-1;;7546:47:0;;;27477:25:1;;;27533:2;27518:18;;27511:34;;;7546:47:0;;;;;;;;;7561:10;;7546:47;;27450:18:1;7546:47:0;;;;;;;7268:333;;;;:::o;448:242::-;577:12;595:2;:7;;610:6;595:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;576:45;;;640:7;632:50;;;;;;;27968:2:1;632:50:0;;;27950:21:1;28007:2;27987:18;;;27980:30;28046:32;28026:18;;;28019:60;28096:18;;632:50:0;27766:354:1;632:50:0;505:185;448:242;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;656:177::-;741:66;734:5;730:78;723:5;720:89;710:117;;823:1;820;813:12;838:245;896:6;949:2;937:9;928:7;924:23;920:32;917:52;;;965:1;962;955:12;917:52;1004:9;991:23;1023:30;1047:5;1023:30;:::i;:::-;1072:5;838:245;-1:-1:-1;;;838:245:1:o;1280:180::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:52;;;1408:1;1405;1398:12;1360:52;-1:-1:-1;1431:23:1;;1280:180;-1:-1:-1;1280:180:1:o;1465:258::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1637:11;;;1631:18;1618:11;;;1611:39;1583:2;1576:10;1547:113;;;1678:6;1675:1;1672:13;1669:48;;;1713:1;1704:6;1699:3;1695:16;1688:27;1669:48;;1465:258;;;:::o;1728:317::-;1770:3;1808:5;1802:12;1835:6;1830:3;1823:19;1851:63;1907:6;1900:4;1895:3;1891:14;1884:4;1877:5;1873:16;1851:63;:::i;:::-;1959:2;1947:15;1964:66;1943:88;1934:98;;;;2034:4;1930:109;;1728:317;-1:-1:-1;;1728:317:1:o;2050:220::-;2199:2;2188:9;2181:21;2162:4;2219:45;2260:2;2249:9;2245:18;2237:6;2219:45;:::i;2275:248::-;2343:6;2351;2404:2;2392:9;2383:7;2379:23;2375:32;2372:52;;;2420:1;2417;2410:12;2372:52;-1:-1:-1;;2443:23:1;;;2513:2;2498:18;;;2485:32;;-1:-1:-1;2275:248:1:o;2830:367::-;2893:8;2903:6;2957:3;2950:4;2942:6;2938:17;2934:27;2924:55;;2975:1;2972;2965:12;2924:55;-1:-1:-1;2998:20:1;;3041:18;3030:30;;3027:50;;;3073:1;3070;3063:12;3027:50;3110:4;3102:6;3098:17;3086:29;;3170:3;3163:4;3153:6;3150:1;3146:14;3138:6;3134:27;3130:38;3127:47;3124:67;;;3187:1;3184;3177:12;3202:347;3253:8;3263:6;3317:3;3310:4;3302:6;3298:17;3294:27;3284:55;;3335:1;3332;3325:12;3284:55;-1:-1:-1;3358:20:1;;3401:18;3390:30;;3387:50;;;3433:1;3430;3423:12;3387:50;3470:4;3462:6;3458:17;3446:29;;3522:3;3515:4;3506:6;3498;3494:19;3490:30;3487:39;3484:59;;;3539:1;3536;3529:12;3554:1210;3714:6;3722;3730;3738;3746;3754;3762;3770;3823:3;3811:9;3802:7;3798:23;3794:33;3791:53;;;3840:1;3837;3830:12;3791:53;3863:29;3882:9;3863:29;:::i;:::-;3853:39;;3911:38;3945:2;3934:9;3930:18;3911:38;:::i;:::-;3901:48;;4000:2;3989:9;3985:18;3972:32;4023:18;4064:2;4056:6;4053:14;4050:34;;;4080:1;4077;4070:12;4050:34;4119:70;4181:7;4172:6;4161:9;4157:22;4119:70;:::i;:::-;4208:8;;-1:-1:-1;4093:96:1;-1:-1:-1;4296:2:1;4281:18;;4268:32;;-1:-1:-1;4312:16:1;;;4309:36;;;4341:1;4338;4331:12;4309:36;4380:72;4444:7;4433:8;4422:9;4418:24;4380:72;:::i;:::-;4471:8;;-1:-1:-1;4354:98:1;-1:-1:-1;4559:3:1;4544:19;;4531:33;;-1:-1:-1;4576:16:1;;;4573:36;;;4605:1;4602;4595:12;4573:36;;4644:60;4696:7;4685:8;4674:9;4670:24;4644:60;:::i;:::-;3554:1210;;;;-1:-1:-1;3554:1210:1;;-1:-1:-1;3554:1210:1;;;;;;4723:8;-1:-1:-1;;;3554:1210:1:o;4769:773::-;4891:6;4899;4907;4915;4968:2;4956:9;4947:7;4943:23;4939:32;4936:52;;;4984:1;4981;4974:12;4936:52;5024:9;5011:23;5053:18;5094:2;5086:6;5083:14;5080:34;;;5110:1;5107;5100:12;5080:34;5149:70;5211:7;5202:6;5191:9;5187:22;5149:70;:::i;:::-;5238:8;;-1:-1:-1;5123:96:1;-1:-1:-1;5326:2:1;5311:18;;5298:32;;-1:-1:-1;5342:16:1;;;5339:36;;;5371:1;5368;5361:12;5339:36;;5410:72;5474:7;5463:8;5452:9;5448:24;5410:72;:::i;:::-;4769:773;;;;-1:-1:-1;5501:8:1;-1:-1:-1;;;;4769:773:1:o;5547:632::-;5718:2;5770:21;;;5840:13;;5743:18;;;5862:22;;;5689:4;;5718:2;5941:15;;;;5915:2;5900:18;;;5689:4;5984:169;5998:6;5995:1;5992:13;5984:169;;;6059:13;;6047:26;;6128:15;;;;6093:12;;;;6020:1;6013:9;5984:169;;;-1:-1:-1;6170:3:1;;5547:632;-1:-1:-1;;;;;;5547:632:1:o;6308:616::-;6360:3;6398:5;6392:12;6425:6;6420:3;6413:19;6451:4;6492:2;6487:3;6483:12;6517:11;6544;6537:18;;6594:6;6591:1;6587:14;6580:5;6576:26;6564:38;;6636:2;6629:5;6625:14;6657:1;6667:231;6681:6;6678:1;6675:13;6667:231;;;6752:5;6746:4;6742:16;6737:3;6730:29;6780:38;6813:4;6804:6;6798:13;6780:38;:::i;:::-;6876:12;;;;6772:46;-1:-1:-1;6841:15:1;;;;6703:1;6696:9;6667:231;;;-1:-1:-1;6914:4:1;;6308:616;-1:-1:-1;;;;;;;6308:616:1:o;6929:1403::-;7104:2;7093:9;7086:21;7162:42;7153:6;7147:13;7143:62;7138:2;7127:9;7123:18;7116:90;7067:4;7253:2;7245:6;7241:15;7235:22;7293:4;7288:2;7277:9;7273:18;7266:32;7321:52;7368:3;7357:9;7353:19;7339:12;7321:52;:::i;:::-;7307:66;;7422:2;7414:6;7410:15;7404:22;7445:66;7575:2;7563:9;7555:6;7551:22;7547:31;7542:2;7531:9;7527:18;7520:59;7602:41;7636:6;7620:14;7602:41;:::i;:::-;7588:55;;7692:2;7684:6;7680:15;7674:22;7652:44;;7761:2;7749:9;7741:6;7737:22;7733:31;7727:3;7716:9;7712:19;7705:60;7788:41;7822:6;7806:14;7788:41;:::i;:::-;7774:55;;7878:3;7870:6;7866:16;7860:23;7838:45;;7948:2;7936:9;7928:6;7924:22;7920:31;7914:3;7903:9;7899:19;7892:60;7975:41;8009:6;7993:14;7975:41;:::i;:::-;7961:55;;8065:3;8057:6;8053:16;8047:23;8025:45;;8079:55;8129:3;8118:9;8114:19;8098:14;6261:34;6250:46;6238:59;;6184:119;8079:55;8183:3;8175:6;8171:16;8165:23;8143:45;;8254:2;8242:9;8234:6;8230:22;8226:31;8219:4;8208:9;8204:20;8197:61;;8275:51;8319:6;8303:14;8275:51;:::i;:::-;8267:59;6929:1403;-1:-1:-1;;;;;6929:1403:1:o;8337:188::-;8405:20;;8465:34;8454:46;;8444:57;;8434:85;;8515:1;8512;8505:12;8530:1656;8721:6;8729;8737;8745;8753;8761;8769;8777;8785;8793;8801:7;8855:3;8843:9;8834:7;8830:23;8826:33;8823:53;;;8872:1;8869;8862:12;8823:53;8895:18;8953:2;8941:9;8928:23;8925:31;8922:51;;;8969:1;8966;8959:12;8922:51;9008:75;9075:7;9062:9;9049:23;9038:9;9034:39;9008:75;:::i;:::-;9102:8;;-1:-1:-1;9129:8:1;-1:-1:-1;9180:2:1;9165:18;;9152:32;9149:40;-1:-1:-1;9146:60:1;;;9202:1;9199;9192:12;9146:60;9241:84;9317:7;9310:2;9299:9;9295:18;9282:32;9271:9;9267:48;9241:84;:::i;:::-;9344:8;;-1:-1:-1;9371:8:1;-1:-1:-1;9422:2:1;9407:18;;9394:32;9391:40;-1:-1:-1;9388:60:1;;;9444:1;9441;9434:12;9388:60;9483:84;9559:7;9552:2;9541:9;9537:18;9524:32;9513:9;9509:48;9483:84;:::i;:::-;9586:8;;-1:-1:-1;9613:8:1;-1:-1:-1;9664:2:1;9649:18;;9636:32;9633:40;-1:-1:-1;9630:60:1;;;9686:1;9683;9676:12;9630:60;9725:84;9801:7;9794:2;9783:9;9779:18;9766:32;9755:9;9751:48;9725:84;:::i;:::-;9828:8;;-1:-1:-1;9855:8:1;-1:-1:-1;9882:39:1;9916:3;9901:19;;9882:39;:::i;:::-;9872:49;;9971:2;9964:3;9953:9;9949:19;9936:33;9933:41;9930:61;;;9987:1;9984;9977:12;9930:61;;10027:97;10116:7;10108:3;10097:9;10093:19;10080:33;10069:9;10065:49;10027:97;:::i;:::-;10143:8;10133:18;;10171:9;10160:20;;;;8530:1656;;;;;;;;;;;;;;:::o;10388:347::-;10453:6;10461;10514:2;10502:9;10493:7;10489:23;10485:32;10482:52;;;10530:1;10527;10520:12;10482:52;10553:29;10572:9;10553:29;:::i;:::-;10543:39;;10632:2;10621:9;10617:18;10604:32;10679:5;10672:13;10665:21;10658:5;10655:32;10645:60;;10701:1;10698;10691:12;10645:60;10724:5;10714:15;;;10388:347;;;;;:::o;10740:163::-;10807:20;;10867:10;10856:22;;10846:33;;10836:61;;10893:1;10890;10883:12;10908:330;10983:6;10991;10999;11052:2;11040:9;11031:7;11027:23;11023:32;11020:52;;;11068:1;11065;11058:12;11020:52;11091:28;11109:9;11091:28;:::i;:::-;11081:38;;11138:37;11171:2;11160:9;11156:18;11138:37;:::i;:::-;11128:47;;11194:38;11228:2;11217:9;11213:18;11194:38;:::i;:::-;11184:48;;10908:330;;;;;:::o;11243:945::-;11604:42;11596:6;11592:55;11581:9;11574:74;11684:3;11679:2;11668:9;11664:18;11657:31;11555:4;11711:46;11752:3;11741:9;11737:19;11729:6;11711:46;:::i;:::-;11805:9;11797:6;11793:22;11788:2;11777:9;11773:18;11766:50;11839:33;11865:6;11857;11839:33;:::i;:::-;11825:47;;11920:9;11912:6;11908:22;11903:2;11892:9;11888:18;11881:50;11954:33;11980:6;11972;11954:33;:::i;:::-;11940:47;;12036:9;12028:6;12024:22;12018:3;12007:9;12003:19;11996:51;12064:33;12090:6;12082;12064:33;:::i;:::-;12056:41;;;12146:34;12138:6;12134:47;12128:3;12117:9;12113:19;12106:76;11243:945;;;;;;;;;:::o;12193:260::-;12261:6;12269;12322:2;12310:9;12301:7;12297:23;12293:32;12290:52;;;12338:1;12335;12328:12;12290:52;12361:29;12380:9;12361:29;:::i;:::-;12351:39;;12409:38;12443:2;12432:9;12428:18;12409:38;:::i;:::-;12399:48;;12193:260;;;;;:::o;12458:695::-;12564:6;12572;12580;12588;12596;12604;12657:3;12645:9;12636:7;12632:23;12628:33;12625:53;;;12674:1;12671;12664:12;12625:53;12697:29;12716:9;12697:29;:::i;:::-;12687:39;;12745:38;12779:2;12768:9;12764:18;12745:38;:::i;:::-;12735:48;;12830:2;12819:9;12815:18;12802:32;12792:42;;12881:2;12870:9;12866:18;12853:32;12843:42;;12936:3;12925:9;12921:19;12908:33;12964:18;12956:6;12953:30;12950:50;;;12996:1;12993;12986:12;12950:50;13035:58;13085:7;13076:6;13065:9;13061:22;13035:58;:::i;:::-;12458:695;;;;-1:-1:-1;12458:695:1;;-1:-1:-1;12458:695:1;;13112:8;;12458:695;-1:-1:-1;;;12458:695:1:o;13389:184::-;13441:77;13438:1;13431:88;13538:4;13535:1;13528:15;13562:4;13559:1;13552:15;13578:184;13630:77;13627:1;13620:88;13727:4;13724:1;13717:15;13751:4;13748:1;13741:15;13767:120;13807:1;13833;13823:35;;13838:18;;:::i;:::-;-1:-1:-1;13872:9:1;;13767:120::o;13892:112::-;13924:1;13950;13940:35;;13955:18;;:::i;:::-;-1:-1:-1;13989:9:1;;13892:112::o;14009:184::-;14061:77;14058:1;14051:88;14158:4;14155:1;14148:15;14182:4;14179:1;14172:15;14198:437;14277:1;14273:12;;;;14320;;;14341:61;;14395:4;14387:6;14383:17;14373:27;;14341:61;14448:2;14440:6;14437:14;14417:18;14414:38;14411:218;;;14485:77;14482:1;14475:88;14586:4;14583:1;14576:15;14614:4;14611:1;14604:15;14411:218;;14198:437;;;:::o;14766:1088::-;14851:12;;14816:3;;14906:1;14926:18;;;;14979;;;;15006:61;;15060:4;15052:6;15048:17;15038:27;;15006:61;15086:2;15134;15126:6;15123:14;15103:18;15100:38;15097:218;;;15171:77;15168:1;15161:88;15272:4;15269:1;15262:15;15300:4;15297:1;15290:15;15097:218;15331:18;15358:162;;;;15534:1;15529:319;;;;15324:524;;15358:162;15406:66;15395:9;15391:82;15386:3;15379:95;15503:6;15498:3;15494:16;15487:23;;15358:162;;15529:319;14713:1;14706:14;;;14750:4;14737:18;;15623:1;15637:165;15651:6;15648:1;15645:13;15637:165;;;15729:14;;15716:11;;;15709:35;15772:16;;;;15666:10;;15637:165;;;15641:3;;15831:6;15826:3;15822:16;15815:23;;15324:524;;;;;;;14766:1088;;;;:::o;15859:1899::-;16803:66;16798:3;16791:79;16773:3;16889:46;16932:1;16927:3;16923:11;16915:6;16889:46;:::i;:::-;16955:66;16951:2;16944:78;17041:46;17083:2;17079;17075:11;17067:6;17041:46;:::i;:::-;17031:56;;17107:66;17103:2;17096:78;17193:46;17235:2;17231;17227:11;17219:6;17193:46;:::i;:::-;17183:56;;17259:66;17255:2;17248:78;17355:66;17350:2;17346;17342:11;17335:87;17441:46;17483:2;17479;17475:11;17467:6;17441:46;:::i;:::-;17431:56;;17507:66;17503:2;17496:78;17593:46;17635:2;17631;17627:11;17619:6;17593:46;:::i;:::-;17659:66;17648:78;;17750:1;17742:10;;15859:1899;-1:-1:-1;;;;;;;;15859:1899:1:o;17763:448::-;18025:31;18020:3;18013:44;17995:3;18086:6;18080:13;18102:62;18157:6;18152:2;18147:3;18143:12;18136:4;18128:6;18124:17;18102:62;:::i;:::-;18184:16;;;;18202:2;18180:25;;17763:448;-1:-1:-1;;17763:448:1:o;18569:401::-;18669:6;18664:3;18657:19;18639:3;18699:66;18691:6;18688:78;18685:98;;;18779:1;18776;18769:12;18685:98;18815:6;18812:1;18808:14;18867:8;18860:5;18853:4;18848:3;18844:14;18831:45;18944:1;18899:18;;18919:4;18895:29;18933:13;;;-1:-1:-1;18895:29:1;;18569:401;-1:-1:-1;;18569:401:1:o;18975:325::-;19063:6;19058:3;19051:19;19115:6;19108:5;19101:4;19096:3;19092:14;19079:43;;19167:1;19160:4;19151:6;19146:3;19142:16;19138:27;19131:38;19033:3;19289:4;19219:66;19214:2;19206:6;19202:15;19198:88;19193:3;19189:98;19185:109;19178:116;;18975:325;;;;:::o;19305:930::-;19657:4;19686:42;19767:2;19759:6;19755:15;19744:9;19737:34;19819:2;19811:6;19807:15;19802:2;19791:9;19787:18;19780:43;;19859:3;19854:2;19843:9;19839:18;19832:31;19886:74;19955:3;19944:9;19940:19;19932:6;19924;19886:74;:::i;:::-;20008:9;20000:6;19996:22;19991:2;19980:9;19976:18;19969:50;20042:61;20096:6;20088;20080;20042:61;:::i;:::-;20028:75;;20152:9;20144:6;20140:22;20134:3;20123:9;20119:19;20112:51;20180:49;20222:6;20214;20206;20180:49;:::i;:::-;20172:57;19305:930;-1:-1:-1;;;;;;;;;;;19305:930:1:o;20240:249::-;20309:6;20362:2;20350:9;20341:7;20337:23;20333:32;20330:52;;;20378:1;20375;20368:12;20330:52;20410:9;20404:16;20429:30;20453:5;20429:30;:::i;20841:184::-;20893:77;20890:1;20883:88;20990:4;20987:1;20980:15;21014:4;21011:1;21004:15;21030:186;21089:6;21142:2;21130:9;21121:7;21117:23;21113:32;21110:52;;;21158:1;21155;21148:12;21110:52;21181:29;21200:9;21181:29;:::i;21221:195::-;21260:3;21291:66;21284:5;21281:77;21278:103;;;21361:18;;:::i;:::-;-1:-1:-1;21408:1:1;21397:13;;21221:195::o;21421:270::-;21460:7;21492:18;21537:2;21534:1;21530:10;21567:2;21564:1;21560:10;21623:3;21619:2;21615:12;21610:3;21607:21;21600:3;21593:11;21586:19;21582:47;21579:73;;;21632:18;;:::i;:::-;21672:13;;21421:270;-1:-1:-1;;;;21421:270:1:o;21696:128::-;21736:3;21767:1;21763:6;21760:1;21757:13;21754:39;;;21773:18;;:::i;:::-;-1:-1:-1;21809:9:1;;21696:128::o;21829:581::-;21907:4;21913:6;21973:11;21960:25;22063:66;22052:8;22036:14;22032:29;22028:102;22008:18;22004:127;21994:155;;22145:1;22142;22135:12;21994:155;22172:33;;22224:20;;;-1:-1:-1;22267:18:1;22256:30;;22253:50;;;22299:1;22296;22289:12;22253:50;22332:4;22320:17;;-1:-1:-1;22363:14:1;22359:27;;;22349:38;;22346:58;;;22400:1;22397;22390:12;22754:236;22793:3;22821:18;22866:2;22863:1;22859:10;22896:2;22893:1;22889:10;22927:3;22923:2;22919:12;22914:3;22911:21;22908:47;;;22935:18;;:::i;:::-;22971:13;;22754:236;-1:-1:-1;;;;22754:236:1:o;24375:125::-;24415:4;24443:1;24440;24437:8;24434:34;;;24448:18;;:::i;:::-;-1:-1:-1;24485:9:1;;24375:125::o;24505:287::-;24545:7;24577:34;24638:2;24635:1;24631:10;24668:2;24665:1;24661:10;24724:3;24720:2;24716:12;24711:3;24708:21;24701:3;24694:11;24687:19;24683:47;24680:73;;;24733:18;;:::i;24797:216::-;24837:1;24863:34;24924:2;24921:1;24917:10;24946:3;24936:37;;24953:18;;:::i;:::-;24991:10;;24987:20;;;;;24797:216;-1:-1:-1;;24797:216:1:o;25241:610::-;25473:4;25502:42;25583:2;25575:6;25571:15;25560:9;25553:34;25635:2;25627:6;25623:15;25618:2;25607:9;25603:18;25596:43;;25675:6;25670:2;25659:9;25655:18;25648:34;25718:6;25713:2;25702:9;25698:18;25691:34;25762:3;25756;25745:9;25741:19;25734:32;25783:62;25840:3;25829:9;25825:19;25817:6;25809;25783:62;:::i;:::-;25775:70;25241:610;-1:-1:-1;;;;;;;;25241:610:1:o;25856:228::-;25896:7;26022:1;25954:66;25950:74;25947:1;25944:81;25939:1;25932:9;25925:17;25921:105;25918:131;;;26029:18;;:::i;:::-;-1:-1:-1;26069:9:1;;25856:228::o;26779:519::-;27056:2;27045:9;27038:21;27019:4;27082:73;27151:2;27140:9;27136:18;27128:6;27120;27082:73;:::i;:::-;27203:9;27195:6;27191:22;27186:2;27175:9;27171:18;27164:50;27231:61;27285:6;27277;27269;27231:61;:::i;:::-;27223:69;26779:519;-1:-1:-1;;;;;;;26779:519:1:o

Swarm Source

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