ETH Price: $3,401.00 (+1.99%)

Contract

0x182f9543d014C9649F054d3a0e1ECCD488245f6c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve192132862024-02-12 16:58:47320 days ago1707757127IN
0x182f9543...488245f6c
0 ETH0.0017213534.97409092
Approve192132622024-02-12 16:53:59320 days ago1707756839IN
0x182f9543...488245f6c
0 ETH0.0020601641.85799399
Approve192132612024-02-12 16:53:47320 days ago1707756827IN
0x182f9543...488245f6c
0 ETH0.002111142.89292651
Approve192132612024-02-12 16:53:47320 days ago1707756827IN
0x182f9543...488245f6c
0 ETH0.0043259187.89292651
Approve192132602024-02-12 16:53:35320 days ago1707756815IN
0x182f9543...488245f6c
0 ETH0.0020372441.39237105
Approve192132602024-02-12 16:53:35320 days ago1707756815IN
0x182f9543...488245f6c
0 ETH0.0021110742.89237105
Approve192132592024-02-12 16:53:23320 days ago1707756803IN
0x182f9543...488245f6c
0 ETH0.0021346743.37184542
Approve192132582024-02-12 16:53:11320 days ago1707756791IN
0x182f9543...488245f6c
0 ETH0.0019813540.25661688
Approve192132582024-02-12 16:53:11320 days ago1707756791IN
0x182f9543...488245f6c
0 ETH0.0019813540.25661688
Approve192132582024-02-12 16:53:11320 days ago1707756791IN
0x182f9543...488245f6c
0 ETH0.0023258747.25661688
Approve192132562024-02-12 16:52:47320 days ago1707756767IN
0x182f9543...488245f6c
0 ETH0.001932539.26421159
Approve192132562024-02-12 16:52:47320 days ago1707756767IN
0x182f9543...488245f6c
0 ETH0.001932539.26421159
Approve192132562024-02-12 16:52:47320 days ago1707756767IN
0x182f9543...488245f6c
0 ETH0.0020309441.26421159
Approve192132552024-02-12 16:52:35320 days ago1707756755IN
0x182f9543...488245f6c
0 ETH0.0021845844.38592649
Approve192132552024-02-12 16:52:35320 days ago1707756755IN
0x182f9543...488245f6c
0 ETH0.0031689464.38592649
Approve192132542024-02-12 16:52:23320 days ago1707756743IN
0x182f9543...488245f6c
0 ETH0.001927939.17076506
Approve192132532024-02-12 16:52:11320 days ago1707756731IN
0x182f9543...488245f6c
0 ETH0.0019541639.7041988
Approve192132532024-02-12 16:52:11320 days ago1707756731IN
0x182f9543...488245f6c
0 ETH0.0019541639.7041988
Approve192132532024-02-12 16:52:11320 days ago1707756731IN
0x182f9543...488245f6c
0 ETH0.0019541639.7041988
Approve192132532024-02-12 16:52:11320 days ago1707756731IN
0x182f9543...488245f6c
0 ETH0.0020525941.7041988
Approve192132532024-02-12 16:52:11320 days ago1707756731IN
0x182f9543...488245f6c
0 ETH0.0032830466.7041988
Approve192132472024-02-12 16:50:59320 days ago1707756659IN
0x182f9543...488245f6c
0 ETH0.0015937232.57948071
Set Whitelist192132412024-02-12 16:49:47320 days ago1707756587IN
0x182f9543...488245f6c
0 ETH0.0015827133.81659411
Set Whitelist192128942024-02-12 15:39:35320 days ago1707752375IN
0x182f9543...488245f6c
0 ETH0.0017603437.61181635
Set Whitelist192128672024-02-12 15:34:11320 days ago1707752051IN
0x182f9543...488245f6c
0 ETH0.0017213136.77797134
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WHEN

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 6: WHEN.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;
import "./ERC404.sol";
import "./Base64.sol";

contract WHEN is ERC404 {
    constructor(address _owner, uint256 _totalSupply)
        ERC404("WHEN 404", "WHEN", 18, _totalSupply, _owner)
    {
        balanceOf[_owner] = _totalSupply * 10**18;
        setWhitelist(_owner, true);
    }

    string[] private DCXSEWQs = [
        "#e6904e",
        "#fbb954",
        "#68934A",
        "#00ff33",
        "#a2a947",
        "#d5e04b",
        "#fbff86",
        "#165a4c",
        "#239063",
        "#1ebc73",
        "#91db69",
        "#cddf6c",
        "#007722",
        "#22eeff",
        "#547e64",
        "#92a984",
        "#b2ba90",
        "#0b5e65",
        "#0b8a8f",
        "#0eaf9b",
        "#30e1b9",
        "#8ff8e2"
    ];

    string[] private DYYSEWQs = [
        "#b33831",
        "#ea4f36",
        "#f57d4a",
        "#ae2334",
        "#e83b3b",
        "#a24b6f",
        "#cf657f",
        "#ed8099",
        "#831c5d",
        "#c32454",
        "#f04f78",
        "#f68181"
    ];
    string[] private JJHDIQWEs = [
        "#2147F5",
        "#ffdf31",
        "#3c4965",
        "#0a0829",
        "#646fd1",
        "#5F574F",
        "#83769C"
    ];

    function random(string memory input) internal pure returns (uint256) {
        return uint256(keccak256(abi.encodePacked(input)));
    }

    function ZEHAHAHA(uint256 tokenId) public view returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked("DCXSEWQ", toString(tokenId)))
        );
        return DCXSEWQs[rand % DCXSEWQs.length];
    }

    function HHJASYCD(uint256 tokenId) public view returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked("DYYSEWQ", toString(tokenId)))
        );
        return DYYSEWQs[rand % DYYSEWQs.length];
    }

    function KIWOIDSA(uint256 tokenId)
        public
        view
        returns (string memory)
    {
        uint256 rand = random(
            string(abi.encodePacked("JJHDIQWE", toString(tokenId)))
        );
        return JJHDIQWEs[rand % JJHDIQWEs.length];
    }

    function pluck(
        uint256 tokenId,
        string memory keyPrefix,
        string[] memory sourceArray
    ) internal pure returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked(keyPrefix, toString(tokenId)))
        );
        return sourceArray[rand % sourceArray.length];
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override
        returns (string memory)
    {
        string memory DCXSEWQ = ZEHAHAHA(tokenId);
        string memory JJHDIQWE = KIWOIDSA(tokenId);
        string memory DYYSEWQ = HHJASYCD(tokenId);

        string memory svg = string(
            abi.encodePacked(
                '<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 400 400" fill="none">',
                '<rect width="80" height="40" x="150" y="77" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="80" height="40" x="270" y="77" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="280" height="41" x="110" y="116" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="80" height="41" x="70" y="156" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="40" height="41" x="150" y="156" fill="#ffffff"/>',
                '<rect width="40" height="41" x="190" y="156" fill="#000000"/>',
                '<rect width="80" height="41" x="230" y="156" fill="#ffffff"/>',
                '<rect width="40" height="41" x="310" y="156" fill="#000000"/>',
                '<rect width="40" height="41" x="350" y="156" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="280" height="41" x="70" y="196" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="160" height="41" x="29" y="236" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="161" height="41" x="189" y="236" fill="',
                DYYSEWQ,
                '"/>',
                '<rect width="280" height="41" x="29" y="276" fill="',
                DCXSEWQ,
                '"/>',
                '<rect width="280" height="41" x="29" y="316" fill="',
                JJHDIQWE,
                '"/>',
                "</svg>"
            )
        );

        string memory json = Base64.encode(
            bytes(
                string(
                    abi.encodePacked(
                        '{"name": "WHEN 404 #',
                        toString(tokenId),
                        '", "description": "Guys, WHEN 404 SERRRR .", "image": "data:image/svg+xml;base64,',
                        Base64.encode(bytes(svg)),
                        '"}'
                    )
                )
            )
        );

        return string(abi.encodePacked("data:application/json;base64,", json));
    }

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
}

File 2 of 6: Base64.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Base64.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides a set of functions to operate with Base64 strings.
 */
library Base64 {
    /**
     * @dev Base64 Encoding/Decoding Table
     */
    string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /**
     * @dev Converts a `bytes` to its Bytes64 `string` representation.
     */
    function encode(bytes memory data) internal pure returns (string memory) {
        /**
         * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence
         * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol
         */
        if (data.length == 0) return "";

        // Loads the table into memory
        string memory table = _TABLE;

        // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter
        // and split into 4 numbers of 6 bits.
        // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up
        // - `data.length + 2`  -> Round up
        // - `/ 3`              -> Number of 3-bytes chunks
        // - `4 *`              -> 4 characters for each chunk
        string memory result = new string(4 * ((data.length + 2) / 3));

        /// @solidity memory-safe-assembly
        assembly {
            // Prepare the lookup table (skip the first "length" byte)
            let tablePtr := add(table, 1)

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

            // Run over the input, 3 bytes at a time
            for {
                let dataPtr := data
                let endPtr := add(data, mload(data))
            } lt(dataPtr, endPtr) {

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

                // To write each character, shift the 3 bytes (18 bits) chunk
                // 4 times in blocks of 6 bits for each character (18, 12, 6, 0)
                // and apply logical AND with 0x3F which is the number of
                // the previous character in the ASCII table prior to the Base64 Table
                // The result is then added to the table to get the character to write,
                // and finally write it in the result pointer but with a left shift
                // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits

                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance
            }

            // When data `bytes` is not exactly 3 bytes long
            // it is padded with `=` characters at the end
            switch mod(mload(data), 3)
            case 1 {
                mstore8(sub(resultPtr, 1), 0x3d)
                mstore8(sub(resultPtr, 2), 0x3d)
            }
            case 2 {
                mstore8(sub(resultPtr, 1), 0x3d)
            }
        }

        return result;
    }
}

File 3 of 6: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

File 4 of 6: ERC404.sol
// SPDX-License-Identifier: MIT

import "./Ownable2Step.sol";
import "./Ownable.sol";
pragma solidity ^0.8.0;

abstract contract ERC721Receiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721Receiver.onERC721Received.selector;
    }
}

abstract contract ERC404 is Ownable2Step {


    event ERC20Transfer(bytes32 indexed topic0, address indexed from, address indexed to, uint256 tokens) anonymous;
    event Approval(address indexed owner, address indexed spender, uint256 amount);
    event Transfer( address indexed from, address indexed to, uint256 indexed id);
    event ERC721Approval(address indexed owner, address indexed spender, uint256 indexed id );
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved );
    bytes32 constant private TRANSFER_TOPIC = keccak256(bytes("Transfer(address,address,uint256)"));

    error NotFound();
    error AlreadyExists();
    error InvalidRecipient();
    error InvalidSender();
    error UnsafeRecipient();
    error Unauthorized();
    error InvalidOwner();

    // Metadata
    /// @dev Token name
    string public name;

    /// @dev Token symbol
    string public symbol;

    /// @dev Decimals for fractional representation
    uint8 public immutable decimals;

    /// @dev Total supply in fractionalized representation
    uint256 public immutable totalSupply;

    /// @dev Current mint counter, monotonically increasing to ensure accurate ownership
    uint256 public minted;

    // Mappings
    /// @dev Balance of user in fractional representation
    mapping(address => uint256) public balanceOf;

    /// @dev Allowance of user in fractional representation
    mapping(address => mapping(address => uint256)) public allowance;

    /// @dev Approval in native representaion
    mapping(uint256 => address) public getApproved;

    /// @dev Approval for all in native representation
    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /// @dev Owner of id in native representation
    mapping(uint256 => address) internal _ownerOf;

    /// @dev Array of owned ids in native representation
    mapping(address => uint256[]) internal _owned;

    /// @dev Tracks indices for the _owned mapping
    mapping(uint256 => uint256) internal _ownedIndex;

    /// @dev Addresses whitelisted from minting / burning for gas savings (pairs, routers, etc)
    mapping(address => bool) public whitelist;

    // Constructor
    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _totalNativeSupply,
        address _owner
    ) Ownable(_owner) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalNativeSupply * (10 ** decimals);
    }

    /// @notice Initialization function to set pairs / etc
    ///         saving gas by avoiding mint / burn on unnecessary targets
    function setWhitelist(address target, bool state) public onlyOwner {
        whitelist[target] = state;
    }

    /// @notice Function to find owner of a given native token
    function ownerOf(uint256 id) public view virtual returns (address owner) {
        owner = _ownerOf[id];

        if (owner == address(0)) {
            revert NotFound();
        }
    }

    /// @notice tokenURI must be implemented by child contract
    function tokenURI(uint256 id) public view virtual returns (string memory);

    /// @notice Function for token approvals
    /// @dev This function assumes id / native if amount less than or equal to current max id
    function approve(
        address spender,
        uint256 amountOrId
    ) public virtual returns (bool) {
        if (amountOrId <= minted && amountOrId > 0) {
            address owner = _ownerOf[amountOrId];

            if (msg.sender != owner && !isApprovedForAll[owner][msg.sender]) {
                revert Unauthorized();
            }

            getApproved[amountOrId] = spender;

            emit Approval(owner, spender, amountOrId);
        } else {
            allowance[msg.sender][spender] = amountOrId;

            emit Approval(msg.sender, spender, amountOrId);
        }

        return true;
    }

    /// @notice Function native approvals
    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

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

    /// @notice Function for mixed transfers
    /// @dev This function assumes id / native if amount less than or equal to current max id
    function transferFrom(
        address from,
        address to,
        uint256 amountOrId
    ) public virtual {
        if (amountOrId <= minted) {
            if (from != _ownerOf[amountOrId]) {
                revert InvalidSender();
            }

            if (to == address(0)) {
                revert InvalidRecipient();
            }

            if (
                msg.sender != from &&
                !isApprovedForAll[from][msg.sender] &&
                msg.sender != getApproved[amountOrId]
            ) {
                revert Unauthorized();
            }

            balanceOf[from] -= _getUnit();

            unchecked {
                balanceOf[to] += _getUnit();
            }

            _ownerOf[amountOrId] = to;
            delete getApproved[amountOrId];

            // update _owned for sender
            uint256 updatedId = _owned[from][_owned[from].length - 1];
            _owned[from][_ownedIndex[amountOrId]] = updatedId;
            // pop
            _owned[from].pop();
            // update index for the moved id
            _ownedIndex[updatedId] = _ownedIndex[amountOrId];
            // push token to to owned
            _owned[to].push(amountOrId);
            // update index for to owned
            _ownedIndex[amountOrId] = _owned[to].length - 1;

            emit Transfer(from, to, amountOrId);
            emit ERC20Transfer(TRANSFER_TOPIC, from, to, _getUnit());
        } else {
            uint256 allowed = allowance[from][msg.sender];

            if (allowed != type(uint256).max)
                allowance[from][msg.sender] = allowed - amountOrId;

            _transfer(from, to, amountOrId);
        }
    }

    /// @notice Function for fractional transfers
    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    /// @notice Function for native transfers with contract support
    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, "") !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    /// @notice Function for native transfers with contract support and callback data
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, data) !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    /// @notice Internal function for fractional transfers
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual returns (bool) {
        uint256 unit = _getUnit();
        uint256 balanceBeforeSender = balanceOf[from];
        uint256 balanceBeforeReceiver = balanceOf[to];

        balanceOf[from] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        // Skip burn for certain addresses to save gas
        if (!whitelist[from]) {
            uint256 tokens_to_burn = (balanceBeforeSender / unit) -
                (balanceOf[from] / unit);
            for (uint256 i = 0; i < tokens_to_burn; i++) {
                _burn(from);
            }
        }

        // Skip minting for certain addresses to save gas
        if (!whitelist[to]) {
            uint256 tokens_to_mint = (balanceOf[to] / unit) -
                (balanceBeforeReceiver / unit);
            for (uint256 i = 0; i < tokens_to_mint; i++) {
                _mint(to);
            }
        }

        emit ERC20Transfer(TRANSFER_TOPIC, from, to, amount);
        return true;
    }

    // Internal utility logic
    function _getUnit() internal view returns (uint256) {
        return 10 ** decimals;
    }

    function _mint(address to) internal virtual {
        if (to == address(0)) {
            revert InvalidRecipient();
        }

        unchecked {
            minted++;
        }

        uint256 id = minted;

        if (_ownerOf[id] != address(0)) {
            revert AlreadyExists();
        }

        _ownerOf[id] = to;
        _owned[to].push(id);
        _ownedIndex[id] = _owned[to].length - 1;

        emit Transfer(address(0), to, id);
    }

    function _burn(address from) internal virtual {
        if (from == address(0)) {
            revert InvalidSender();
        }

        uint256 id = _owned[from][_owned[from].length - 1];
        _owned[from].pop();
        delete _ownedIndex[id];
        delete _ownerOf[id];
        delete getApproved[id];

        emit Transfer(from, address(0), id);
    }

    function _setNameSymbol(
        string memory _name,
        string memory _symbol
    ) internal {
        name = _name;
        symbol = _symbol;
    }
}

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 6: Ownable2Step.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol)

pragma solidity ^0.8.20;

import {Ownable} from "./Ownable.sol";

/**
 * @dev Contract module which provides access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is specified at deployment time in the constructor for `Ownable`. This
 * can later be changed with {transferOwnership} and {acceptOwnership}.
 *
 * This module is used through inheritance. It will make available all functions
 * from parent (Ownable).
 */
abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Returns the address of the pending owner.
     */
    function pendingOwner() public view virtual returns (address) {
        return _pendingOwner;
    }

    /**
     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    /**
     * @dev The new owner accepts the ownership transfer.
     */
    function acceptOwnership() public virtual {
        address sender = _msgSender();
        if (pendingOwner() != sender) {
            revert OwnableUnauthorizedAccount(sender);
        }
        _transferOwnership(sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyExists","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidSender","type":"error"},{"inputs":[],"name":"NotFound","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnsafeRecipient","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes32","name":"topic0","type":"bytes32"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ERC20Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ERC721Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"HHJASYCD","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"KIWOIDSA","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ZEHAHAHA","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amountOrId","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountOrId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60c0604052604051806102c001604052806040518060400160405280600781526020017f236536393034650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236662623935340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233638393334410000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233030666633330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236132613934370000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236435653034620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236662666638360000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233136356134630000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233233393036330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233165626337330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233931646236390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236364646636630000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233030373732320000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233232656566660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233534376536340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233932613938340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236232626139300000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233062356536350000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233062386138660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233065616639620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233330653162390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f2338666638653200000000000000000000000000000000000000000000000000815250815250600d9060166200053292919062000df4565b506040518061018001604052806040518060400160405280600781526020017f236233333833310000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236561346633360000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236635376434610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236165323333340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236538336233620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236132346236660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236366363537660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236564383039390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233833316335640000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236333323435340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236630346637380000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f2366363831383100000000000000000000000000000000000000000000000000815250815250600e90600c6200081392919062000e52565b506040518060e001604052806040518060400160405280600781526020017f233231343746350000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236666646633310000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233363343936350000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233061303832390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233634366664310000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233546353734460000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f2338333736394300000000000000000000000000000000000000000000000000815250815250600f906007620009cc92919062000eb0565b50348015620009d9575f80fd5b50604051620055db380380620055db8339818101604052810190620009ff919062001032565b6040518060400160405280600881526020017f5748454e203430340000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5748454e0000000000000000000000000000000000000000000000000000000081525060128385805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ae3575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000ada919062001088565b60405180910390fd5b62000af48162000bc360201b60201c565b50846002908162000b069190620012fe565b50836003908162000b189190620012fe565b508260ff1660808160ff1681525050608051600a62000b3891906200156b565b8262000b459190620015bb565b60a081815250505050505050670de0b6b3a76400008162000b679190620015bb565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000bbb82600162000bfb60201b60201c565b505062001605565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000bf88162000c6360201b60201c565b50565b62000c0b62000d2460201b60201c565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000d3462000dc660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000d5a62000dcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000dc45762000d8662000dc660201b60201c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162000dbb919062001088565b60405180910390fd5b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054828255905f5260205f2090810192821562000e3f579160200282015b8281111562000e3e57825182908162000e2d9190620012fe565b509160200191906001019062000e13565b5b50905062000e4e919062000f0e565b5090565b828054828255905f5260205f2090810192821562000e9d579160200282015b8281111562000e9c57825182908162000e8b9190620012fe565b509160200191906001019062000e71565b5b50905062000eac919062000f0e565b5090565b828054828255905f5260205f2090810192821562000efb579160200282015b8281111562000efa57825182908162000ee99190620012fe565b509160200191906001019062000ecf565b5b50905062000f0a919062000f0e565b5090565b5b8082111562000f31575f818162000f27919062000f35565b5060010162000f0f565b5090565b50805462000f439062001107565b5f825580601f1062000f56575062000f75565b601f0160209004905f5260205f209081019062000f74919062000f78565b5b50565b5b8082111562000f91575f815f90555060010162000f79565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000fc48262000f99565b9050919050565b62000fd68162000fb8565b811462000fe1575f80fd5b50565b5f8151905062000ff48162000fcb565b92915050565b5f819050919050565b6200100e8162000ffa565b811462001019575f80fd5b50565b5f815190506200102c8162001003565b92915050565b5f80604083850312156200104b576200104a62000f95565b5b5f6200105a8582860162000fe4565b92505060206200106d858286016200101c565b9150509250929050565b620010828162000fb8565b82525050565b5f6020820190506200109d5f83018462001077565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200111f57607f821691505b602082108103620011355762001134620010da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620011997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200115c565b620011a586836200115c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620011e6620011e0620011da8462000ffa565b620011bd565b62000ffa565b9050919050565b5f819050919050565b6200120183620011c6565b620012196200121082620011ed565b84845462001168565b825550505050565b5f90565b6200122f62001221565b6200123c818484620011f6565b505050565b5b818110156200126357620012575f8262001225565b60018101905062001242565b5050565b601f821115620012b2576200127c816200113b565b62001287846200114d565b8101602085101562001297578190505b620012af620012a6856200114d565b83018262001241565b50505b505050565b5f82821c905092915050565b5f620012d45f1984600802620012b7565b1980831691505092915050565b5f620012ee8383620012c3565b9150826002028217905092915050565b6200130982620010a3565b67ffffffffffffffff811115620013255762001324620010ad565b5b62001331825462001107565b6200133e82828562001267565b5f60209050601f83116001811462001374575f84156200135f578287015190505b6200136b8582620012e1565b865550620013da565b601f19841662001384866200113b565b5f5b82811015620013ad5784890151825560018201915060208501945060208101905062001386565b86831015620013cd5784890151620013c9601f891682620012c3565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200146c57808604811115620014445762001443620013e2565b5b6001851615620014545780820291505b808102905062001464856200140f565b945062001424565b94509492505050565b5f8262001486576001905062001558565b8162001495575f905062001558565b8160018114620014ae5760028114620014b957620014ef565b600191505062001558565b60ff841115620014ce57620014cd620013e2565b5b8360020a915084821115620014e857620014e7620013e2565b5b5062001558565b5060208310610133831016604e8410600b8410161715620015295782820a905083811115620015235762001522620013e2565b5b62001558565b6200153884848460016200141b565b92509050818404811115620015525762001551620013e2565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620015778262000ffa565b915062001584836200155f565b9250620015b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001475565b905092915050565b5f620015c78262000ffa565b9150620015d48362000ffa565b9250828202620015e48162000ffa565b91508282048414831517620015fe57620015fd620013e2565b5b5092915050565b60805160a051613fad6200162e5f395f61091e01525f81816111380152611c060152613fad5ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c806379ba5097116100f7578063a9059cbb11610095578063dd62ed3e1161006f578063dd62ed3e146104df578063e30c39781461050f578063e985e9c51461052d578063f2fde38b1461055d576101a7565b8063a9059cbb14610463578063b88d4fde14610493578063c87b56dd146104af576101a7565b80638da5cb5b116100d15780638da5cb5b146103db57806395d89b41146103f95780639b19251a14610417578063a22cb46514610447576101a7565b806379ba5097146103715780638194bd4e1461037b578063875e621c146103ab576101a7565b806342842e0e116101645780636352211e1161013e5780636352211e146102d75780636a3789ac1461030757806370a0823114610337578063715018a614610367576101a7565b806342842e0e146102815780634f02c4201461029d57806353d6fd59146102bb576101a7565b806306fdde03146101ab578063081812fc146101c9578063095ea7b3146101f957806318160ddd1461022957806323b872dd14610247578063313ce56714610263575b5f80fd5b6101b3610579565b6040516101c09190612932565b60405180910390f35b6101e360048036038101906101de919061298d565b610605565b6040516101f091906129f7565b60405180910390f35b610213600480360381019061020e9190612a3a565b610635565b6040516102209190612a92565b60405180910390f35b61023161091c565b60405161023e9190612aba565b60405180910390f35b610261600480360381019061025c9190612ad3565b610940565b005b61026b611136565b6040516102789190612b3e565b60405180910390f35b61029b60048036038101906102969190612ad3565b61115a565b005b6102a5611289565b6040516102b29190612aba565b60405180910390f35b6102d560048036038101906102d09190612b81565b61128f565b005b6102f160048036038101906102ec919061298d565b6112ef565b6040516102fe91906129f7565b60405180910390f35b610321600480360381019061031c919061298d565b61138d565b60405161032e9190612932565b60405180910390f35b610351600480360381019061034c9190612bbf565b61147c565b60405161035e9190612aba565b60405180910390f35b61036f611491565b005b6103796114a4565b005b6103956004803603810190610390919061298d565b611532565b6040516103a29190612932565b60405180910390f35b6103c560048036038101906103c0919061298d565b611621565b6040516103d29190612932565b60405180910390f35b6103e3611710565b6040516103f091906129f7565b60405180910390f35b610401611737565b60405161040e9190612932565b60405180910390f35b610431600480360381019061042c9190612bbf565b6117c3565b60405161043e9190612a92565b60405180910390f35b610461600480360381019061045c9190612b81565b6117e0565b005b61047d60048036038101906104789190612a3a565b6118d8565b60405161048a9190612a92565b60405180910390f35b6104ad60048036038101906104a89190612c4b565b6118ec565b005b6104c960048036038101906104c4919061298d565b611a21565b6040516104d69190612932565b60405180910390f35b6104f960048036038101906104f49190612ccf565b611ae5565b6040516105069190612aba565b60405180910390f35b610517611b05565b60405161052491906129f7565b60405180910390f35b61054760048036038101906105429190612ccf565b611b2d565b6040516105549190612a92565b60405180910390f35b61057760048036038101906105729190612bbf565b611b57565b005b6002805461058690612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546105b290612d3a565b80156105fd5780601f106105d4576101008083540402835291602001916105fd565b820191905f5260205f20905b8154815290600101906020018083116105e057829003601f168201915b505050505081565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600454821115801561064757505f82115b1561082f575f60095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561073e575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610775576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516108219190612aba565b60405180910390a350610912565b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109099190612aba565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6004548111610ff75760095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109de576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a43576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b01575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610b69575060075f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ba0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba8611c03565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bf39190612d97565b92505081905550610c02611c03565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d589190612d97565b81548110610d6957610d68612dca565b5b905f5260205f200154905080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600b5f8581526020019081526020015f205481548110610dd557610dd4612dca565b5b905f5260205f200181905550600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e2e57610e2d612df7565b5b600190038181905f5260205f20015f90559055600b5f8381526020019081526020015f2054600b5f8381526020019081526020015f2081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f169190612d97565b600b5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001613f576021913980519060200120610fdc611c03565b604051610fe99190612aba565b60405180910390a350611131565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111235781816110a69190612d97565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61112e848484611c36565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611165838383610940565b5f8273ffffffffffffffffffffffffffffffffffffffff163b1415801561124d575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016111eb93929190612e57565b6020604051808303815f875af1158015611207573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122b9190612ef4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611284576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b611297611f79565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611388576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60605f6113c061139c84612000565b6040516020016113ac9190612fa3565b604051602081830303815290604052612159565b9050600e8080549050826113d49190612ff1565b815481106113e5576113e4612dca565b5b905f5260205f200180546113f890612d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461142490612d3a565b801561146f5780601f106114465761010080835404028352916020019161146f565b820191905f5260205f20905b81548152906001019060200180831161145257829003601f168201915b5050505050915050919050565b6005602052805f5260405f205f915090505481565b611499611f79565b6114a25f61218a565b565b5f6114ad6121ba565b90508073ffffffffffffffffffffffffffffffffffffffff166114ce611b05565b73ffffffffffffffffffffffffffffffffffffffff161461152657806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161151d91906129f7565b60405180910390fd5b61152f8161218a565b50565b60605f61156561154184612000565b604051602001611551919061306b565b604051602081830303815290604052612159565b9050600d8080549050826115799190612ff1565b8154811061158a57611589612dca565b5b905f5260205f2001805461159d90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546115c990612d3a565b80156116145780601f106115eb57610100808354040283529160200191611614565b820191905f5260205f20905b8154815290600101906020018083116115f757829003601f168201915b5050505050915050919050565b60605f61165461163084612000565b60405160200161164091906130d6565b604051602081830303815290604052612159565b9050600f8080549050826116689190612ff1565b8154811061167957611678612dca565b5b905f5260205f2001805461168c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546116b890612d3a565b80156117035780601f106116da57610100808354040283529160200191611703565b820191905f5260205f20905b8154815290600101906020018083116116e657829003601f168201915b5050505050915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461174490612d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461177090612d3a565b80156117bb5780601f10611792576101008083540402835291602001916117bb565b820191905f5260205f20905b81548152906001019060200180831161179e57829003601f168201915b505050505081565b600c602052805f5260405f205f915054906101000a900460ff1681565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118cc9190612a92565b60405180910390a35050565b5f6118e4338484611c36565b905092915050565b6118f7858585610940565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156119e3575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611981959493929190613131565b6020604051808303815f875af115801561199d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c19190612ef4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611a1a576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f611a2d83611532565b90505f611a3984611621565b90505f611a458561138d565b90505f83848586878889888b8b604051602001611a6b9a999897969594939291906138ed565b60405160208183030381529060405290505f611ab7611a8988612000565b611a92846121c1565b604051602001611aa3929190613bc0565b6040516020818303038152906040526121c1565b905080604051602001611aca9190613c4e565b60405160208183030381529060405295505050505050919050565b6006602052815f5260405f20602052805f5260405f205f91509150505481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611b5f611f79565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611bbe611710565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611c319190613d9e565b905090565b5f80611c40611c03565b90505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d109190612d97565b925050819055508460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e34575f8360055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611df99190613de8565b8484611e059190613de8565b611e0f9190612d97565b90505f5b81811015611e3157611e2489612320565b8080600101915050611e13565b50505b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f07575f8382611e8f9190613de8565b8460055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ed89190613de8565b611ee29190612d97565b90505f5b81811015611f0457611ef788612565565b8080600101915050611ee6565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001613f57602191398051906020012087604051611f639190612aba565b60405180910390a3600193505050509392505050565b611f816121ba565b73ffffffffffffffffffffffffffffffffffffffff16611f9f611710565b73ffffffffffffffffffffffffffffffffffffffff1614611ffe57611fc26121ba565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ff591906129f7565b60405180910390fd5b565b60605f8203612046576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612154565b5f8290505f5b5f821461207557808061205e90613e18565b915050600a8261206e9190613de8565b915061204c565b5f8167ffffffffffffffff8111156120905761208f613e5f565b5b6040519080825280601f01601f1916602001820160405280156120c25781602001600182028036833780820191505090505b5090505b5f851461214d576001826120da9190612d97565b9150600a856120e99190612ff1565b60306120f59190613e8c565b60f81b81838151811061210b5761210a612dca565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856121469190613de8565b94506120c6565b8093505050505b919050565b5f8160405160200161216b9190613ebf565b604051602081830303815290604052805190602001205f1c9050919050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556121b7816127e7565b50565b5f33905090565b60605f8251036121e15760405180602001604052805f815250905061231b565b5f604051806060016040528060408152602001613f176040913990505f60036002855161220e9190613e8c565b6122189190613de8565b60046122249190613ed5565b67ffffffffffffffff81111561223d5761223c613e5f565b5b6040519080825280601f01601f19166020018201604052801561226f5781602001600182028036833780820191505090505b509050600182016020820185865187015b808210156122db576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845360018401935050612280565b50506003865106600181146122f7576002811461230a57612312565b603d6001830353603d6002830353612312565b603d60018303535b50505080925050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612385576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506124109190612d97565b8154811061242157612420612dca565b5b905f5260205f2001549050600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061247957612478612df7565b5b600190038181905f5260205f20015f90559055600b5f8281526020019081526020015f205f905560095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125ca576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f81548092919060010191905055505f60045490505f73ffffffffffffffffffffffffffffffffffffffff1660095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612676576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506127739190612d97565b600b5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128df5780820151818401526020810190506128c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612904826128a8565b61290e81856128b2565b935061291e8185602086016128c2565b612927816128ea565b840191505092915050565b5f6020820190508181035f83015261294a81846128fa565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61296c8161295a565b8114612976575f80fd5b50565b5f8135905061298781612963565b92915050565b5f602082840312156129a2576129a1612952565b5b5f6129af84828501612979565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129e1826129b8565b9050919050565b6129f1816129d7565b82525050565b5f602082019050612a0a5f8301846129e8565b92915050565b612a19816129d7565b8114612a23575f80fd5b50565b5f81359050612a3481612a10565b92915050565b5f8060408385031215612a5057612a4f612952565b5b5f612a5d85828601612a26565b9250506020612a6e85828601612979565b9150509250929050565b5f8115159050919050565b612a8c81612a78565b82525050565b5f602082019050612aa55f830184612a83565b92915050565b612ab48161295a565b82525050565b5f602082019050612acd5f830184612aab565b92915050565b5f805f60608486031215612aea57612ae9612952565b5b5f612af786828701612a26565b9350506020612b0886828701612a26565b9250506040612b1986828701612979565b9150509250925092565b5f60ff82169050919050565b612b3881612b23565b82525050565b5f602082019050612b515f830184612b2f565b92915050565b612b6081612a78565b8114612b6a575f80fd5b50565b5f81359050612b7b81612b57565b92915050565b5f8060408385031215612b9757612b96612952565b5b5f612ba485828601612a26565b9250506020612bb585828601612b6d565b9150509250929050565b5f60208284031215612bd457612bd3612952565b5b5f612be184828501612a26565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c0b57612c0a612bea565b5b8235905067ffffffffffffffff811115612c2857612c27612bee565b5b602083019150836001820283011115612c4457612c43612bf2565b5b9250929050565b5f805f805f60808688031215612c6457612c63612952565b5b5f612c7188828901612a26565b9550506020612c8288828901612a26565b9450506040612c9388828901612979565b935050606086013567ffffffffffffffff811115612cb457612cb3612956565b5b612cc088828901612bf6565b92509250509295509295909350565b5f8060408385031215612ce557612ce4612952565b5b5f612cf285828601612a26565b9250506020612d0385828601612a26565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d5157607f821691505b602082108103612d6457612d63612d0d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612da18261295a565b9150612dac8361295a565b9250828203905081811115612dc457612dc3612d6a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f612e425f83612e24565b9150612e4d82612e34565b5f82019050919050565b5f608082019050612e6a5f8301866129e8565b612e7760208301856129e8565b612e846040830184612aab565b8181036060830152612e9581612e37565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ed381612e9f565b8114612edd575f80fd5b50565b5f81519050612eee81612eca565b92915050565b5f60208284031215612f0957612f08612952565b5b5f612f1684828501612ee0565b91505092915050565b5f81905092915050565b7f44595953455751000000000000000000000000000000000000000000000000005f82015250565b5f612f5d600783612f1f565b9150612f6882612f29565b600782019050919050565b5f612f7d826128a8565b612f878185612f1f565b9350612f978185602086016128c2565b80840191505092915050565b5f612fad82612f51565b9150612fb98284612f73565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ffb8261295a565b91506130068361295a565b92508261301657613015612fc4565b5b828206905092915050565b7f44435853455751000000000000000000000000000000000000000000000000005f82015250565b5f613055600783612f1f565b915061306082613021565b600782019050919050565b5f61307582613049565b91506130818284612f73565b915081905092915050565b7f4a4a4844495157450000000000000000000000000000000000000000000000005f82015250565b5f6130c0600883612f1f565b91506130cb8261308c565b600882019050919050565b5f6130e0826130b4565b91506130ec8284612f73565b915081905092915050565b828183375f83830152505050565b5f6131108385612e24565b935061311d8385846130f7565b613126836128ea565b840190509392505050565b5f6080820190506131445f8301886129e8565b61315160208301876129e8565b61315e6040830186612aab565b8181036060830152613171818486613105565b90509695505050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222077696474683d2234303022206865696768743d223430302260208201527f2076696577426f783d223020302034303020343030222066696c6c3d226e6f6e60408201527f65223e0000000000000000000000000000000000000000000000000000000000606082015250565b5f613223606383612f1f565b915061322e8261317d565b606382019050919050565b7f3c726563742077696474683d22383022206865696768743d2234302220783d225f8201527f3135302220793d223737222066696c6c3d220000000000000000000000000000602082015250565b5f613293603283612f1f565b915061329e82613239565b603282019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f6132dd600383612f1f565b91506132e8826132a9565b600382019050919050565b7f3c726563742077696474683d22383022206865696768743d2234302220783d225f8201527f3237302220793d223737222066696c6c3d220000000000000000000000000000602082015250565b5f61334d603283612f1f565b9150613358826132f3565b603282019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f223131302220793d22313136222066696c6c3d22000000000000000000000000602082015250565b5f6133bd603483612f1f565b91506133c882613363565b603482019050919050565b7f3c726563742077696474683d22383022206865696768743d2234312220783d225f8201527f37302220793d22313536222066696c6c3d220000000000000000000000000000602082015250565b5f61342d603283612f1f565b9150613438826133d3565b603282019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3135302220793d22313536222066696c6c3d2223666666666666222f3e000000602082015250565b5f61349d603d83612f1f565b91506134a882613443565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3139302220793d22313536222066696c6c3d2223303030303030222f3e000000602082015250565b5f61350d603d83612f1f565b9150613518826134b3565b603d82019050919050565b7f3c726563742077696474683d22383022206865696768743d2234312220783d225f8201527f3233302220793d22313536222066696c6c3d2223666666666666222f3e000000602082015250565b5f61357d603d83612f1f565b915061358882613523565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3331302220793d22313536222066696c6c3d2223303030303030222f3e000000602082015250565b5f6135ed603d83612f1f565b91506135f882613593565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3335302220793d22313536222066696c6c3d2200000000000000000000000000602082015250565b5f61365d603383612f1f565b915061366882613603565b603382019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2237302220793d22313936222066696c6c3d2200000000000000000000000000602082015250565b5f6136cd603383612f1f565b91506136d882613673565b603382019050919050565b7f3c726563742077696474683d2231363022206865696768743d2234312220783d5f8201527f2232392220793d22323336222066696c6c3d2200000000000000000000000000602082015250565b5f61373d603383612f1f565b9150613748826136e3565b603382019050919050565b7f3c726563742077696474683d2231363122206865696768743d2234312220783d5f8201527f223138392220793d22323336222066696c6c3d22000000000000000000000000602082015250565b5f6137ad603483612f1f565b91506137b882613753565b603482019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2232392220793d22323736222066696c6c3d2200000000000000000000000000602082015250565b5f61381d603383612f1f565b9150613828826137c3565b603382019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2232392220793d22333136222066696c6c3d2200000000000000000000000000602082015250565b5f61388d603383612f1f565b915061389882613833565b603382019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f6138d7600683612f1f565b91506138e2826138a3565b600682019050919050565b5f6138f782613217565b915061390282613287565b915061390e828d612f73565b9150613919826132d1565b915061392482613341565b9150613930828c612f73565b915061393b826132d1565b9150613946826133b1565b9150613952828b612f73565b915061395d826132d1565b915061396882613421565b9150613974828a612f73565b915061397f826132d1565b915061398a82613491565b915061399582613501565b91506139a082613571565b91506139ab826135e1565b91506139b682613651565b91506139c28289612f73565b91506139cd826132d1565b91506139d8826136c1565b91506139e48288612f73565b91506139ef826132d1565b91506139fa82613731565b9150613a068287612f73565b9150613a11826132d1565b9150613a1c826137a1565b9150613a288286612f73565b9150613a33826132d1565b9150613a3e82613811565b9150613a4a8285612f73565b9150613a55826132d1565b9150613a6082613881565b9150613a6c8284612f73565b9150613a77826132d1565b9150613a82826138cb565b91508190509b9a5050505050505050505050565b7f7b226e616d65223a20225748454e2034303420230000000000000000000000005f82015250565b5f613aca601483612f1f565b9150613ad582613a96565b601482019050919050565b7f222c20226465736372697074696f6e223a2022477579732c205748454e2034305f8201527f3420534552525252202e222c2022696d616765223a2022646174613a696d616760208201527f652f7376672b786d6c3b6261736536342c000000000000000000000000000000604082015250565b5f613b60605183612f1f565b9150613b6b82613ae0565b605182019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613baa600283612f1f565b9150613bb582613b76565b600282019050919050565b5f613bca82613abe565b9150613bd68285612f73565b9150613be182613b54565b9150613bed8284612f73565b9150613bf882613b9e565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613c38601d83612f1f565b9150613c4382613c04565b601d82019050919050565b5f613c5882613c2c565b9150613c648284612f73565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115613cc457808604811115613ca057613c9f612d6a565b5b6001851615613caf5780820291505b8081029050613cbd85613c6f565b9450613c84565b94509492505050565b5f82613cdc5760019050613d97565b81613ce9575f9050613d97565b8160018114613cff5760028114613d0957613d38565b6001915050613d97565b60ff841115613d1b57613d1a612d6a565b5b8360020a915084821115613d3257613d31612d6a565b5b50613d97565b5060208310610133831016604e8410600b8410161715613d6d5782820a905083811115613d6857613d67612d6a565b5b613d97565b613d7a8484846001613c7b565b92509050818404811115613d9157613d90612d6a565b5b81810290505b9392505050565b5f613da88261295a565b9150613db383612b23565b9250613de07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ccd565b905092915050565b5f613df28261295a565b9150613dfd8361295a565b925082613e0d57613e0c612fc4565b5b828204905092915050565b5f613e228261295a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e5457613e53612d6a565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613e968261295a565b9150613ea18361295a565b9250828201905080821115613eb957613eb8612d6a565b5b92915050565b5f613eca8284612f73565b915081905092915050565b5f613edf8261295a565b9150613eea8361295a565b9250828202613ef88161295a565b91508282048414831517613f0f57613f0e612d6a565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f5472616e7366657228616464726573732c616464726573732c75696e7432353629a2646970667358221220b7c9579b6d015d912af6d38ed1a12c34ca1b8434e679a004b211eaa4d6d066ea64736f6c63430008180033000000000000000000000000ff3af260c917a3f25814b88c26e6ff7a63cbe59d0000000000000000000000000000000000000000000000000000000000000194

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101a7575f3560e01c806379ba5097116100f7578063a9059cbb11610095578063dd62ed3e1161006f578063dd62ed3e146104df578063e30c39781461050f578063e985e9c51461052d578063f2fde38b1461055d576101a7565b8063a9059cbb14610463578063b88d4fde14610493578063c87b56dd146104af576101a7565b80638da5cb5b116100d15780638da5cb5b146103db57806395d89b41146103f95780639b19251a14610417578063a22cb46514610447576101a7565b806379ba5097146103715780638194bd4e1461037b578063875e621c146103ab576101a7565b806342842e0e116101645780636352211e1161013e5780636352211e146102d75780636a3789ac1461030757806370a0823114610337578063715018a614610367576101a7565b806342842e0e146102815780634f02c4201461029d57806353d6fd59146102bb576101a7565b806306fdde03146101ab578063081812fc146101c9578063095ea7b3146101f957806318160ddd1461022957806323b872dd14610247578063313ce56714610263575b5f80fd5b6101b3610579565b6040516101c09190612932565b60405180910390f35b6101e360048036038101906101de919061298d565b610605565b6040516101f091906129f7565b60405180910390f35b610213600480360381019061020e9190612a3a565b610635565b6040516102209190612a92565b60405180910390f35b61023161091c565b60405161023e9190612aba565b60405180910390f35b610261600480360381019061025c9190612ad3565b610940565b005b61026b611136565b6040516102789190612b3e565b60405180910390f35b61029b60048036038101906102969190612ad3565b61115a565b005b6102a5611289565b6040516102b29190612aba565b60405180910390f35b6102d560048036038101906102d09190612b81565b61128f565b005b6102f160048036038101906102ec919061298d565b6112ef565b6040516102fe91906129f7565b60405180910390f35b610321600480360381019061031c919061298d565b61138d565b60405161032e9190612932565b60405180910390f35b610351600480360381019061034c9190612bbf565b61147c565b60405161035e9190612aba565b60405180910390f35b61036f611491565b005b6103796114a4565b005b6103956004803603810190610390919061298d565b611532565b6040516103a29190612932565b60405180910390f35b6103c560048036038101906103c0919061298d565b611621565b6040516103d29190612932565b60405180910390f35b6103e3611710565b6040516103f091906129f7565b60405180910390f35b610401611737565b60405161040e9190612932565b60405180910390f35b610431600480360381019061042c9190612bbf565b6117c3565b60405161043e9190612a92565b60405180910390f35b610461600480360381019061045c9190612b81565b6117e0565b005b61047d60048036038101906104789190612a3a565b6118d8565b60405161048a9190612a92565b60405180910390f35b6104ad60048036038101906104a89190612c4b565b6118ec565b005b6104c960048036038101906104c4919061298d565b611a21565b6040516104d69190612932565b60405180910390f35b6104f960048036038101906104f49190612ccf565b611ae5565b6040516105069190612aba565b60405180910390f35b610517611b05565b60405161052491906129f7565b60405180910390f35b61054760048036038101906105429190612ccf565b611b2d565b6040516105549190612a92565b60405180910390f35b61057760048036038101906105729190612bbf565b611b57565b005b6002805461058690612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546105b290612d3a565b80156105fd5780601f106105d4576101008083540402835291602001916105fd565b820191905f5260205f20905b8154815290600101906020018083116105e057829003601f168201915b505050505081565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600454821115801561064757505f82115b1561082f575f60095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561073e575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610775576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516108219190612aba565b60405180910390a350610912565b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109099190612aba565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000015e6a0538429d0000081565b6004548111610ff75760095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109de576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a43576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b01575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610b69575060075f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ba0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba8611c03565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bf39190612d97565b92505081905550610c02611c03565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d589190612d97565b81548110610d6957610d68612dca565b5b905f5260205f200154905080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600b5f8581526020019081526020015f205481548110610dd557610dd4612dca565b5b905f5260205f200181905550600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e2e57610e2d612df7565b5b600190038181905f5260205f20015f90559055600b5f8381526020019081526020015f2054600b5f8381526020019081526020015f2081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f169190612d97565b600b5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001613f576021913980519060200120610fdc611c03565b604051610fe99190612aba565b60405180910390a350611131565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111235781816110a69190612d97565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61112e848484611c36565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000001281565b611165838383610940565b5f8273ffffffffffffffffffffffffffffffffffffffff163b1415801561124d575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016111eb93929190612e57565b6020604051808303815f875af1158015611207573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122b9190612ef4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611284576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b611297611f79565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611388576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60605f6113c061139c84612000565b6040516020016113ac9190612fa3565b604051602081830303815290604052612159565b9050600e8080549050826113d49190612ff1565b815481106113e5576113e4612dca565b5b905f5260205f200180546113f890612d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461142490612d3a565b801561146f5780601f106114465761010080835404028352916020019161146f565b820191905f5260205f20905b81548152906001019060200180831161145257829003601f168201915b5050505050915050919050565b6005602052805f5260405f205f915090505481565b611499611f79565b6114a25f61218a565b565b5f6114ad6121ba565b90508073ffffffffffffffffffffffffffffffffffffffff166114ce611b05565b73ffffffffffffffffffffffffffffffffffffffff161461152657806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161151d91906129f7565b60405180910390fd5b61152f8161218a565b50565b60605f61156561154184612000565b604051602001611551919061306b565b604051602081830303815290604052612159565b9050600d8080549050826115799190612ff1565b8154811061158a57611589612dca565b5b905f5260205f2001805461159d90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546115c990612d3a565b80156116145780601f106115eb57610100808354040283529160200191611614565b820191905f5260205f20905b8154815290600101906020018083116115f757829003601f168201915b5050505050915050919050565b60605f61165461163084612000565b60405160200161164091906130d6565b604051602081830303815290604052612159565b9050600f8080549050826116689190612ff1565b8154811061167957611678612dca565b5b905f5260205f2001805461168c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546116b890612d3a565b80156117035780601f106116da57610100808354040283529160200191611703565b820191905f5260205f20905b8154815290600101906020018083116116e657829003601f168201915b5050505050915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461174490612d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461177090612d3a565b80156117bb5780601f10611792576101008083540402835291602001916117bb565b820191905f5260205f20905b81548152906001019060200180831161179e57829003601f168201915b505050505081565b600c602052805f5260405f205f915054906101000a900460ff1681565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118cc9190612a92565b60405180910390a35050565b5f6118e4338484611c36565b905092915050565b6118f7858585610940565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156119e3575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611981959493929190613131565b6020604051808303815f875af115801561199d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c19190612ef4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611a1a576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f611a2d83611532565b90505f611a3984611621565b90505f611a458561138d565b90505f83848586878889888b8b604051602001611a6b9a999897969594939291906138ed565b60405160208183030381529060405290505f611ab7611a8988612000565b611a92846121c1565b604051602001611aa3929190613bc0565b6040516020818303038152906040526121c1565b905080604051602001611aca9190613c4e565b60405160208183030381529060405295505050505050919050565b6006602052815f5260405f20602052805f5260405f205f91509150505481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611b5f611f79565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611bbe611710565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000012600a611c319190613d9e565b905090565b5f80611c40611c03565b90505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d109190612d97565b925050819055508460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e34575f8360055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611df99190613de8565b8484611e059190613de8565b611e0f9190612d97565b90505f5b81811015611e3157611e2489612320565b8080600101915050611e13565b50505b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f07575f8382611e8f9190613de8565b8460055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ed89190613de8565b611ee29190612d97565b90505f5b81811015611f0457611ef788612565565b8080600101915050611ee6565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001613f57602191398051906020012087604051611f639190612aba565b60405180910390a3600193505050509392505050565b611f816121ba565b73ffffffffffffffffffffffffffffffffffffffff16611f9f611710565b73ffffffffffffffffffffffffffffffffffffffff1614611ffe57611fc26121ba565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ff591906129f7565b60405180910390fd5b565b60605f8203612046576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612154565b5f8290505f5b5f821461207557808061205e90613e18565b915050600a8261206e9190613de8565b915061204c565b5f8167ffffffffffffffff8111156120905761208f613e5f565b5b6040519080825280601f01601f1916602001820160405280156120c25781602001600182028036833780820191505090505b5090505b5f851461214d576001826120da9190612d97565b9150600a856120e99190612ff1565b60306120f59190613e8c565b60f81b81838151811061210b5761210a612dca565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856121469190613de8565b94506120c6565b8093505050505b919050565b5f8160405160200161216b9190613ebf565b604051602081830303815290604052805190602001205f1c9050919050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556121b7816127e7565b50565b5f33905090565b60605f8251036121e15760405180602001604052805f815250905061231b565b5f604051806060016040528060408152602001613f176040913990505f60036002855161220e9190613e8c565b6122189190613de8565b60046122249190613ed5565b67ffffffffffffffff81111561223d5761223c613e5f565b5b6040519080825280601f01601f19166020018201604052801561226f5781602001600182028036833780820191505090505b509050600182016020820185865187015b808210156122db576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845360018401935050612280565b50506003865106600181146122f7576002811461230a57612312565b603d6001830353603d6002830353612312565b603d60018303535b50505080925050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612385576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506124109190612d97565b8154811061242157612420612dca565b5b905f5260205f2001549050600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061247957612478612df7565b5b600190038181905f5260205f20015f90559055600b5f8281526020019081526020015f205f905560095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125ca576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f81548092919060010191905055505f60045490505f73ffffffffffffffffffffffffffffffffffffffff1660095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612676576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506127739190612d97565b600b5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128df5780820151818401526020810190506128c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612904826128a8565b61290e81856128b2565b935061291e8185602086016128c2565b612927816128ea565b840191505092915050565b5f6020820190508181035f83015261294a81846128fa565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61296c8161295a565b8114612976575f80fd5b50565b5f8135905061298781612963565b92915050565b5f602082840312156129a2576129a1612952565b5b5f6129af84828501612979565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129e1826129b8565b9050919050565b6129f1816129d7565b82525050565b5f602082019050612a0a5f8301846129e8565b92915050565b612a19816129d7565b8114612a23575f80fd5b50565b5f81359050612a3481612a10565b92915050565b5f8060408385031215612a5057612a4f612952565b5b5f612a5d85828601612a26565b9250506020612a6e85828601612979565b9150509250929050565b5f8115159050919050565b612a8c81612a78565b82525050565b5f602082019050612aa55f830184612a83565b92915050565b612ab48161295a565b82525050565b5f602082019050612acd5f830184612aab565b92915050565b5f805f60608486031215612aea57612ae9612952565b5b5f612af786828701612a26565b9350506020612b0886828701612a26565b9250506040612b1986828701612979565b9150509250925092565b5f60ff82169050919050565b612b3881612b23565b82525050565b5f602082019050612b515f830184612b2f565b92915050565b612b6081612a78565b8114612b6a575f80fd5b50565b5f81359050612b7b81612b57565b92915050565b5f8060408385031215612b9757612b96612952565b5b5f612ba485828601612a26565b9250506020612bb585828601612b6d565b9150509250929050565b5f60208284031215612bd457612bd3612952565b5b5f612be184828501612a26565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c0b57612c0a612bea565b5b8235905067ffffffffffffffff811115612c2857612c27612bee565b5b602083019150836001820283011115612c4457612c43612bf2565b5b9250929050565b5f805f805f60808688031215612c6457612c63612952565b5b5f612c7188828901612a26565b9550506020612c8288828901612a26565b9450506040612c9388828901612979565b935050606086013567ffffffffffffffff811115612cb457612cb3612956565b5b612cc088828901612bf6565b92509250509295509295909350565b5f8060408385031215612ce557612ce4612952565b5b5f612cf285828601612a26565b9250506020612d0385828601612a26565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d5157607f821691505b602082108103612d6457612d63612d0d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612da18261295a565b9150612dac8361295a565b9250828203905081811115612dc457612dc3612d6a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f612e425f83612e24565b9150612e4d82612e34565b5f82019050919050565b5f608082019050612e6a5f8301866129e8565b612e7760208301856129e8565b612e846040830184612aab565b8181036060830152612e9581612e37565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ed381612e9f565b8114612edd575f80fd5b50565b5f81519050612eee81612eca565b92915050565b5f60208284031215612f0957612f08612952565b5b5f612f1684828501612ee0565b91505092915050565b5f81905092915050565b7f44595953455751000000000000000000000000000000000000000000000000005f82015250565b5f612f5d600783612f1f565b9150612f6882612f29565b600782019050919050565b5f612f7d826128a8565b612f878185612f1f565b9350612f978185602086016128c2565b80840191505092915050565b5f612fad82612f51565b9150612fb98284612f73565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ffb8261295a565b91506130068361295a565b92508261301657613015612fc4565b5b828206905092915050565b7f44435853455751000000000000000000000000000000000000000000000000005f82015250565b5f613055600783612f1f565b915061306082613021565b600782019050919050565b5f61307582613049565b91506130818284612f73565b915081905092915050565b7f4a4a4844495157450000000000000000000000000000000000000000000000005f82015250565b5f6130c0600883612f1f565b91506130cb8261308c565b600882019050919050565b5f6130e0826130b4565b91506130ec8284612f73565b915081905092915050565b828183375f83830152505050565b5f6131108385612e24565b935061311d8385846130f7565b613126836128ea565b840190509392505050565b5f6080820190506131445f8301886129e8565b61315160208301876129e8565b61315e6040830186612aab565b8181036060830152613171818486613105565b90509695505050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222077696474683d2234303022206865696768743d223430302260208201527f2076696577426f783d223020302034303020343030222066696c6c3d226e6f6e60408201527f65223e0000000000000000000000000000000000000000000000000000000000606082015250565b5f613223606383612f1f565b915061322e8261317d565b606382019050919050565b7f3c726563742077696474683d22383022206865696768743d2234302220783d225f8201527f3135302220793d223737222066696c6c3d220000000000000000000000000000602082015250565b5f613293603283612f1f565b915061329e82613239565b603282019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f6132dd600383612f1f565b91506132e8826132a9565b600382019050919050565b7f3c726563742077696474683d22383022206865696768743d2234302220783d225f8201527f3237302220793d223737222066696c6c3d220000000000000000000000000000602082015250565b5f61334d603283612f1f565b9150613358826132f3565b603282019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f223131302220793d22313136222066696c6c3d22000000000000000000000000602082015250565b5f6133bd603483612f1f565b91506133c882613363565b603482019050919050565b7f3c726563742077696474683d22383022206865696768743d2234312220783d225f8201527f37302220793d22313536222066696c6c3d220000000000000000000000000000602082015250565b5f61342d603283612f1f565b9150613438826133d3565b603282019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3135302220793d22313536222066696c6c3d2223666666666666222f3e000000602082015250565b5f61349d603d83612f1f565b91506134a882613443565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3139302220793d22313536222066696c6c3d2223303030303030222f3e000000602082015250565b5f61350d603d83612f1f565b9150613518826134b3565b603d82019050919050565b7f3c726563742077696474683d22383022206865696768743d2234312220783d225f8201527f3233302220793d22313536222066696c6c3d2223666666666666222f3e000000602082015250565b5f61357d603d83612f1f565b915061358882613523565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3331302220793d22313536222066696c6c3d2223303030303030222f3e000000602082015250565b5f6135ed603d83612f1f565b91506135f882613593565b603d82019050919050565b7f3c726563742077696474683d22343022206865696768743d2234312220783d225f8201527f3335302220793d22313536222066696c6c3d2200000000000000000000000000602082015250565b5f61365d603383612f1f565b915061366882613603565b603382019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2237302220793d22313936222066696c6c3d2200000000000000000000000000602082015250565b5f6136cd603383612f1f565b91506136d882613673565b603382019050919050565b7f3c726563742077696474683d2231363022206865696768743d2234312220783d5f8201527f2232392220793d22323336222066696c6c3d2200000000000000000000000000602082015250565b5f61373d603383612f1f565b9150613748826136e3565b603382019050919050565b7f3c726563742077696474683d2231363122206865696768743d2234312220783d5f8201527f223138392220793d22323336222066696c6c3d22000000000000000000000000602082015250565b5f6137ad603483612f1f565b91506137b882613753565b603482019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2232392220793d22323736222066696c6c3d2200000000000000000000000000602082015250565b5f61381d603383612f1f565b9150613828826137c3565b603382019050919050565b7f3c726563742077696474683d2232383022206865696768743d2234312220783d5f8201527f2232392220793d22333136222066696c6c3d2200000000000000000000000000602082015250565b5f61388d603383612f1f565b915061389882613833565b603382019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f6138d7600683612f1f565b91506138e2826138a3565b600682019050919050565b5f6138f782613217565b915061390282613287565b915061390e828d612f73565b9150613919826132d1565b915061392482613341565b9150613930828c612f73565b915061393b826132d1565b9150613946826133b1565b9150613952828b612f73565b915061395d826132d1565b915061396882613421565b9150613974828a612f73565b915061397f826132d1565b915061398a82613491565b915061399582613501565b91506139a082613571565b91506139ab826135e1565b91506139b682613651565b91506139c28289612f73565b91506139cd826132d1565b91506139d8826136c1565b91506139e48288612f73565b91506139ef826132d1565b91506139fa82613731565b9150613a068287612f73565b9150613a11826132d1565b9150613a1c826137a1565b9150613a288286612f73565b9150613a33826132d1565b9150613a3e82613811565b9150613a4a8285612f73565b9150613a55826132d1565b9150613a6082613881565b9150613a6c8284612f73565b9150613a77826132d1565b9150613a82826138cb565b91508190509b9a5050505050505050505050565b7f7b226e616d65223a20225748454e2034303420230000000000000000000000005f82015250565b5f613aca601483612f1f565b9150613ad582613a96565b601482019050919050565b7f222c20226465736372697074696f6e223a2022477579732c205748454e2034305f8201527f3420534552525252202e222c2022696d616765223a2022646174613a696d616760208201527f652f7376672b786d6c3b6261736536342c000000000000000000000000000000604082015250565b5f613b60605183612f1f565b9150613b6b82613ae0565b605182019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613baa600283612f1f565b9150613bb582613b76565b600282019050919050565b5f613bca82613abe565b9150613bd68285612f73565b9150613be182613b54565b9150613bed8284612f73565b9150613bf882613b9e565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613c38601d83612f1f565b9150613c4382613c04565b601d82019050919050565b5f613c5882613c2c565b9150613c648284612f73565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115613cc457808604811115613ca057613c9f612d6a565b5b6001851615613caf5780820291505b8081029050613cbd85613c6f565b9450613c84565b94509492505050565b5f82613cdc5760019050613d97565b81613ce9575f9050613d97565b8160018114613cff5760028114613d0957613d38565b6001915050613d97565b60ff841115613d1b57613d1a612d6a565b5b8360020a915084821115613d3257613d31612d6a565b5b50613d97565b5060208310610133831016604e8410600b8410161715613d6d5782820a905083811115613d6857613d67612d6a565b5b613d97565b613d7a8484846001613c7b565b92509050818404811115613d9157613d90612d6a565b5b81810290505b9392505050565b5f613da88261295a565b9150613db383612b23565b9250613de07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ccd565b905092915050565b5f613df28261295a565b9150613dfd8361295a565b925082613e0d57613e0c612fc4565b5b828204905092915050565b5f613e228261295a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e5457613e53612d6a565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613e968261295a565b9150613ea18361295a565b9250828201905080821115613eb957613eb8612d6a565b5b92915050565b5f613eca8284612f73565b915081905092915050565b5f613edf8261295a565b9150613eea8361295a565b9250828202613ef88161295a565b91508282048414831517613f0f57613f0e612d6a565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f5472616e7366657228616464726573732c616464726573732c75696e7432353629a2646970667358221220b7c9579b6d015d912af6d38ed1a12c34ca1b8434e679a004b211eaa4d6d066ea64736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ff3af260c917a3f25814b88c26e6ff7a63cbe59d0000000000000000000000000000000000000000000000000000000000000194

-----Decoded View---------------
Arg [0] : _owner (address): 0xff3Af260c917A3F25814b88c26e6Ff7a63CBE59d
Arg [1] : _totalSupply (uint256): 404

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ff3af260c917a3f25814b88c26e6ff7a63cbe59d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000194


Deployed Bytecode Sourcemap

105:5479:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:18:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1897:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:621;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1435:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:1679;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1338:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6658:391;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1567:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3024:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3202:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1636:236:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1669:44:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2286:101:3;;;:::i;:::-;;1761:229:4;;;:::i;:::-;;1394:236:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1878:267;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1631:85:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1259:20:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2493:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4346:203;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6429:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7141:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2482:2579:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1780:64:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;874:99:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2005:68:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1166:178:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1208:18:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1897:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3677:621::-;3777:4;3811:6;;3797:10;:20;;:38;;;;;3834:1;3821:10;:14;3797:38;3793:477;;;3851:13;3867:8;:20;3876:10;3867:20;;;;;;;;;;;;;;;;;;;;;3851:36;;3920:5;3906:19;;:10;:19;;;;:59;;;;;3930:16;:23;3947:5;3930:23;;;;;;;;;;;;;;;:35;3954:10;3930:35;;;;;;;;;;;;;;;;;;;;;;;;;3929:36;3906:59;3902:119;;;3992:14;;;;;;;;;;;;;;3902:119;4061:7;4035:11;:23;4047:10;4035:23;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;4104:7;4088:36;;4097:5;4088:36;;;4113:10;4088:36;;;;;;:::i;:::-;;;;;;;;3837:298;3793:477;;;4188:10;4155:9;:21;4165:10;4155:21;;;;;;;;;;;;;;;:30;4177:7;4155:30;;;;;;;;;;;;;;;:43;;;;4239:7;4218:41;;4227:10;4218:41;;;4248:10;4218:41;;;;;;:::i;:::-;;;;;;;;3793:477;4287:4;4280:11;;3677:621;;;;:::o;1435:36::-;;;:::o;4694:1679::-;4835:6;;4821:10;:20;4817:1550;;4869:8;:20;4878:10;4869:20;;;;;;;;;;;;;;;;;;;;;4861:28;;:4;:28;;;4857:89;;4916:15;;;;;;;;;;;;;;4857:89;4978:1;4964:16;;:2;:16;;;4960:80;;5007:18;;;;;;;;;;;;;;4960:80;5089:4;5075:18;;:10;:18;;;;:73;;;;;5114:16;:22;5131:4;5114:22;;;;;;;;;;;;;;;:34;5137:10;5114:34;;;;;;;;;;;;;;;;;;;;;;;;;5113:35;5075:73;:130;;;;;5182:11;:23;5194:10;5182:23;;;;;;;;;;;;;;;;;;;;;5168:37;;:10;:37;;;;5075:130;5054:220;;;5245:14;;;;;;;;;;;;;;5054:220;5307:10;:8;:10::i;:::-;5288:9;:15;5298:4;5288:15;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;5377:10;:8;:10::i;:::-;5360:9;:13;5370:2;5360:13;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5439:2;5416:8;:20;5425:10;5416:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5462:11;:23;5474:10;5462:23;;;;;;;;;;;;5455:30;;;;;;;;;;;5540:17;5560:6;:12;5567:4;5560:12;;;;;;;;;;;;;;;5595:1;5573:6;:12;5580:4;5573:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;5560:37;;;;;;;;:::i;:::-;;;;;;;;;;5540:57;;5651:9;5611:6;:12;5618:4;5611:12;;;;;;;;;;;;;;;5624:11;:23;5636:10;5624:23;;;;;;;;;;;;5611:37;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;5693:6;:12;5700:4;5693:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5795:11;:23;5807:10;5795:23;;;;;;;;;;;;5770:11;:22;5782:9;5770:22;;;;;;;;;;;:48;;;;5870:6;:10;5877:2;5870:10;;;;;;;;;;;;;;;5886;5870:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5998:1;5978:6;:10;5985:2;5978:10;;;;;;;;;;;;;;;:17;;;;:21;;;;:::i;:::-;5952:11;:23;5964:10;5952:23;;;;;;;;;;;:47;;;;6038:10;6034:2;6019:30;;6028:4;6019:30;;;;;;;;;;;;6104:2;6068:51;;6098:4;6068:51;;930:42;;;;;;;;;;;;;;;;;920:53;;;;;;6108:10;:8;:10::i;:::-;6068:51;;;;;;:::i;:::-;;;;;;;;4843:1287;4817:1550;;;6150:15;6168:9;:15;6178:4;6168:15;;;;;;;;;;;;;;;:27;6184:10;6168:27;;;;;;;;;;;;;;;;6150:45;;6225:17;6214:7;:28;6210:100;;6300:10;6290:7;:20;;;;:::i;:::-;6260:9;:15;6270:4;6260:15;;;;;;;;;;;;;;;:27;6276:10;6260:27;;;;;;;;;;;;;;;:50;;;;6210:100;6325:31;6335:4;6341:2;6345:10;6325:9;:31::i;:::-;;6136:231;4817:1550;4694:1679;;;:::o;1338:31::-;;;:::o;6658:391::-;6777:26;6790:4;6796:2;6800;6777:12;:26::i;:::-;6849:1;6831:2;:14;;;:19;;:152;;;;;6943:40;;;6866:117;;;6881:2;6866:35;;;6902:10;6914:4;6920:2;6866:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:117;;;;;6831:152;6814:229;;;7015:17;;;;;;;;;;;;;;6814:229;6658:391;;;:::o;1567:21::-;;;;:::o;3024:109::-;1524:13:3;:11;:13::i;:::-;3121:5:2::1;3101:9;:17;3111:6;3101:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3024:109:::0;;:::o;3202:187::-;3260:13;3293:8;:12;3302:2;3293:12;;;;;;;;;;;;;;;;;;;;;3285:20;;3337:1;3320:19;;:5;:19;;;3316:67;;3362:10;;;;;;;;;;;;;;3316:67;3202:187;;;:::o;1636:236:5:-;1692:13;1717:12;1732:84;1787:17;1796:7;1787:8;:17::i;:::-;1759:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;1732:6;:84::i;:::-;1717:99;;1833:8;1849;:15;;;;1842:4;:22;;;;:::i;:::-;1833:32;;;;;;;;:::i;:::-;;;;;;;;;1826:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:236;;;:::o;1669:44:2:-;;;;;;;;;;;;;;;;;:::o;2286:101:3:-;1524:13;:11;:13::i;:::-;2350:30:::1;2377:1;2350:18;:30::i;:::-;2286:101::o:0;1761:229:4:-;1813:14;1830:12;:10;:12::i;:::-;1813:29;;1874:6;1856:24;;:14;:12;:14::i;:::-;:24;;;1852:96;;1930:6;1903:34;;;;;;;;;;;:::i;:::-;;;;;;;;1852:96;1957:26;1976:6;1957:18;:26::i;:::-;1803:187;1761:229::o;1394:236:5:-;1450:13;1475:12;1490:84;1545:17;1554:7;1545:8;:17::i;:::-;1517:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;1490:6;:84::i;:::-;1475:99;;1591:8;1607;:15;;;;1600:4;:22;;;;:::i;:::-;1591:32;;;;;;;;:::i;:::-;;;;;;;;;1584:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1394:236;;;:::o;1878:267::-;1958:13;1987:12;2002:85;2058:17;2067:7;2058:8;:17::i;:::-;2029:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;2002:6;:85::i;:::-;1987:100;;2104:9;2121;:16;;;;2114:4;:23;;;;:::i;:::-;2104:34;;;;;;;;:::i;:::-;;;;;;;;;2097:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1878:267;;;:::o;1631:85:3:-;1677:7;1703:6;;;;;;;;;;;1696:13;;1631:85;:::o;1259:20:2:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2493:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4346:203::-;4472:8;4431:16;:28;4448:10;4431:28;;;;;;;;;;;;;;;:38;4460:8;4431:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;4523:8;4496:46;;4511:10;4496:46;;;4533:8;4496:46;;;;;;:::i;:::-;;;;;;;;4346:203;;:::o;6429:155::-;6521:4;6544:33;6554:10;6566:2;6570:6;6544:9;:33::i;:::-;6537:40;;6429:155;;;;:::o;7141:422::-;7289:26;7302:4;7308:2;7312;7289:12;:26::i;:::-;7361:1;7343:2;:14;;;:19;;:154;;;;;7457:40;;;7378:119;;;7393:2;7378:35;;;7414:10;7426:4;7432:2;7436:4;;7378:63;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:119;;;;;7343:154;7326:231;;;7529:17;;;;;;;;;;;;;;7326:231;7141:422;;;;;:::o;2482:2579:5:-;2579:13;2608:21;2632:17;2641:7;2632:8;:17::i;:::-;2608:41;;2659:22;2684:17;2693:7;2684:8;:17::i;:::-;2659:42;;2711:21;2735:17;2744:7;2735:8;:17::i;:::-;2711:41;;2763:17;3026:7;3144;3264;3382;3825;3944;4063;4183;4302;4421:8;2803:1689;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2763:1739;;4513:18;4534:439;4702:17;4711:7;4702:8;:17::i;:::-;4854:25;4874:3;4854:13;:25::i;:::-;4612:319;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4534:13;:439::i;:::-;4513:460;;5048:4;4998:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;4984:70;;;;;;;2482:2579;;;:::o;1780:64:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;874:99:4:-;927:7;953:13;;;;;;;;;;;946:20;;874:99;:::o;2005:68:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1166:178:4:-;1524:13:3;:11;:13::i;:::-;1271:8:4::1;1255:13;;:24;;;;;;;;;;;;;;;;;;1328:8;1294:43;;1319:7;:5;:7::i;:::-;1294:43;;;;;;;;;;;;1166:178:::0;:::o;8746:90:2:-;8789:7;8821:8;8815:2;:14;;;;:::i;:::-;8808:21;;8746:90;:::o;7628:1082::-;7745:4;7761:12;7776:10;:8;:10::i;:::-;7761:25;;7796:27;7826:9;:15;7836:4;7826:15;;;;;;;;;;;;;;;;7796:45;;7851:29;7883:9;:13;7893:2;7883:13;;;;;;;;;;;;;;;;7851:45;;7926:6;7907:9;:15;7917:4;7907:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7984:6;7967:9;:13;7977:2;7967:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8071:9;:15;8081:4;8071:15;;;;;;;;;;;;;;;;;;;;;;;;;8066:245;;8102:22;8193:4;8175:9;:15;8185:4;8175:15;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;8150:4;8128:19;:26;;;;:::i;:::-;8127:71;;;;:::i;:::-;8102:96;;8217:9;8212:89;8236:14;8232:1;:18;8212:89;;;8275:11;8281:4;8275:5;:11::i;:::-;8252:3;;;;;;;8212:89;;;;8088:223;8066:245;8384:9;:13;8394:2;8384:13;;;;;;;;;;;;;;;;;;;;;;;;;8379:241;;8413:22;8504:4;8480:21;:28;;;;:::i;:::-;8455:4;8439:9;:13;8449:2;8439:13;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;8438:71;;;;:::i;:::-;8413:96;;8528:9;8523:87;8547:14;8543:1;:18;8523:87;;;8586:9;8592:2;8586:5;:9::i;:::-;8563:3;;;;;;;8523:87;;;;8399:221;8379:241;8671:2;8635:47;;8665:4;8635:47;;930:42;;;;;;;;;;;;;;;;;920:53;;;;;;8675:6;8635:47;;;;;;:::i;:::-;;;;;;;;8699:4;8692:11;;;;;7628:1082;;;;;:::o;1789:162:3:-;1859:12;:10;:12::i;:::-;1848:23;;:7;:5;:7::i;:::-;:23;;;1844:101;;1921:12;:10;:12::i;:::-;1894:40;;;;;;;;;;;:::i;:::-;;;;;;;;1844:101;1789:162::o;5067:515:5:-;5123:13;5161:1;5152:5;:10;5148:51;;5178:10;;;;;;;;;;;;;;;;;;;;;5148:51;5208:12;5223:5;5208:20;;5238:14;5262:75;5277:1;5269:4;:9;5262:75;;5294:8;;;;;:::i;:::-;;;;5324:2;5316:10;;;;;:::i;:::-;;;5262:75;;;5346:19;5378:6;5368:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5346:39;;5395:150;5411:1;5402:5;:10;5395:150;;5438:1;5428:11;;;;;:::i;:::-;;;5504:2;5496:5;:10;;;;:::i;:::-;5483:2;:24;;;;:::i;:::-;5470:39;;5453:6;5460;5453:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;5532:2;5523:11;;;;;:::i;:::-;;;5395:150;;;5568:6;5554:21;;;;;5067:515;;;;:::o;1252:136::-;1312:7;1373:5;1356:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;1346:34;;;;;;1338:43;;1331:50;;1252:136;;;:::o;1528:153:4:-;1617:13;;1610:20;;;;;;;;;;;1640:34;1665:8;1640:24;:34::i;:::-;1528:153;:::o;656:96:1:-;709:7;735:10;728:17;;656:96;:::o;476:3026:0:-;534:13;781:1;766:4;:11;:16;762:31;;784:9;;;;;;;;;;;;;;;;762:31;843:19;865:6;;;;;;;;;;;;;;;;;843:28;;1274:20;1333:1;1328;1314:4;:11;:15;;;;:::i;:::-;1313:21;;;;:::i;:::-;1308:1;:27;;;;:::i;:::-;1297:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1274:62;;1511:1;1504:5;1500:13;1612:2;1604:6;1600:15;1719:4;1770;1764:11;1758:4;1754:22;1682:1403;1803:6;1794:7;1791:19;1682:1403;;;1905:1;1896:7;1892:15;1881:26;;1943:7;1937:14;2586:4;2578:5;2574:2;2570:14;2566:25;2556:8;2552:40;2546:47;2535:9;2527:67;2639:1;2628:9;2624:17;2611:30;;2729:4;2721:5;2717:2;2713:14;2709:25;2699:8;2695:40;2689:47;2678:9;2670:67;2782:1;2771:9;2767:17;2754:30;;2871:4;2863:5;2860:1;2856:13;2852:24;2842:8;2838:39;2832:46;2821:9;2813:66;2924:1;2913:9;2909:17;2896:30;;3005:4;2998:5;2994:16;2984:8;2980:31;2974:38;2963:9;2955:58;3058:1;3047:9;3043:17;3030:30;;1828:1257;1682:1403;;;1686:104;;3243:1;3236:4;3230:11;3226:19;3263:1;3258:120;;;;3396:1;3391:71;;;;3219:243;;3258:120;3310:4;3306:1;3295:9;3291:17;3283:32;3359:4;3355:1;3344:9;3340:17;3332:32;3258:120;;3391:71;3443:4;3439:1;3428:9;3424:17;3416:32;3219:243;;1399:2073;;3489:6;3482:13;;;;476:3026;;;;:::o;9302:361:2:-;9378:1;9362:18;;:4;:18;;;9358:71;;9403:15;;;;;;;;;;;;;;9358:71;9439:10;9452:6;:12;9459:4;9452:12;;;;;;;;;;;;;;;9487:1;9465:6;:12;9472:4;9465:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;9452:37;;;;;;;;:::i;:::-;;;;;;;;;;9439:50;;9499:6;:12;9506:4;9499:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9534:11;:15;9546:2;9534:15;;;;;;;;;;;9527:22;;;9566:8;:12;9575:2;9566:12;;;;;;;;;;;;9559:19;;;;;;;;;;;9595:11;:15;9607:2;9595:15;;;;;;;;;;;;9588:22;;;;;;;;;;;9653:2;9649:1;9626:30;;9635:4;9626:30;;;;;;;;;;;;9348:315;9302:361;:::o;8842:454::-;8914:1;8900:16;;:2;:16;;;8896:72;;8939:18;;;;;;;;;;;;;;8896:72;9002:6;;:8;;;;;;;;;;;;;9031:10;9044:6;;9031:19;;9089:1;9065:26;;:8;:12;9074:2;9065:12;;;;;;;;;;;;;;;;;;;;;:26;;;9061:79;;9114:15;;;;;;;;;;;;;;9061:79;9165:2;9150:8;:12;9159:2;9150:12;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;9177:6;:10;9184:2;9177:10;;;;;;;;;;;;;;;9193:2;9177:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:1;9224:6;:10;9231:2;9224:10;;;;;;;;;;;;;;;:17;;;;:21;;;;:::i;:::-;9206:11;:15;9218:2;9206:15;;;;;;;;;;;:39;;;;9286:2;9282;9261:28;;9278:1;9261:28;;;;;;;;;;;;8886:410;8842:454;:::o;2905:187:3:-;2978:16;2997:6;;;;;;;;;;;2978:25;;3022:8;3013:6;;:17;;;;;;;;;;;;;;;;;;3076:8;3045:40;;3066:8;3045:40;;;;;;;;;;;;2968:124;2905:187;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:118::-;2688:24;2706:5;2688:24;:::i;:::-;2683:3;2676:37;2601:118;;:::o;2725:222::-;2818:4;2856:2;2845:9;2841:18;2833:26;;2869:71;2937:1;2926:9;2922:17;2913:6;2869:71;:::i;:::-;2725:222;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:329::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:117::-;6719:1;6716;6709:12;6733:117;6842:1;6839;6832:12;6856:117;6965:1;6962;6955:12;6992:552;7049:8;7059:6;7109:3;7102:4;7094:6;7090:17;7086:27;7076:122;;7117:79;;:::i;:::-;7076:122;7230:6;7217:20;7207:30;;7260:18;7252:6;7249:30;7246:117;;;7282:79;;:::i;:::-;7246:117;7396:4;7388:6;7384:17;7372:29;;7450:3;7442:4;7434:6;7430:17;7420:8;7416:32;7413:41;7410:128;;;7457:79;;:::i;:::-;7410:128;6992:552;;;;;:::o;7550:963::-;7647:6;7655;7663;7671;7679;7728:3;7716:9;7707:7;7703:23;7699:33;7696:120;;;7735:79;;:::i;:::-;7696:120;7855:1;7880:53;7925:7;7916:6;7905:9;7901:22;7880:53;:::i;:::-;7870:63;;7826:117;7982:2;8008:53;8053:7;8044:6;8033:9;8029:22;8008:53;:::i;:::-;7998:63;;7953:118;8110:2;8136:53;8181:7;8172:6;8161:9;8157:22;8136:53;:::i;:::-;8126:63;;8081:118;8266:2;8255:9;8251:18;8238:32;8297:18;8289:6;8286:30;8283:117;;;8319:79;;:::i;:::-;8283:117;8432:64;8488:7;8479:6;8468:9;8464:22;8432:64;:::i;:::-;8414:82;;;;8209:297;7550:963;;;;;;;;:::o;8519:474::-;8587:6;8595;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8897:2;8923:53;8968:7;8959:6;8948:9;8944:22;8923:53;:::i;:::-;8913:63;;8868:118;8519:474;;;;;:::o;8999:180::-;9047:77;9044:1;9037:88;9144:4;9141:1;9134:15;9168:4;9165:1;9158:15;9185:320;9229:6;9266:1;9260:4;9256:12;9246:22;;9313:1;9307:4;9303:12;9334:18;9324:81;;9390:4;9382:6;9378:17;9368:27;;9324:81;9452:2;9444:6;9441:14;9421:18;9418:38;9415:84;;9471:18;;:::i;:::-;9415:84;9236:269;9185:320;;;:::o;9511:180::-;9559:77;9556:1;9549:88;9656:4;9653:1;9646:15;9680:4;9677:1;9670:15;9697:194;9737:4;9757:20;9775:1;9757:20;:::i;:::-;9752:25;;9791:20;9809:1;9791:20;:::i;:::-;9786:25;;9835:1;9832;9828:9;9820:17;;9859:1;9853:4;9850:11;9847:37;;;9864:18;;:::i;:::-;9847:37;9697:194;;;;:::o;9897:180::-;9945:77;9942:1;9935:88;10042:4;10039:1;10032:15;10066:4;10063:1;10056:15;10083:180;10131:77;10128:1;10121:88;10228:4;10225:1;10218:15;10252:4;10249:1;10242:15;10269:168;10352:11;10386:6;10381:3;10374:19;10426:4;10421:3;10417:14;10402:29;;10269:168;;;;:::o;10443:114::-;;:::o;10563:362::-;10704:3;10725:65;10788:1;10783:3;10725:65;:::i;:::-;10718:72;;10799:93;10888:3;10799:93;:::i;:::-;10917:1;10912:3;10908:11;10901:18;;10563:362;;;:::o;10931:748::-;11180:4;11218:3;11207:9;11203:19;11195:27;;11232:71;11300:1;11289:9;11285:17;11276:6;11232:71;:::i;:::-;11313:72;11381:2;11370:9;11366:18;11357:6;11313:72;:::i;:::-;11395;11463:2;11452:9;11448:18;11439:6;11395:72;:::i;:::-;11514:9;11508:4;11504:20;11499:2;11488:9;11484:18;11477:48;11542:130;11667:4;11542:130;:::i;:::-;11534:138;;10931:748;;;;;;:::o;11685:149::-;11721:7;11761:66;11754:5;11750:78;11739:89;;11685:149;;;:::o;11840:120::-;11912:23;11929:5;11912:23;:::i;:::-;11905:5;11902:34;11892:62;;11950:1;11947;11940:12;11892:62;11840:120;:::o;11966:141::-;12022:5;12053:6;12047:13;12038:22;;12069:32;12095:5;12069:32;:::i;:::-;11966:141;;;;:::o;12113:349::-;12182:6;12231:2;12219:9;12210:7;12206:23;12202:32;12199:119;;;12237:79;;:::i;:::-;12199:119;12357:1;12382:63;12437:7;12428:6;12417:9;12413:22;12382:63;:::i;:::-;12372:73;;12328:127;12113:349;;;;:::o;12468:148::-;12570:11;12607:3;12592:18;;12468:148;;;;:::o;12622:157::-;12762:9;12758:1;12750:6;12746:14;12739:33;12622:157;:::o;12785:400::-;12945:3;12966:84;13048:1;13043:3;12966:84;:::i;:::-;12959:91;;13059:93;13148:3;13059:93;:::i;:::-;13177:1;13172:3;13168:11;13161:18;;12785:400;;;:::o;13191:390::-;13297:3;13325:39;13358:5;13325:39;:::i;:::-;13380:89;13462:6;13457:3;13380:89;:::i;:::-;13373:96;;13478:65;13536:6;13531:3;13524:4;13517:5;13513:16;13478:65;:::i;:::-;13568:6;13563:3;13559:16;13552:23;;13301:280;13191:390;;;;:::o;13587:541::-;13820:3;13842:148;13986:3;13842:148;:::i;:::-;13835:155;;14007:95;14098:3;14089:6;14007:95;:::i;:::-;14000:102;;14119:3;14112:10;;13587:541;;;;:::o;14134:180::-;14182:77;14179:1;14172:88;14279:4;14276:1;14269:15;14303:4;14300:1;14293:15;14320:176;14352:1;14369:20;14387:1;14369:20;:::i;:::-;14364:25;;14403:20;14421:1;14403:20;:::i;:::-;14398:25;;14442:1;14432:35;;14447:18;;:::i;:::-;14432:35;14488:1;14485;14481:9;14476:14;;14320:176;;;;:::o;14502:157::-;14642:9;14638:1;14630:6;14626:14;14619:33;14502:157;:::o;14665:400::-;14825:3;14846:84;14928:1;14923:3;14846:84;:::i;:::-;14839:91;;14939:93;15028:3;14939:93;:::i;:::-;15057:1;15052:3;15048:11;15041:18;;14665:400;;;:::o;15071:541::-;15304:3;15326:148;15470:3;15326:148;:::i;:::-;15319:155;;15491:95;15582:3;15573:6;15491:95;:::i;:::-;15484:102;;15603:3;15596:10;;15071:541;;;;:::o;15618:158::-;15758:10;15754:1;15746:6;15742:14;15735:34;15618:158;:::o;15782:400::-;15942:3;15963:84;16045:1;16040:3;15963:84;:::i;:::-;15956:91;;16056:93;16145:3;16056:93;:::i;:::-;16174:1;16169:3;16165:11;16158:18;;15782:400;;;:::o;16188:541::-;16421:3;16443:148;16587:3;16443:148;:::i;:::-;16436:155;;16608:95;16699:3;16690:6;16608:95;:::i;:::-;16601:102;;16720:3;16713:10;;16188:541;;;;:::o;16735:146::-;16832:6;16827:3;16822;16809:30;16873:1;16864:6;16859:3;16855:16;16848:27;16735:146;;;:::o;16909:314::-;17005:3;17026:70;17089:6;17084:3;17026:70;:::i;:::-;17019:77;;17106:56;17155:6;17150:3;17143:5;17106:56;:::i;:::-;17187:29;17209:6;17187:29;:::i;:::-;17182:3;17178:39;17171:46;;16909:314;;;;;:::o;17229:660::-;17434:4;17472:3;17461:9;17457:19;17449:27;;17486:71;17554:1;17543:9;17539:17;17530:6;17486:71;:::i;:::-;17567:72;17635:2;17624:9;17620:18;17611:6;17567:72;:::i;:::-;17649;17717:2;17706:9;17702:18;17693:6;17649:72;:::i;:::-;17768:9;17762:4;17758:20;17753:2;17742:9;17738:18;17731:48;17796:86;17877:4;17868:6;17860;17796:86;:::i;:::-;17788:94;;17229:660;;;;;;;;:::o;17895:517::-;18035:66;18031:1;18023:6;18019:14;18012:90;18136:66;18131:2;18123:6;18119:15;18112:91;18237:66;18232:2;18224:6;18220:15;18213:91;18338:66;18333:2;18325:6;18321:15;18314:91;17895:517;:::o;18418:402::-;18578:3;18599:85;18681:2;18676:3;18599:85;:::i;:::-;18592:92;;18693:93;18782:3;18693:93;:::i;:::-;18811:2;18806:3;18802:12;18795:19;;18418:402;;;:::o;18826:315::-;18966:66;18962:1;18954:6;18950:14;18943:90;19067:66;19062:2;19054:6;19050:15;19043:91;18826:315;:::o;19147:402::-;19307:3;19328:85;19410:2;19405:3;19328:85;:::i;:::-;19321:92;;19422:93;19511:3;19422:93;:::i;:::-;19540:2;19535:3;19531:12;19524:19;;19147:402;;;:::o;19555:214::-;19695:66;19691:1;19683:6;19679:14;19672:90;19555:214;:::o;19775:400::-;19935:3;19956:84;20038:1;20033:3;19956:84;:::i;:::-;19949:91;;20049:93;20138:3;20049:93;:::i;:::-;20167:1;20162:3;20158:11;20151:18;;19775:400;;;:::o;20181:315::-;20321:66;20317:1;20309:6;20305:14;20298:90;20422:66;20417:2;20409:6;20405:15;20398:91;20181:315;:::o;20502:402::-;20662:3;20683:85;20765:2;20760:3;20683:85;:::i;:::-;20676:92;;20777:93;20866:3;20777:93;:::i;:::-;20895:2;20890:3;20886:12;20879:19;;20502:402;;;:::o;20910:315::-;21050:66;21046:1;21038:6;21034:14;21027:90;21151:66;21146:2;21138:6;21134:15;21127:91;20910:315;:::o;21231:402::-;21391:3;21412:85;21494:2;21489:3;21412:85;:::i;:::-;21405:92;;21506:93;21595:3;21506:93;:::i;:::-;21624:2;21619:3;21615:12;21608:19;;21231:402;;;:::o;21639:315::-;21779:66;21775:1;21767:6;21763:14;21756:90;21880:66;21875:2;21867:6;21863:15;21856:91;21639:315;:::o;21960:402::-;22120:3;22141:85;22223:2;22218:3;22141:85;:::i;:::-;22134:92;;22235:93;22324:3;22235:93;:::i;:::-;22353:2;22348:3;22344:12;22337:19;;21960:402;;;:::o;22368:315::-;22508:66;22504:1;22496:6;22492:14;22485:90;22609:66;22604:2;22596:6;22592:15;22585:91;22368:315;:::o;22689:402::-;22849:3;22870:85;22952:2;22947:3;22870:85;:::i;:::-;22863:92;;22964:93;23053:3;22964:93;:::i;:::-;23082:2;23077:3;23073:12;23066:19;;22689:402;;;:::o;23097:315::-;23237:66;23233:1;23225:6;23221:14;23214:90;23338:66;23333:2;23325:6;23321:15;23314:91;23097:315;:::o;23418:402::-;23578:3;23599:85;23681:2;23676:3;23599:85;:::i;:::-;23592:92;;23693:93;23782:3;23693:93;:::i;:::-;23811:2;23806:3;23802:12;23795:19;;23418:402;;;:::o;23826:315::-;23966:66;23962:1;23954:6;23950:14;23943:90;24067:66;24062:2;24054:6;24050:15;24043:91;23826:315;:::o;24147:402::-;24307:3;24328:85;24410:2;24405:3;24328:85;:::i;:::-;24321:92;;24422:93;24511:3;24422:93;:::i;:::-;24540:2;24535:3;24531:12;24524:19;;24147:402;;;:::o;24555:315::-;24695:66;24691:1;24683:6;24679:14;24672:90;24796:66;24791:2;24783:6;24779:15;24772:91;24555:315;:::o;24876:402::-;25036:3;25057:85;25139:2;25134:3;25057:85;:::i;:::-;25050:92;;25151:93;25240:3;25151:93;:::i;:::-;25269:2;25264:3;25260:12;25253:19;;24876:402;;;:::o;25284:315::-;25424:66;25420:1;25412:6;25408:14;25401:90;25525:66;25520:2;25512:6;25508:15;25501:91;25284:315;:::o;25605:402::-;25765:3;25786:85;25868:2;25863:3;25786:85;:::i;:::-;25779:92;;25880:93;25969:3;25880:93;:::i;:::-;25998:2;25993:3;25989:12;25982:19;;25605:402;;;:::o;26013:315::-;26153:66;26149:1;26141:6;26137:14;26130:90;26254:66;26249:2;26241:6;26237:15;26230:91;26013:315;:::o;26334:402::-;26494:3;26515:85;26597:2;26592:3;26515:85;:::i;:::-;26508:92;;26609:93;26698:3;26609:93;:::i;:::-;26727:2;26722:3;26718:12;26711:19;;26334:402;;;:::o;26742:315::-;26882:66;26878:1;26870:6;26866:14;26859:90;26983:66;26978:2;26970:6;26966:15;26959:91;26742:315;:::o;27063:402::-;27223:3;27244:85;27326:2;27321:3;27244:85;:::i;:::-;27237:92;;27338:93;27427:3;27338:93;:::i;:::-;27456:2;27451:3;27447:12;27440:19;;27063:402;;;:::o;27471:315::-;27611:66;27607:1;27599:6;27595:14;27588:90;27712:66;27707:2;27699:6;27695:15;27688:91;27471:315;:::o;27792:402::-;27952:3;27973:85;28055:2;28050:3;27973:85;:::i;:::-;27966:92;;28067:93;28156:3;28067:93;:::i;:::-;28185:2;28180:3;28176:12;28169:19;;27792:402;;;:::o;28200:315::-;28340:66;28336:1;28328:6;28324:14;28317:90;28441:66;28436:2;28428:6;28424:15;28417:91;28200:315;:::o;28521:402::-;28681:3;28702:85;28784:2;28779:3;28702:85;:::i;:::-;28695:92;;28796:93;28885:3;28796:93;:::i;:::-;28914:2;28909:3;28905:12;28898:19;;28521:402;;;:::o;28929:315::-;29069:66;29065:1;29057:6;29053:14;29046:90;29170:66;29165:2;29157:6;29153:15;29146:91;28929:315;:::o;29250:402::-;29410:3;29431:85;29513:2;29508:3;29431:85;:::i;:::-;29424:92;;29525:93;29614:3;29525:93;:::i;:::-;29643:2;29638:3;29634:12;29627:19;;29250:402;;;:::o;29658:156::-;29798:8;29794:1;29786:6;29782:14;29775:32;29658:156;:::o;29820:400::-;29980:3;30001:84;30083:1;30078:3;30001:84;:::i;:::-;29994:91;;30094:93;30183:3;30094:93;:::i;:::-;30212:1;30207:3;30203:11;30196:18;;29820:400;;;:::o;30226:8631::-;33416:3;33438:148;33582:3;33438:148;:::i;:::-;33431:155;;33603:148;33747:3;33603:148;:::i;:::-;33596:155;;33768:95;33859:3;33850:6;33768:95;:::i;:::-;33761:102;;33880:148;34024:3;33880:148;:::i;:::-;33873:155;;34045:148;34189:3;34045:148;:::i;:::-;34038:155;;34210:95;34301:3;34292:6;34210:95;:::i;:::-;34203:102;;34322:148;34466:3;34322:148;:::i;:::-;34315:155;;34487:148;34631:3;34487:148;:::i;:::-;34480:155;;34652:95;34743:3;34734:6;34652:95;:::i;:::-;34645:102;;34764:148;34908:3;34764:148;:::i;:::-;34757:155;;34929:148;35073:3;34929:148;:::i;:::-;34922:155;;35094:95;35185:3;35176:6;35094:95;:::i;:::-;35087:102;;35206:148;35350:3;35206:148;:::i;:::-;35199:155;;35371:148;35515:3;35371:148;:::i;:::-;35364:155;;35536:148;35680:3;35536:148;:::i;:::-;35529:155;;35701:148;35845:3;35701:148;:::i;:::-;35694:155;;35866:148;36010:3;35866:148;:::i;:::-;35859:155;;36031:148;36175:3;36031:148;:::i;:::-;36024:155;;36196:95;36287:3;36278:6;36196:95;:::i;:::-;36189:102;;36308:148;36452:3;36308:148;:::i;:::-;36301:155;;36473:148;36617:3;36473:148;:::i;:::-;36466:155;;36638:95;36729:3;36720:6;36638:95;:::i;:::-;36631:102;;36750:148;36894:3;36750:148;:::i;:::-;36743:155;;36915:148;37059:3;36915:148;:::i;:::-;36908:155;;37080:95;37171:3;37162:6;37080:95;:::i;:::-;37073:102;;37192:148;37336:3;37192:148;:::i;:::-;37185:155;;37357:148;37501:3;37357:148;:::i;:::-;37350:155;;37522:95;37613:3;37604:6;37522:95;:::i;:::-;37515:102;;37634:148;37778:3;37634:148;:::i;:::-;37627:155;;37799:148;37943:3;37799:148;:::i;:::-;37792:155;;37964:95;38055:3;38046:6;37964:95;:::i;:::-;37957:102;;38076:148;38220:3;38076:148;:::i;:::-;38069:155;;38241:148;38385:3;38241:148;:::i;:::-;38234:155;;38406:95;38497:3;38488:6;38406:95;:::i;:::-;38399:102;;38518:148;38662:3;38518:148;:::i;:::-;38511:155;;38683:148;38827:3;38683:148;:::i;:::-;38676:155;;38848:3;38841:10;;30226:8631;;;;;;;;;;;;;:::o;38863:214::-;39003:66;38999:1;38991:6;38987:14;38980:90;38863:214;:::o;39083:402::-;39243:3;39264:85;39346:2;39341:3;39264:85;:::i;:::-;39257:92;;39358:93;39447:3;39358:93;:::i;:::-;39476:2;39471:3;39467:12;39460:19;;39083:402;;;:::o;39491:369::-;39631:66;39627:1;39619:6;39615:14;39608:90;39732:66;39727:2;39719:6;39715:15;39708:91;39833:19;39828:2;39820:6;39816:15;39809:44;39491:369;:::o;39866:402::-;40026:3;40047:85;40129:2;40124:3;40047:85;:::i;:::-;40040:92;;40141:93;40230:3;40141:93;:::i;:::-;40259:2;40254:3;40250:12;40243:19;;39866:402;;;:::o;40274:214::-;40414:66;40410:1;40402:6;40398:14;40391:90;40274:214;:::o;40494:400::-;40654:3;40675:84;40757:1;40752:3;40675:84;:::i;:::-;40668:91;;40768:93;40857:3;40768:93;:::i;:::-;40886:1;40881:3;40877:11;40870:18;;40494:400;;;:::o;40900:1233::-;41383:3;41405:148;41549:3;41405:148;:::i;:::-;41398:155;;41570:95;41661:3;41652:6;41570:95;:::i;:::-;41563:102;;41682:148;41826:3;41682:148;:::i;:::-;41675:155;;41847:95;41938:3;41929:6;41847:95;:::i;:::-;41840:102;;41959:148;42103:3;41959:148;:::i;:::-;41952:155;;42124:3;42117:10;;40900:1233;;;;;:::o;42139:179::-;42279:31;42275:1;42267:6;42263:14;42256:55;42139:179;:::o;42324:402::-;42484:3;42505:85;42587:2;42582:3;42505:85;:::i;:::-;42498:92;;42599:93;42688:3;42599:93;:::i;:::-;42717:2;42712:3;42708:12;42701:19;;42324:402;;;:::o;42732:541::-;42965:3;42987:148;43131:3;42987:148;:::i;:::-;42980:155;;43152:95;43243:3;43234:6;43152:95;:::i;:::-;43145:102;;43264:3;43257:10;;42732:541;;;;:::o;43279:102::-;43321:8;43368:5;43365:1;43361:13;43340:34;;43279:102;;;:::o;43387:848::-;43448:5;43455:4;43479:6;43470:15;;43503:5;43494:14;;43517:712;43538:1;43528:8;43525:15;43517:712;;;43633:4;43628:3;43624:14;43618:4;43615:24;43612:50;;;43642:18;;:::i;:::-;43612:50;43692:1;43682:8;43678:16;43675:451;;;44107:4;44100:5;44096:16;44087:25;;43675:451;44157:4;44151;44147:15;44139:23;;44187:32;44210:8;44187:32;:::i;:::-;44175:44;;43517:712;;;43387:848;;;;;;;:::o;44241:1073::-;44295:5;44486:8;44476:40;;44507:1;44498:10;;44509:5;;44476:40;44535:4;44525:36;;44552:1;44543:10;;44554:5;;44525:36;44621:4;44669:1;44664:27;;;;44705:1;44700:191;;;;44614:277;;44664:27;44682:1;44673:10;;44684:5;;;44700:191;44745:3;44735:8;44732:17;44729:43;;;44752:18;;:::i;:::-;44729:43;44801:8;44798:1;44794:16;44785:25;;44836:3;44829:5;44826:14;44823:40;;;44843:18;;:::i;:::-;44823:40;44876:5;;;44614:277;;45000:2;44990:8;44987:16;44981:3;44975:4;44972:13;44968:36;44950:2;44940:8;44937:16;44932:2;44926:4;44923:12;44919:35;44903:111;44900:246;;;45056:8;45050:4;45046:19;45037:28;;45091:3;45084:5;45081:14;45078:40;;;45098:18;;:::i;:::-;45078:40;45131:5;;44900:246;45171:42;45209:3;45199:8;45193:4;45190:1;45171:42;:::i;:::-;45156:57;;;;45245:4;45240:3;45236:14;45229:5;45226:25;45223:51;;;45254:18;;:::i;:::-;45223:51;45303:4;45296:5;45292:16;45283:25;;44241:1073;;;;;;:::o;45320:281::-;45378:5;45402:23;45420:4;45402:23;:::i;:::-;45394:31;;45446:25;45462:8;45446:25;:::i;:::-;45434:37;;45490:104;45527:66;45517:8;45511:4;45490:104;:::i;:::-;45481:113;;45320:281;;;;:::o;45607:185::-;45647:1;45664:20;45682:1;45664:20;:::i;:::-;45659:25;;45698:20;45716:1;45698:20;:::i;:::-;45693:25;;45737:1;45727:35;;45742:18;;:::i;:::-;45727:35;45784:1;45781;45777:9;45772:14;;45607:185;;;;:::o;45798:233::-;45837:3;45860:24;45878:5;45860:24;:::i;:::-;45851:33;;45906:66;45899:5;45896:77;45893:103;;45976:18;;:::i;:::-;45893:103;46023:1;46016:5;46012:13;46005:20;;45798:233;;;:::o;46037:180::-;46085:77;46082:1;46075:88;46182:4;46179:1;46172:15;46206:4;46203:1;46196:15;46223:191;46263:3;46282:20;46300:1;46282:20;:::i;:::-;46277:25;;46316:20;46334:1;46316:20;:::i;:::-;46311:25;;46359:1;46356;46352:9;46345:16;;46380:3;46377:1;46374:10;46371:36;;;46387:18;;:::i;:::-;46371:36;46223:191;;;;:::o;46420:275::-;46552:3;46574:95;46665:3;46656:6;46574:95;:::i;:::-;46567:102;;46686:3;46679:10;;46420:275;;;;:::o;46701:410::-;46741:7;46764:20;46782:1;46764:20;:::i;:::-;46759:25;;46798:20;46816:1;46798:20;:::i;:::-;46793:25;;46853:1;46850;46846:9;46875:30;46893:11;46875:30;:::i;:::-;46864:41;;47054:1;47045:7;47041:15;47038:1;47035:22;47015:1;47008:9;46988:83;46965:139;;47084:18;;:::i;:::-;46965:139;46749:362;46701:410;;;;:::o

Swarm Source

ipfs://b7c9579b6d015d912af6d38ed1a12c34ca1b8434e679a004b211eaa4d6d066ea

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.